diff --git a/src/fcs-fable/FSStrings.fs b/src/fcs-fable/FSStrings.fs index 67473ea5be..42257eecac 100644 --- a/src/fcs-fable/FSStrings.fs +++ b/src/fcs-fable/FSStrings.fs @@ -767,6 +767,12 @@ let resources = ( "OverrideDoesntOverride4", "The member '{0}' is specialized with 'unit' but 'unit' can't be used as return type of an abstract method parameterized on return type." ); + ( "OverrideShouldBeStatic", + " Static member is expected." + ); + ( "OverrideShouldBeInstance", + " Non-static member is expected." + ); ( "UnionCaseWrongArguments", "This constructor is applied to {0} argument(s) but expects {1}" ); diff --git a/src/fcs-fable/System.Collections.fs b/src/fcs-fable/System.Collections.fs index b9776db3af..c9cb4b270a 100644 --- a/src/fcs-fable/System.Collections.fs +++ b/src/fcs-fable/System.Collections.fs @@ -34,6 +34,7 @@ module Immutable = type ImmutableArray<'T> = static member CreateBuilder() = ResizeArray<'T>() + [] type ImmutableHashSet<'T>(values: 'T seq) = let xs = HashSet<'T>(values) @@ -62,13 +63,21 @@ module Immutable = member _.GetEnumerator(): IEnumerator<'T> = xs.GetEnumerator() - type ImmutableDictionary<'Key, 'Value when 'Key: equality>(pairs: KeyValuePair<'Key, 'Value> seq) = - let xs = Dictionary<'Key, 'Value>() - do for pair in pairs do xs.Add(pair.Key, pair.Value) + [] + type ImmutableDictionary<'Key, 'Value when 'Key: equality>(xs: Dictionary<'Key, 'Value>) = + static member Create(comparer: IEqualityComparer<'Key>) = + ImmutableDictionary<'Key, 'Value>(Dictionary(comparer)) - static member CreateRange(items) = ImmutableDictionary<'Key, 'Value>(items) - static member Empty = ImmutableDictionary<'Key, 'Value>(Array.empty) + static member CreateRange(items: IEnumerable>) = + let xs = Dictionary<'Key, 'Value>() + for pair in items do + xs.Add(pair.Key, pair.Value) + ImmutableDictionary<'Key, 'Value>(xs) + static member Empty = + ImmutableDictionary<'Key, 'Value>(Dictionary()) + + member _.IsEmpty = xs.Count = 0 member _.Item with get (key: 'Key): 'Value = xs[key] member _.ContainsKey (key: 'Key) = xs.ContainsKey(key) diff --git a/src/fcs-fable/TcImports_shim.fs b/src/fcs-fable/TcImports_shim.fs index 226695c7aa..b3eda77d9a 100644 --- a/src/fcs-fable/TcImports_shim.fs +++ b/src/fcs-fable/TcImports_shim.fs @@ -176,7 +176,7 @@ module TcImports = XmlDocumentationInfo = None } - let optdata = lazy ( + let optdata = InterruptibleLazy(fun _ -> match memoize_opt.Apply ccuName with | None -> None | Some data -> diff --git a/src/fcs-fable/codegen/FSComp.fs b/src/fcs-fable/codegen/FSComp.fs index 6d25b7715b..de38348d7c 100644 --- a/src/fcs-fable/codegen/FSComp.fs +++ b/src/fcs-fable/codegen/FSComp.fs @@ -746,7 +746,7 @@ type internal SR private() = static member tcMeasureDeclarationsRequireStaticMembers() = (897, sprintf "Measure declarations may have only static members" ) static member tcStructsMayNotContainDoBindings() = (sprintf "Structs cannot contain 'do' bindings because the default constructor for structs would not execute these bindings" ) static member tcStructsMayNotContainLetBindings() = (901, sprintf "Structs cannot contain value definitions because the default constructor for structs will not execute these bindings. Consider adding additional arguments to the primary constructor for the type." ) - static member tcStaticLetBindingsRequireClassesWithImplicitConstructors() = (902, sprintf "For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'." ) + static member tcStaticLetBindingsRequireClassesWithImplicitConstructors() = (902, sprintf "For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher." ) static member tcMeasureDeclarationsRequireStaticMembersNotConstructors() = (904, sprintf "Measure declarations may have only static members: constructors are not available" ) static member tcMemberAndLocalClassBindingHaveSameName(a0 : System.String) = (905, sprintf "A member and a local class binding both have the name '%s'" a0) static member tcTypeAbbreviationsCannotHaveInterfaceDeclaration() = (906, sprintf "Type abbreviations cannot have interface declarations" ) @@ -835,7 +835,7 @@ type internal SR private() = static member ilStructLayoutAttributeCouldNotBeDecoded() = (992, sprintf "The StructLayout attribute could not be decoded" ) static member ilDefaultAugmentationAttributeCouldNotBeDecoded() = (993, sprintf "The DefaultAugmentation attribute could not be decoded" ) static member ilReflectedDefinitionsCannotUseSliceOperator() = (994, sprintf "Reflected definitions cannot contain uses of the prefix splice operator '%%'" ) - static member packageManagerUnknown(a0 : System.String, a1 : System.String, a2 : System.String) = (998, sprintf "Package manager key '%s' was not registered in %s. Currently registered: %s. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager" a0 a1 a2) + static member packageManagerUnknown(a0 : System.String, a1 : System.String, a2 : System.String) = (998, sprintf "Package manager key '%s' was not registered in %s. Currently registered: %s. You can provide extra path(s) by passing '--compilertool:' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager" a0 a1 a2) static member packageManagerError(a0 : System.String) = (999, sprintf "%s" a0) static member optsProblemWithCodepage(a0 : System.Int32, a1 : System.String) = (1000, sprintf "Problem with codepage '%d': %s" a0 a1) static member optsCopyright() = (sprintf "Copyright (c) Microsoft Corporation. All Rights Reserved." ) @@ -1571,6 +1571,10 @@ type internal SR private() = static member featureWhileBang() = (sprintf "'while!' expression" ) static member featureExtendedFixedBindings() = (sprintf "extended fixed bindings for byref and GetPinnableReference" ) static member featurePreferStringGetPinnableReference() = (sprintf "prefer String.GetPinnableReference in fixed bindings" ) + static member featurePreferExtensionMethodOverPlainProperty() = (sprintf "prefer extension method over plain property" ) + 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 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) @@ -1697,7 +1701,6 @@ type internal SR private() = static member parsMissingKeyword(a0 : System.String) = (3568, sprintf "Missing keyword '%s'" a0) static member chkNotTailRecursive(a0 : System.String) = (3569, sprintf "The member or function '%s' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way." a0) static member tcAmbiguousDiscardDotLambda() = (3570, sprintf "The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope." ) - static member parsUnderScoreDotLambdaNonAtomic() = (3571, sprintf " _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses." ) static member featureAccessorFunctionShorthand() = (sprintf "underscore dot shorthand for accessor only function" ) static member parsConstraintIntersectionSyntaxUsedWithNonFlexibleType() = (3572, sprintf "Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'." ) static member tcStaticBindingInExtrinsicAugmentation() = (3573, sprintf "Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead." ) @@ -1707,4 +1710,15 @@ type internal SR private() = static member chkCopyUpdateSyntaxInAnonRecords() = (3578, sprintf "This expression is an anonymous record, use {|...|} instead of {...}." ) static member alwaysUseTypedStringInterpolation() = (3579, sprintf "Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended." ) static member tcUnexpectedFunTypeInUnionCaseField() = (3580, sprintf "Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b)." ) + static member chkIndexedGetterAndSetterHaveSamePropertyType(a0 : System.String, a1 : System.String, a2 : System.String) = (3581, sprintf "An indexed property's getter and setter must have the same type. Property '%s' has getter of type '%s' but setter of type '%s'." a0 a1 a2) static member tcInfoIfFunctionShadowsUnionCase() = (3582, sprintf "This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses." ) + static member unnecessaryParentheses() = (3583, sprintf "Parentheses can be removed." ) + static member tcDotLambdaAtNotSupportedExpression() = (3584, sprintf "Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'." ) + static member tcStructUnionMultiCaseFieldsSameType() = (3585, sprintf "If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields." ) + static member featureReuseSameFieldsInStructUnions() = (sprintf "Share underlying fields in a [] discriminated union as long as they have same name and type" ) + static member tcNoStaticMemberFoundForOverride() = (3855, sprintf "No static abstract member was found that corresponds to this override" ) + static member tcNoStaticPropertyFoundForOverride() = (3859, sprintf "No static abstract property was found that corresponds to this override" ) + 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" ) diff --git a/src/fcs-fable/codegen/illex.fs b/src/fcs-fable/codegen/illex.fs index 003091d555..a288e441d0 100644 --- a/src/fcs-fable/codegen/illex.fs +++ b/src/fcs-fable/codegen/illex.fs @@ -77,16 +77,16 @@ let kwdInstrTable = (let t = HashMultiMap(1000, HashIdentity.Structural) List.iter t.Add (Lazy.force keywords); let addTable f l = List.iter (fun (x,i) -> t.Add (String.concat "." x,f i)) (Lazy.force l) - addTable (fun i -> INSTR_NONE i) NoArgInstrs; - addTable (fun i -> INSTR_I i) Int32Instrs; - addTable (fun i -> INSTR_I32_I32 i) Int32Int32Instrs; - addTable (fun i -> INSTR_I8 i) Int64Instrs; - addTable (fun i -> INSTR_R i) DoubleInstrs; - addTable (fun i -> INSTR_TYPE i) TypeInstrs; - addTable (fun i -> INSTR_INT_TYPE i) IntTypeInstrs; - addTable (fun i -> INSTR_VALUETYPE i) ValueTypeInstrs; - addTable (fun i -> INSTR_STRING i) StringInstrs; - addTable (fun i -> INSTR_TOK i) TokenInstrs; + addTable (INSTR_NONE) NoArgInstrs; + addTable (INSTR_I) Int32Instrs; + addTable (INSTR_I32_I32) Int32Int32Instrs; + addTable (INSTR_I8) Int64Instrs; + addTable (INSTR_R) DoubleInstrs; + addTable (INSTR_TYPE) TypeInstrs; + addTable (INSTR_INT_TYPE) IntTypeInstrs; + addTable (INSTR_VALUETYPE) ValueTypeInstrs; + addTable (INSTR_STRING) StringInstrs; + addTable (INSTR_TOK) TokenInstrs; t) let kwdOrInstr s = (Lazy.force kwdInstrTable).[s] (* words *) diff --git a/src/fcs-fable/codegen/lex.fs b/src/fcs-fable/codegen/lex.fs index 827bc97226..dddb25db9b 100644 --- a/src/fcs-fable/codegen/lex.fs +++ b/src/fcs-fable/codegen/lex.fs @@ -2817,71 +2817,72 @@ and token (args: LexArgs) (skip: bool) lexbuf = //# 2817 "lex.fs" ) | 114 -> ( -//# 1000 "src/Compiler/lex.fsl" - RESERVED -//# 2822 "lex.fs" +//# 1001 "src/Compiler/lex.fsl" + errorR (Error(FSComp.SR.lexInvalidIdentifier(), lexbuf.LexemeRange)) + RESERVED +//# 2823 "lex.fs" ) | 115 -> ( -//# 1002 "src/Compiler/lex.fsl" +//# 1004 "src/Compiler/lex.fsl" checkExprOp lexbuf; INFIX_STAR_STAR_OP(lexeme lexbuf) -//# 2827 "lex.fs" +//# 2828 "lex.fs" ) | 116 -> ( -//# 1004 "src/Compiler/lex.fsl" +//# 1006 "src/Compiler/lex.fsl" checkExprOp lexbuf; INFIX_STAR_DIV_MOD_OP(lexeme lexbuf) -//# 2832 "lex.fs" +//# 2833 "lex.fs" ) | 117 -> ( -//# 1006 "src/Compiler/lex.fsl" +//# 1008 "src/Compiler/lex.fsl" checkExprOp lexbuf; PLUS_MINUS_OP(lexeme lexbuf) -//# 2837 "lex.fs" +//# 2838 "lex.fs" ) | 118 -> ( -//# 1008 "src/Compiler/lex.fsl" +//# 1010 "src/Compiler/lex.fsl" checkExprOp lexbuf; INFIX_AT_HAT_OP(lexeme lexbuf) -//# 2842 "lex.fs" +//# 2843 "lex.fs" ) | 119 -> ( -//# 1010 "src/Compiler/lex.fsl" +//# 1012 "src/Compiler/lex.fsl" checkExprOp lexbuf; INFIX_COMPARE_OP(lexeme lexbuf) -//# 2847 "lex.fs" +//# 2848 "lex.fs" ) | 120 -> ( -//# 1012 "src/Compiler/lex.fsl" +//# 1014 "src/Compiler/lex.fsl" checkExprGreaterColonOp lexbuf; INFIX_COMPARE_OP(lexeme lexbuf) -//# 2852 "lex.fs" +//# 2853 "lex.fs" ) | 121 -> ( -//# 1014 "src/Compiler/lex.fsl" +//# 1016 "src/Compiler/lex.fsl" checkExprOp lexbuf; INFIX_AMP_OP(lexeme lexbuf) -//# 2857 "lex.fs" +//# 2858 "lex.fs" ) | 122 -> ( -//# 1016 "src/Compiler/lex.fsl" +//# 1018 "src/Compiler/lex.fsl" checkExprOp lexbuf; INFIX_BAR_OP(lexeme lexbuf) -//# 2862 "lex.fs" +//# 2863 "lex.fs" ) | 123 -> ( -//# 1018 "src/Compiler/lex.fsl" +//# 1020 "src/Compiler/lex.fsl" checkExprOp lexbuf; PREFIX_OP(lexeme lexbuf) -//# 2867 "lex.fs" +//# 2868 "lex.fs" ) | 124 -> ( -//# 1022 "src/Compiler/lex.fsl" +//# 1024 "src/Compiler/lex.fsl" FUNKY_OPERATOR_NAME(lexeme lexbuf) -//# 2872 "lex.fs" +//# 2873 "lex.fs" ) | 125 -> ( -//# 1025 "src/Compiler/lex.fsl" +//# 1027 "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 -//# 2881 "lex.fs" +//# 2882 "lex.fs" ) | 126 -> ( -//# 1033 "src/Compiler/lex.fsl" +//# 1035 "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)) @@ -2890,10 +2891,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 -//# 2893 "lex.fs" +//# 2894 "lex.fs" ) | 127 -> ( -//# 1043 "src/Compiler/lex.fsl" +//# 1045 "src/Compiler/lex.fsl" args.indentationSyntaxStatus.Status <- false if lexbuf.SupportsFeature LanguageFeature.MLCompatRevisions then mlCompatError (FSComp.SR.mlCompatLightOffNoLongerSupported()) lexbuf.LexemeRange @@ -2901,10 +2902,10 @@ 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 -//# 2904 "lex.fs" +//# 2905 "lex.fs" ) | 128 -> ( -//# 1052 "src/Compiler/lex.fsl" +//# 1054 "src/Compiler/lex.fsl" let m = lexbuf.LexemeRange let lookup id = List.contains id args.conditionalDefines let lexed = lexeme lexbuf @@ -2923,10 +2924,10 @@ and token (args: LexArgs) (skip: bool) lexbuf = cont, f let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashIfMustBeFirst()) (HASH_IF(m,lexed,cont)) if not skip then tok else f lexbuf -//# 2926 "lex.fs" +//# 2927 "lex.fs" ) | 129 -> ( -//# 1074 "src/Compiler/lex.fsl" +//# 1076 "src/Compiler/lex.fsl" let lexed = (lexeme lexbuf) match args.ifdefStack with | [] -> LEX_FAILURE (FSComp.SR.lexHashElseNoMatchingIf()) @@ -2938,10 +2939,10 @@ and token (args: LexArgs) (skip: bool) lexbuf = 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 -//# 2941 "lex.fs" +//# 2942 "lex.fs" ) | 130 -> ( -//# 1087 "src/Compiler/lex.fsl" +//# 1089 "src/Compiler/lex.fsl" let lexed = (lexeme lexbuf) let m = lexbuf.LexemeRange match args.ifdefStack with @@ -2952,38 +2953,38 @@ and token (args: LexArgs) (skip: bool) lexbuf = 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 -//# 2955 "lex.fs" +//# 2956 "lex.fs" ) | 131 -> ( -//# 1099 "src/Compiler/lex.fsl" +//# 1101 "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 -//# 2962 "lex.fs" +//# 2963 "lex.fs" ) | 132 -> ( -//# 1107 "src/Compiler/lex.fsl" +//# 1109 "src/Compiler/lex.fsl" let n = (lexeme lexbuf).IndexOf('#') lexbuf.StartPos <- lexbuf.StartPos.ShiftColumnBy(n) HASH_IDENT(lexemeTrimLeft lexbuf (n+1)) -//# 2969 "lex.fs" +//# 2970 "lex.fs" ) | 133 -> ( -//# 1114 "src/Compiler/lex.fsl" +//# 1116 "src/Compiler/lex.fsl" unexpectedChar lexbuf -//# 2974 "lex.fs" +//# 2975 "lex.fs" ) | 134 -> ( -//# 1117 "src/Compiler/lex.fsl" +//# 1119 "src/Compiler/lex.fsl" EOF (LexCont.Token(args.ifdefStack, args.stringNest)) -//# 2979 "lex.fs" +//# 2980 "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 -> ( -//# 1123 "src/Compiler/lex.fsl" +//# 1125 "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 @@ -2996,10 +2997,10 @@ and ifdefSkip (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf = 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 -//# 2999 "lex.fs" +//# 3000 "lex.fs" ) | 1 -> ( -//# 1138 "src/Compiler/lex.fsl" +//# 1140 "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 ...") @@ -3020,10 +3021,10 @@ and ifdefSkip (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf = 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 -//# 3023 "lex.fs" +//# 3024 "lex.fs" ) | 2 -> ( -//# 1161 "src/Compiler/lex.fsl" +//# 1163 "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 ...") @@ -3043,31 +3044,31 @@ and ifdefSkip (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf = 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 -//# 3046 "lex.fs" +//# 3047 "lex.fs" ) | 3 -> ( -//# 1183 "src/Compiler/lex.fsl" +//# 1185 "src/Compiler/lex.fsl" newline lexbuf; ifdefSkip n m args skip lexbuf -//# 3051 "lex.fs" +//# 3052 "lex.fs" ) | 4 -> ( -//# 1192 "src/Compiler/lex.fsl" +//# 1194 "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 -//# 3058 "lex.fs" +//# 3059 "lex.fs" ) | 5 -> ( -//# 1197 "src/Compiler/lex.fsl" +//# 1199 "src/Compiler/lex.fsl" EOF (LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m)) -//# 3063 "lex.fs" +//# 3064 "lex.fs" ) | _ -> failwith "ifdefSkip" // Rule endline and endline (cont: LexerEndlineContinuation) (args: LexArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(337,lexbuf) with | 0 -> ( -//# 1203 "src/Compiler/lex.fsl" +//# 1205 "src/Compiler/lex.fsl" newline lexbuf match cont with | LexerEndlineContinuation.Token -> @@ -3077,31 +3078,31 @@ and endline (cont: LexerEndlineContinuation) (args: LexArgs) (skip: bool) lexbuf if not skip then INACTIVECODE (LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m)) else ifdefSkip n m args skip lexbuf -//# 3080 "lex.fs" +//# 3081 "lex.fs" ) | 1 -> ( -//# 1215 "src/Compiler/lex.fsl" +//# 1217 "src/Compiler/lex.fsl" match cont with | LexerEndlineContinuation.Token -> EOF(LexCont.Token(args.ifdefStack, args.stringNest)) | LexerEndlineContinuation.Skip(n, m) -> EOF(LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m)) -//# 3090 "lex.fs" +//# 3091 "lex.fs" ) | 2 -> ( -//# 1225 "src/Compiler/lex.fsl" +//# 1227 "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 -//# 3097 "lex.fs" +//# 3098 "lex.fs" ) | _ -> failwith "endline" // Rule singleQuoteString and singleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(280,lexbuf) with | 0 -> ( -//# 1231 "src/Compiler/lex.fsl" +//# 1233 "src/Compiler/lex.fsl" let (_buf, _fin, m, kind, args) = sargs newline lexbuf let text = lexeme lexbuf @@ -3111,20 +3112,20 @@ 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 -//# 3114 "lex.fs" +//# 3115 "lex.fs" ) | 1 -> ( -//# 1242 "src/Compiler/lex.fsl" +//# 1244 "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 -//# 3124 "lex.fs" +//# 3125 "lex.fs" ) | 2 -> ( -//# 1250 "src/Compiler/lex.fsl" +//# 1252 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let s = lexeme lexbuf addByteChar buf (trigraph s.[1] s.[2] s.[3]) @@ -3132,30 +3133,30 @@ 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 -//# 3135 "lex.fs" +//# 3136 "lex.fs" ) | 3 -> ( -//# 1259 "src/Compiler/lex.fsl" +//# 1261 "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 -//# 3145 "lex.fs" +//# 3146 "lex.fs" ) | 4 -> ( -//# 1267 "src/Compiler/lex.fsl" +//# 1269 "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 -//# 3155 "lex.fs" +//# 3156 "lex.fs" ) | 5 -> ( -//# 1275 "src/Compiler/lex.fsl" +//# 1277 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let hexChars = lexemeTrimLeft lexbuf 2 let result() = @@ -3173,26 +3174,26 @@ and singleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf = addUnicodeChar buf (int hi) addUnicodeChar buf (int lo) result() -//# 3176 "lex.fs" +//# 3177 "lex.fs" ) | 6 -> ( -//# 1294 "src/Compiler/lex.fsl" +//# 1296 "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 -//# 3184 "lex.fs" +//# 3185 "lex.fs" ) | 7 -> ( -//# 1300 "src/Compiler/lex.fsl" +//# 1302 "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 -//# 3192 "lex.fs" +//# 3193 "lex.fs" ) | 8 -> ( -//# 1306 "src/Compiler/lex.fsl" +//# 1308 "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) @@ -3200,10 +3201,10 @@ 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 -//# 3203 "lex.fs" +//# 3204 "lex.fs" ) | 9 -> ( -//# 1315 "src/Compiler/lex.fsl" +//# 1317 "src/Compiler/lex.fsl" let (buf, fin, m, kind, args) = sargs if kind.IsInterpolated then // get a new range for where the fill starts @@ -3218,10 +3219,10 @@ and singleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf = else singleQuoteString sargs skip lexbuf -//# 3221 "lex.fs" +//# 3222 "lex.fs" ) | 10 -> ( -//# 1331 "src/Compiler/lex.fsl" +//# 1333 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let result() = if not skip then @@ -3233,10 +3234,10 @@ and singleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf = else addUnicodeString buf (lexeme lexbuf) (result()) -//# 3236 "lex.fs" +//# 3237 "lex.fs" ) | 11 -> ( -//# 1344 "src/Compiler/lex.fsl" +//# 1346 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) @@ -3244,86 +3245,86 @@ 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 -//# 3247 "lex.fs" +//# 3248 "lex.fs" ) | 12 -> ( -//# 1353 "src/Compiler/lex.fsl" +//# 1355 "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 -//# 3257 "lex.fs" +//# 3258 "lex.fs" ) | 13 -> ( -//# 1362 "src/Compiler/lex.fsl" +//# 1364 "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 -//# 3267 "lex.fs" +//# 3268 "lex.fs" ) | 14 -> ( -//# 1370 "src/Compiler/lex.fsl" +//# 1372 "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 -//# 3277 "lex.fs" +//# 3278 "lex.fs" ) | 15 -> ( -//# 1378 "src/Compiler/lex.fsl" +//# 1380 "src/Compiler/lex.fsl" let (_buf, _fin, m, kind, args) = sargs EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) -//# 3283 "lex.fs" +//# 3284 "lex.fs" ) | 16 -> ( -//# 1384 "src/Compiler/lex.fsl" +//# 1386 "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 -//# 3293 "lex.fs" +//# 3294 "lex.fs" ) | _ -> failwith "singleQuoteString" // Rule verbatimString and verbatimString (sargs: LexerStringArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(247,lexbuf) with | 0 -> ( -//# 1393 "src/Compiler/lex.fsl" +//# 1395 "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 -//# 3307 "lex.fs" +//# 3308 "lex.fs" ) | 1 -> ( -//# 1401 "src/Compiler/lex.fsl" +//# 1403 "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 -//# 3315 "lex.fs" +//# 3316 "lex.fs" ) | 2 -> ( -//# 1407 "src/Compiler/lex.fsl" +//# 1409 "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 -//# 3323 "lex.fs" +//# 3324 "lex.fs" ) | 3 -> ( -//# 1413 "src/Compiler/lex.fsl" +//# 1415 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) @@ -3331,10 +3332,10 @@ 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 -//# 3334 "lex.fs" +//# 3335 "lex.fs" ) | 4 -> ( -//# 1422 "src/Compiler/lex.fsl" +//# 1424 "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) @@ -3342,10 +3343,10 @@ 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 -//# 3345 "lex.fs" +//# 3346 "lex.fs" ) | 5 -> ( -//# 1431 "src/Compiler/lex.fsl" +//# 1433 "src/Compiler/lex.fsl" let (buf, fin, m, kind, args) = sargs if kind.IsInterpolated then // get a new range for where the fill starts @@ -3360,10 +3361,10 @@ and verbatimString (sargs: LexerStringArgs) (skip: bool) lexbuf = else verbatimString sargs skip lexbuf -//# 3363 "lex.fs" +//# 3364 "lex.fs" ) | 6 -> ( -//# 1447 "src/Compiler/lex.fsl" +//# 1449 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let result() = if not skip then @@ -3376,68 +3377,68 @@ and verbatimString (sargs: LexerStringArgs) (skip: bool) lexbuf = addUnicodeString buf (lexeme lexbuf) (result()) -//# 3379 "lex.fs" +//# 3380 "lex.fs" ) | 7 -> ( -//# 1461 "src/Compiler/lex.fsl" +//# 1463 "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 -//# 3389 "lex.fs" +//# 3390 "lex.fs" ) | 8 -> ( -//# 1470 "src/Compiler/lex.fsl" +//# 1472 "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 -//# 3399 "lex.fs" +//# 3400 "lex.fs" ) | 9 -> ( -//# 1478 "src/Compiler/lex.fsl" +//# 1480 "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 -//# 3409 "lex.fs" +//# 3410 "lex.fs" ) | 10 -> ( -//# 1486 "src/Compiler/lex.fsl" +//# 1488 "src/Compiler/lex.fsl" let (_buf, _fin, m, kind, args) = sargs EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) -//# 3415 "lex.fs" +//# 3416 "lex.fs" ) | 11 -> ( -//# 1491 "src/Compiler/lex.fsl" +//# 1493 "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 -//# 3425 "lex.fs" +//# 3426 "lex.fs" ) | _ -> failwith "verbatimString" // Rule tripleQuoteString and tripleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(214,lexbuf) with | 0 -> ( -//# 1500 "src/Compiler/lex.fsl" +//# 1502 "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 -//# 3437 "lex.fs" +//# 3438 "lex.fs" ) | 1 -> ( -//# 1506 "src/Compiler/lex.fsl" +//# 1508 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) @@ -3445,40 +3446,40 @@ 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 -//# 3448 "lex.fs" +//# 3449 "lex.fs" ) | 2 -> ( -//# 1516 "src/Compiler/lex.fsl" +//# 1518 "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 -//# 3458 "lex.fs" +//# 3459 "lex.fs" ) | 3 -> ( -//# 1525 "src/Compiler/lex.fsl" +//# 1527 "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 -//# 3468 "lex.fs" +//# 3469 "lex.fs" ) | 4 -> ( -//# 1533 "src/Compiler/lex.fsl" +//# 1535 "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 -//# 3478 "lex.fs" +//# 3479 "lex.fs" ) | 5 -> ( -//# 1541 "src/Compiler/lex.fsl" +//# 1543 "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) @@ -3486,10 +3487,10 @@ 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 -//# 3489 "lex.fs" +//# 3490 "lex.fs" ) | 6 -> ( -//# 1550 "src/Compiler/lex.fsl" +//# 1552 "src/Compiler/lex.fsl" let (buf, fin, m, kind, args) = sargs if kind.IsInterpolated then // get a new range for where the fill starts @@ -3504,10 +3505,10 @@ and tripleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf = else tripleQuoteString sargs skip lexbuf -//# 3507 "lex.fs" +//# 3508 "lex.fs" ) | 7 -> ( -//# 1566 "src/Compiler/lex.fsl" +//# 1568 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let result() = if not skip then @@ -3520,38 +3521,38 @@ and tripleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf = addUnicodeString buf (lexeme lexbuf) (result()) -//# 3523 "lex.fs" +//# 3524 "lex.fs" ) | 8 -> ( -//# 1580 "src/Compiler/lex.fsl" +//# 1582 "src/Compiler/lex.fsl" let (_buf, _fin, m, kind, args) = sargs EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) -//# 3529 "lex.fs" +//# 3530 "lex.fs" ) | 9 -> ( -//# 1585 "src/Compiler/lex.fsl" +//# 1587 "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 -//# 3539 "lex.fs" +//# 3540 "lex.fs" ) | _ -> failwith "tripleQuoteString" // Rule extendedInterpolatedString and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(178,lexbuf) with | 0 -> ( -//# 1594 "src/Compiler/lex.fsl" +//# 1596 "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 -//# 3551 "lex.fs" +//# 3552 "lex.fs" ) | 1 -> ( -//# 1600 "src/Compiler/lex.fsl" +//# 1602 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) @@ -3559,20 +3560,20 @@ and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) lexbuf = STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) else extendedInterpolatedString sargs skip lexbuf -//# 3562 "lex.fs" +//# 3563 "lex.fs" ) | 2 -> ( -//# 1613 "src/Compiler/lex.fsl" +//# 1615 "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 -//# 3572 "lex.fs" +//# 3573 "lex.fs" ) | 3 -> ( -//# 1621 "src/Compiler/lex.fsl" +//# 1623 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let numPercents = lexeme lexbuf |> String.length let result() = @@ -3601,10 +3602,10 @@ and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) lexbuf = let s = String.replicate percentsToEmit "%" addUnicodeString buf s result() -//# 3604 "lex.fs" +//# 3605 "lex.fs" ) | 4 -> ( -//# 1651 "src/Compiler/lex.fsl" +//# 1653 "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 $ @@ -3638,10 +3639,10 @@ and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) lexbuf = let cont = LexCont.Token(args.ifdefStack, args.stringNest) fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.TripleQuote) cont -//# 3641 "lex.fs" +//# 3642 "lex.fs" ) | 5 -> ( -//# 1686 "src/Compiler/lex.fsl" +//# 1688 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let numBraces = lexeme lexbuf |> String.length let result() = @@ -3655,30 +3656,30 @@ and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) lexbuf = else fail args lexbuf (FSComp.SR.lexUnmatchedRBracesInTripleQuote()) (result()) -//# 3658 "lex.fs" +//# 3659 "lex.fs" ) | 6 -> ( -//# 1701 "src/Compiler/lex.fsl" +//# 1703 "src/Compiler/lex.fsl" let (_buf, _fin, m, kind, args) = sargs EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) -//# 3664 "lex.fs" +//# 3665 "lex.fs" ) | 7 -> ( -//# 1706 "src/Compiler/lex.fsl" +//# 1708 "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 -//# 3674 "lex.fs" +//# 3675 "lex.fs" ) | _ -> failwith "extendedInterpolatedString" // Rule singleLineComment and singleLineComment (cargs: SingleLineCommentArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(165,lexbuf) with | 0 -> ( -//# 1716 "src/Compiler/lex.fsl" +//# 1718 "src/Compiler/lex.fsl" let buff,_n, mStart, mEnd, args = cargs trySaveXmlDoc lexbuf buff newline lexbuf @@ -3687,90 +3688,90 @@ and singleLineComment (cargs: SingleLineCommentArgs) (skip: bool) lexbuf = else if Option.isNone buff then LexbufCommentStore.SaveSingleLineComment(lexbuf, mStart, mEnd) token args skip lexbuf -//# 3690 "lex.fs" +//# 3691 "lex.fs" ) | 1 -> ( -//# 1726 "src/Compiler/lex.fsl" +//# 1728 "src/Compiler/lex.fsl" let buff, _n, mStart, mEnd, args = cargs trySaveXmlDoc lexbuf buff LexbufCommentStore.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)) -//# 3699 "lex.fs" +//# 3700 "lex.fs" ) | 2 -> ( -//# 1734 "src/Compiler/lex.fsl" +//# 1736 "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 -//# 3708 "lex.fs" +//# 3709 "lex.fs" ) | 3 -> ( -//# 1741 "src/Compiler/lex.fsl" +//# 1743 "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 -//# 3715 "lex.fs" +//# 3716 "lex.fs" ) | _ -> failwith "singleLineComment" // Rule comment and comment (cargs: BlockCommentArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(139,lexbuf) with | 0 -> ( -//# 1748 "src/Compiler/lex.fsl" +//# 1750 "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 -//# 3726 "lex.fs" +//# 3727 "lex.fs" ) | 1 -> ( -//# 1753 "src/Compiler/lex.fsl" +//# 1755 "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 -//# 3733 "lex.fs" +//# 3734 "lex.fs" ) | 2 -> ( -//# 1758 "src/Compiler/lex.fsl" +//# 1760 "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 -//# 3740 "lex.fs" +//# 3741 "lex.fs" ) | 3 -> ( -//# 1763 "src/Compiler/lex.fsl" +//# 1765 "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 -//# 3747 "lex.fs" +//# 3748 "lex.fs" ) | 4 -> ( -//# 1768 "src/Compiler/lex.fsl" +//# 1770 "src/Compiler/lex.fsl" let n, m, args = cargs LexbufLocalXmlDocStore.AddGrabPoint(lexbuf) if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment cargs skip lexbuf -//# 3755 "lex.fs" +//# 3756 "lex.fs" ) | 5 -> ( -//# 1774 "src/Compiler/lex.fsl" +//# 1776 "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 -//# 3762 "lex.fs" +//# 3763 "lex.fs" ) | 6 -> ( -//# 1779 "src/Compiler/lex.fsl" +//# 1781 "src/Compiler/lex.fsl" let n, m, args = cargs newline lexbuf if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment cargs skip lexbuf -//# 3770 "lex.fs" +//# 3771 "lex.fs" ) | 7 -> ( -//# 1784 "src/Compiler/lex.fsl" +//# 1786 "src/Compiler/lex.fsl" let n, m, args = cargs if n > 1 then @@ -3782,191 +3783,191 @@ and comment (cargs: BlockCommentArgs) (skip: bool) lexbuf = else LexbufCommentStore.SaveBlockComment(lexbuf, m, lexbuf.LexemeRange) token args skip lexbuf -//# 3785 "lex.fs" +//# 3786 "lex.fs" ) | 8 -> ( -//# 1798 "src/Compiler/lex.fsl" +//# 1800 "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 -//# 3792 "lex.fs" +//# 3793 "lex.fs" ) | 9 -> ( -//# 1803 "src/Compiler/lex.fsl" +//# 1805 "src/Compiler/lex.fsl" let n, m, args = cargs EOF (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) -//# 3798 "lex.fs" +//# 3799 "lex.fs" ) | 10 -> ( -//# 1807 "src/Compiler/lex.fsl" +//# 1809 "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 -//# 3805 "lex.fs" +//# 3806 "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 -> ( -//# 1814 "src/Compiler/lex.fsl" +//# 1816 "src/Compiler/lex.fsl" newline lexbuf if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m)) else stringInComment n m args skip lexbuf -//# 3816 "lex.fs" +//# 3817 "lex.fs" ) | 1 -> ( -//# 1827 "src/Compiler/lex.fsl" +//# 1829 "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 -//# 3822 "lex.fs" +//# 3823 "lex.fs" ) | 2 -> ( -//# 1832 "src/Compiler/lex.fsl" +//# 1834 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment (n, m, args) skip lexbuf -//# 3828 "lex.fs" +//# 3829 "lex.fs" ) | 3 -> ( -//# 1836 "src/Compiler/lex.fsl" +//# 1838 "src/Compiler/lex.fsl" newline lexbuf if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m)) else stringInComment n m args skip lexbuf -//# 3835 "lex.fs" +//# 3836 "lex.fs" ) | 4 -> ( -//# 1841 "src/Compiler/lex.fsl" +//# 1843 "src/Compiler/lex.fsl" EOF (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m)) -//# 3840 "lex.fs" +//# 3841 "lex.fs" ) | 5 -> ( -//# 1845 "src/Compiler/lex.fsl" +//# 1847 "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 -//# 3846 "lex.fs" +//# 3847 "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 -> ( -//# 1851 "src/Compiler/lex.fsl" +//# 1853 "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 -//# 3856 "lex.fs" +//# 3857 "lex.fs" ) | 1 -> ( -//# 1855 "src/Compiler/lex.fsl" +//# 1857 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment (n, m, args) skip lexbuf -//# 3862 "lex.fs" +//# 3863 "lex.fs" ) | 2 -> ( -//# 1862 "src/Compiler/lex.fsl" +//# 1864 "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 -//# 3868 "lex.fs" +//# 3869 "lex.fs" ) | 3 -> ( -//# 1866 "src/Compiler/lex.fsl" +//# 1868 "src/Compiler/lex.fsl" newline lexbuf if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m)) else verbatimStringInComment n m args skip lexbuf -//# 3875 "lex.fs" +//# 3876 "lex.fs" ) | 4 -> ( -//# 1871 "src/Compiler/lex.fsl" +//# 1873 "src/Compiler/lex.fsl" EOF (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m)) -//# 3880 "lex.fs" +//# 3881 "lex.fs" ) | 5 -> ( -//# 1875 "src/Compiler/lex.fsl" +//# 1877 "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 -//# 3886 "lex.fs" +//# 3887 "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 -> ( -//# 1881 "src/Compiler/lex.fsl" +//# 1883 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment (n, m, args) skip lexbuf -//# 3896 "lex.fs" +//# 3897 "lex.fs" ) | 1 -> ( -//# 1888 "src/Compiler/lex.fsl" +//# 1890 "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 -//# 3902 "lex.fs" +//# 3903 "lex.fs" ) | 2 -> ( -//# 1892 "src/Compiler/lex.fsl" +//# 1894 "src/Compiler/lex.fsl" newline lexbuf if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, n, m)) else tripleQuoteStringInComment n m args skip lexbuf -//# 3909 "lex.fs" +//# 3910 "lex.fs" ) | 3 -> ( -//# 1897 "src/Compiler/lex.fsl" +//# 1899 "src/Compiler/lex.fsl" EOF (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, n, m)) -//# 3914 "lex.fs" +//# 3915 "lex.fs" ) | 4 -> ( -//# 1901 "src/Compiler/lex.fsl" +//# 1903 "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 -//# 3920 "lex.fs" +//# 3921 "lex.fs" ) | _ -> failwith "tripleQuoteStringInComment" // Rule mlOnly and mlOnly (m: range) (args: LexArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(0,lexbuf) with | 0 -> ( -//# 1907 "src/Compiler/lex.fsl" +//# 1909 "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 -//# 3933 "lex.fs" +//# 3934 "lex.fs" ) | 1 -> ( -//# 1914 "src/Compiler/lex.fsl" +//# 1916 "src/Compiler/lex.fsl" newline lexbuf if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m)) else mlOnly m args skip lexbuf -//# 3940 "lex.fs" +//# 3941 "lex.fs" ) | 2 -> ( -//# 1919 "src/Compiler/lex.fsl" +//# 1921 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Token(args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 3946 "lex.fs" +//# 3947 "lex.fs" ) | 3 -> ( -//# 1923 "src/Compiler/lex.fsl" +//# 1925 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Token(args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 3952 "lex.fs" +//# 3953 "lex.fs" ) | 4 -> ( -//# 1927 "src/Compiler/lex.fsl" +//# 1929 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m)) else mlOnly m args skip lexbuf -//# 3958 "lex.fs" +//# 3959 "lex.fs" ) | 5 -> ( -//# 1931 "src/Compiler/lex.fsl" +//# 1933 "src/Compiler/lex.fsl" EOF (LexCont.MLOnly(args.ifdefStack, args.stringNest, m)) -//# 3963 "lex.fs" +//# 3964 "lex.fs" ) | 6 -> ( -//# 1935 "src/Compiler/lex.fsl" +//# 1937 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m)) else mlOnly m args skip lexbuf -//# 3969 "lex.fs" +//# 3970 "lex.fs" ) | _ -> failwith "mlOnly" diff --git a/src/fcs-fable/codegen/pars.fs b/src/fcs-fable/codegen/pars.fs index 316c6f049e..9d1485fbea 100644 --- a/src/fcs-fable/codegen/pars.fs +++ b/src/fcs-fable/codegen/pars.fs @@ -1508,40 +1508,40 @@ let prodIdxToNonTerminal (prodIdx:int) = | 301 -> NONTERM_braceFieldDeclList | 302 -> NONTERM_braceFieldDeclList | 303 -> NONTERM_braceFieldDeclList - | 304 -> NONTERM_anonRecdType + | 304 -> NONTERM_braceFieldDeclList | 305 -> NONTERM_anonRecdType - | 306 -> NONTERM_braceBarFieldDeclListCore + | 306 -> NONTERM_anonRecdType | 307 -> NONTERM_braceBarFieldDeclListCore | 308 -> NONTERM_braceBarFieldDeclListCore - | 309 -> NONTERM_classOrInterfaceOrStruct + | 309 -> NONTERM_braceBarFieldDeclListCore | 310 -> NONTERM_classOrInterfaceOrStruct | 311 -> NONTERM_classOrInterfaceOrStruct - | 312 -> NONTERM_interfaceMember + | 312 -> NONTERM_classOrInterfaceOrStruct | 313 -> NONTERM_interfaceMember - | 314 -> NONTERM_tyconNameAndTyparDecls + | 314 -> NONTERM_interfaceMember | 315 -> NONTERM_tyconNameAndTyparDecls | 316 -> NONTERM_tyconNameAndTyparDecls | 317 -> NONTERM_tyconNameAndTyparDecls - | 318 -> NONTERM_prefixTyparDecls + | 318 -> NONTERM_tyconNameAndTyparDecls | 319 -> NONTERM_prefixTyparDecls - | 320 -> NONTERM_typarDeclList + | 320 -> NONTERM_prefixTyparDecls | 321 -> NONTERM_typarDeclList - | 322 -> NONTERM_typarDecl + | 322 -> NONTERM_typarDeclList | 323 -> NONTERM_typarDecl - | 324 -> NONTERM_postfixTyparDecls - | 325 -> NONTERM_explicitValTyparDeclsCore + | 324 -> NONTERM_typarDecl + | 325 -> NONTERM_postfixTyparDecls | 326 -> NONTERM_explicitValTyparDeclsCore | 327 -> NONTERM_explicitValTyparDeclsCore - | 328 -> NONTERM_explicitValTyparDecls - | 329 -> NONTERM_opt_explicitValTyparDecls + | 328 -> NONTERM_explicitValTyparDeclsCore + | 329 -> NONTERM_explicitValTyparDecls | 330 -> NONTERM_opt_explicitValTyparDecls - | 331 -> NONTERM_opt_typeConstraints + | 331 -> NONTERM_opt_explicitValTyparDecls | 332 -> NONTERM_opt_typeConstraints - | 333 -> NONTERM_typeConstraints + | 333 -> NONTERM_opt_typeConstraints | 334 -> NONTERM_typeConstraints - | 335 -> NONTERM_intersectionConstraints + | 335 -> NONTERM_typeConstraints | 336 -> NONTERM_intersectionConstraints - | 337 -> NONTERM_typeConstraint + | 337 -> NONTERM_intersectionConstraints | 338 -> NONTERM_typeConstraint | 339 -> NONTERM_typeConstraint | 340 -> NONTERM_typeConstraint @@ -1552,15 +1552,15 @@ let prodIdxToNonTerminal (prodIdx:int) = | 345 -> NONTERM_typeConstraint | 346 -> NONTERM_typeConstraint | 347 -> NONTERM_typeConstraint - | 348 -> NONTERM_typeAlts + | 348 -> NONTERM_typeConstraint | 349 -> NONTERM_typeAlts - | 350 -> NONTERM_unionTypeRepr + | 350 -> NONTERM_typeAlts | 351 -> NONTERM_unionTypeRepr | 352 -> NONTERM_unionTypeRepr - | 353 -> NONTERM_barAndgrabXmlDoc - | 354 -> NONTERM_attrUnionCaseDecls + | 353 -> NONTERM_unionTypeRepr + | 354 -> NONTERM_barAndgrabXmlDoc | 355 -> NONTERM_attrUnionCaseDecls - | 356 -> NONTERM_attrUnionCaseDecl + | 356 -> NONTERM_attrUnionCaseDecls | 357 -> NONTERM_attrUnionCaseDecl | 358 -> NONTERM_attrUnionCaseDecl | 359 -> NONTERM_attrUnionCaseDecl @@ -1569,86 +1569,86 @@ let prodIdxToNonTerminal (prodIdx:int) = | 362 -> NONTERM_attrUnionCaseDecl | 363 -> NONTERM_attrUnionCaseDecl | 364 -> NONTERM_attrUnionCaseDecl - | 365 -> NONTERM_unionCaseName + | 365 -> NONTERM_attrUnionCaseDecl | 366 -> NONTERM_unionCaseName | 367 -> NONTERM_unionCaseName - | 368 -> NONTERM_firstUnionCaseDeclOfMany + | 368 -> NONTERM_unionCaseName | 369 -> NONTERM_firstUnionCaseDeclOfMany | 370 -> NONTERM_firstUnionCaseDeclOfMany - | 371 -> NONTERM_firstUnionCaseDecl + | 371 -> NONTERM_firstUnionCaseDeclOfMany | 372 -> NONTERM_firstUnionCaseDecl | 373 -> NONTERM_firstUnionCaseDecl | 374 -> NONTERM_firstUnionCaseDecl - | 375 -> NONTERM_unionCaseReprElements + | 375 -> NONTERM_firstUnionCaseDecl | 376 -> NONTERM_unionCaseReprElements - | 377 -> NONTERM_unionCaseReprElement + | 377 -> NONTERM_unionCaseReprElements | 378 -> NONTERM_unionCaseReprElement | 379 -> NONTERM_unionCaseReprElement | 380 -> NONTERM_unionCaseReprElement - | 381 -> NONTERM_unionCaseRepr + | 381 -> NONTERM_unionCaseReprElement | 382 -> NONTERM_unionCaseRepr - | 383 -> NONTERM_recdFieldDeclList + | 383 -> NONTERM_unionCaseRepr | 384 -> NONTERM_recdFieldDeclList - | 385 -> NONTERM_recdFieldDecl - | 386 -> NONTERM_fieldDecl + | 385 -> NONTERM_recdFieldDeclList + | 386 -> NONTERM_recdFieldDecl | 387 -> NONTERM_fieldDecl | 388 -> NONTERM_fieldDecl - | 389 -> NONTERM_exconDefn - | 390 -> NONTERM_exconCore - | 391 -> NONTERM_exconCore - | 392 -> NONTERM_exconIntro - | 393 -> NONTERM_exconIntro + | 389 -> NONTERM_fieldDecl + | 390 -> NONTERM_fieldDecl + | 391 -> NONTERM_exconDefn + | 392 -> NONTERM_exconCore + | 393 -> NONTERM_exconCore | 394 -> NONTERM_exconIntro - | 395 -> NONTERM_exconRepr - | 396 -> NONTERM_exconRepr - | 397 -> NONTERM_defnBindings - | 398 -> NONTERM_defnBindings - | 399 -> NONTERM_doBinding - | 400 -> NONTERM_hardwhiteLetBindings - | 401 -> NONTERM_hardwhiteDoBinding - | 402 -> NONTERM_hardwhiteDoBinding - | 403 -> NONTERM_classDefnBindings - | 404 -> NONTERM_classDefnBindings + | 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_hardwhiteDefnBindingsTerminator - | 408 -> NONTERM_hardwhiteDefnBindingsTerminator - | 409 -> NONTERM_cPrototype - | 410 -> NONTERM_externArgs - | 411 -> NONTERM_externArgs + | 407 -> NONTERM_classDefnBindings + | 408 -> NONTERM_classDefnBindings + | 409 -> NONTERM_hardwhiteDefnBindingsTerminator + | 410 -> NONTERM_hardwhiteDefnBindingsTerminator + | 411 -> NONTERM_cPrototype | 412 -> NONTERM_externArgs - | 413 -> NONTERM_externMoreArgs - | 414 -> NONTERM_externMoreArgs - | 415 -> NONTERM_externArg - | 416 -> NONTERM_externArg - | 417 -> NONTERM_cType - | 418 -> NONTERM_cType + | 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_cRetType - | 423 -> NONTERM_cRetType - | 424 -> NONTERM_localBindings - | 425 -> NONTERM_moreLocalBindings - | 426 -> NONTERM_moreLocalBindings - | 427 -> NONTERM_attr_localBinding - | 428 -> NONTERM_attr_localBinding - | 429 -> NONTERM_localBinding - | 430 -> NONTERM_localBinding + | 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_typedExprWithStaticOptimizationsBlock - | 433 -> NONTERM_typedExprWithStaticOptimizationsBlock + | 432 -> NONTERM_localBinding + | 433 -> NONTERM_localBinding | 434 -> NONTERM_typedExprWithStaticOptimizationsBlock - | 435 -> NONTERM_typedExprWithStaticOptimizations - | 436 -> NONTERM_opt_staticOptimizations - | 437 -> NONTERM_opt_staticOptimizations - | 438 -> NONTERM_staticOptimization - | 439 -> NONTERM_staticOptimizationConditions - | 440 -> NONTERM_staticOptimizationConditions - | 441 -> NONTERM_staticOptimizationCondition - | 442 -> NONTERM_staticOptimizationCondition - | 443 -> NONTERM_rawConstant - | 444 -> NONTERM_rawConstant + | 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 @@ -1665,53 +1665,53 @@ let prodIdxToNonTerminal (prodIdx:int) = | 458 -> NONTERM_rawConstant | 459 -> NONTERM_rawConstant | 460 -> NONTERM_rawConstant - | 461 -> NONTERM_rationalConstant - | 462 -> NONTERM_rationalConstant + | 461 -> NONTERM_rawConstant + | 462 -> NONTERM_rawConstant | 463 -> NONTERM_rationalConstant | 464 -> NONTERM_rationalConstant - | 465 -> NONTERM_atomicUnsignedRationalConstant - | 466 -> NONTERM_atomicUnsignedRationalConstant - | 467 -> NONTERM_atomicRationalConstant - | 468 -> NONTERM_atomicRationalConstant - | 469 -> NONTERM_constant - | 470 -> NONTERM_constant - | 471 -> NONTERM_bindingPattern - | 472 -> NONTERM_simplePattern - | 473 -> NONTERM_simplePattern + | 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_simplePatternCommaList - | 478 -> NONTERM_simplePatternCommaList - | 479 -> NONTERM_opt_simplePatterns - | 480 -> NONTERM_opt_simplePatterns - | 481 -> NONTERM_simplePatterns - | 482 -> NONTERM_simplePatterns + | 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_headBindingPattern - | 487 -> NONTERM_headBindingPattern + | 486 -> NONTERM_simplePatterns + | 487 -> NONTERM_simplePatterns | 488 -> NONTERM_headBindingPattern | 489 -> NONTERM_headBindingPattern | 490 -> NONTERM_headBindingPattern | 491 -> NONTERM_headBindingPattern - | 492 -> NONTERM_tuplePatternElements - | 493 -> NONTERM_tuplePatternElements + | 492 -> NONTERM_headBindingPattern + | 493 -> NONTERM_headBindingPattern | 494 -> NONTERM_tuplePatternElements | 495 -> NONTERM_tuplePatternElements | 496 -> NONTERM_tuplePatternElements | 497 -> NONTERM_tuplePatternElements - | 498 -> NONTERM_conjPatternElements - | 499 -> NONTERM_conjPatternElements - | 500 -> NONTERM_namePatPairs - | 501 -> NONTERM_namePatPairs + | 498 -> NONTERM_tuplePatternElements + | 499 -> NONTERM_tuplePatternElements + | 500 -> NONTERM_conjPatternElements + | 501 -> NONTERM_conjPatternElements | 502 -> NONTERM_namePatPairs - | 503 -> NONTERM_namePatPair - | 504 -> NONTERM_namePatPair + | 503 -> NONTERM_namePatPairs + | 504 -> NONTERM_namePatPairs | 505 -> NONTERM_namePatPair - | 506 -> NONTERM_constrPattern - | 507 -> NONTERM_constrPattern + | 506 -> NONTERM_namePatPair + | 507 -> NONTERM_namePatPair | 508 -> NONTERM_constrPattern | 509 -> NONTERM_constrPattern | 510 -> NONTERM_constrPattern @@ -1719,14 +1719,14 @@ let prodIdxToNonTerminal (prodIdx:int) = | 512 -> NONTERM_constrPattern | 513 -> NONTERM_constrPattern | 514 -> NONTERM_constrPattern - | 515 -> NONTERM_atomicPatsOrNamePatPairs - | 516 -> NONTERM_atomicPatsOrNamePatPairs - | 517 -> NONTERM_atomicPatterns - | 518 -> NONTERM_atomicPatterns + | 515 -> NONTERM_constrPattern + | 516 -> NONTERM_constrPattern + | 517 -> NONTERM_atomicPatsOrNamePatPairs + | 518 -> NONTERM_atomicPatsOrNamePatPairs | 519 -> NONTERM_atomicPatterns | 520 -> NONTERM_atomicPatterns - | 521 -> NONTERM_atomicPattern - | 522 -> NONTERM_atomicPattern + | 521 -> NONTERM_atomicPatterns + | 522 -> NONTERM_atomicPatterns | 523 -> NONTERM_atomicPattern | 524 -> NONTERM_atomicPattern | 525 -> NONTERM_atomicPattern @@ -1745,10 +1745,10 @@ let prodIdxToNonTerminal (prodIdx:int) = | 538 -> NONTERM_atomicPattern | 539 -> NONTERM_atomicPattern | 540 -> NONTERM_atomicPattern - | 541 -> NONTERM_parenPatternBody - | 542 -> NONTERM_parenPatternBody - | 543 -> NONTERM_parenPattern - | 544 -> NONTERM_parenPattern + | 541 -> NONTERM_atomicPattern + | 542 -> NONTERM_atomicPattern + | 543 -> NONTERM_parenPatternBody + | 544 -> NONTERM_parenPatternBody | 545 -> NONTERM_parenPattern | 546 -> NONTERM_parenPattern | 547 -> NONTERM_parenPattern @@ -1756,49 +1756,49 @@ let prodIdxToNonTerminal (prodIdx:int) = | 549 -> NONTERM_parenPattern | 550 -> NONTERM_parenPattern | 551 -> NONTERM_parenPattern - | 552 -> NONTERM_tupleParenPatternElements - | 553 -> NONTERM_tupleParenPatternElements + | 552 -> NONTERM_parenPattern + | 553 -> NONTERM_parenPattern | 554 -> NONTERM_tupleParenPatternElements | 555 -> NONTERM_tupleParenPatternElements | 556 -> NONTERM_tupleParenPatternElements | 557 -> NONTERM_tupleParenPatternElements - | 558 -> NONTERM_conjParenPatternElements - | 559 -> NONTERM_conjParenPatternElements - | 560 -> NONTERM_recordPatternElementsAux - | 561 -> NONTERM_recordPatternElementsAux - | 562 -> NONTERM_recordPatternElement - | 563 -> NONTERM_recordPatternElement + | 558 -> NONTERM_tupleParenPatternElements + | 559 -> NONTERM_tupleParenPatternElements + | 560 -> NONTERM_conjParenPatternElements + | 561 -> NONTERM_conjParenPatternElements + | 562 -> NONTERM_recordPatternElementsAux + | 563 -> NONTERM_recordPatternElementsAux | 564 -> NONTERM_recordPatternElement - | 565 -> NONTERM_listPatternElements - | 566 -> NONTERM_listPatternElements + | 565 -> NONTERM_recordPatternElement + | 566 -> NONTERM_recordPatternElement | 567 -> NONTERM_listPatternElements - | 568 -> NONTERM_typedSequentialExprBlock - | 569 -> NONTERM_typedSequentialExprBlock + | 568 -> NONTERM_listPatternElements + | 569 -> NONTERM_listPatternElements | 570 -> NONTERM_typedSequentialExprBlock | 571 -> NONTERM_typedSequentialExprBlock - | 572 -> NONTERM_declExprBlock - | 573 -> NONTERM_declExprBlock + | 572 -> NONTERM_typedSequentialExprBlock + | 573 -> NONTERM_typedSequentialExprBlock | 574 -> NONTERM_declExprBlock - | 575 -> NONTERM_typedSequentialExprBlockR - | 576 -> NONTERM_typedSequentialExprBlockR + | 575 -> NONTERM_declExprBlock + | 576 -> NONTERM_declExprBlock | 577 -> NONTERM_typedSequentialExprBlockR - | 578 -> NONTERM_typedSequentialExpr - | 579 -> NONTERM_typedSequentialExpr + | 578 -> NONTERM_typedSequentialExprBlockR + | 579 -> NONTERM_typedSequentialExprBlockR | 580 -> NONTERM_typedSequentialExpr - | 581 -> NONTERM_typedSequentialExprEOF - | 582 -> NONTERM_sequentialExpr - | 583 -> NONTERM_sequentialExpr + | 581 -> NONTERM_typedSequentialExpr + | 582 -> NONTERM_typedSequentialExpr + | 583 -> NONTERM_typedSequentialExprEOF | 584 -> NONTERM_sequentialExpr | 585 -> NONTERM_sequentialExpr | 586 -> NONTERM_sequentialExpr | 587 -> NONTERM_sequentialExpr - | 588 -> NONTERM_recover - | 589 -> NONTERM_recover - | 590 -> NONTERM_moreBinders - | 591 -> NONTERM_moreBinders + | 588 -> NONTERM_sequentialExpr + | 589 -> NONTERM_sequentialExpr + | 590 -> NONTERM_recover + | 591 -> NONTERM_recover | 592 -> NONTERM_moreBinders - | 593 -> NONTERM_declExpr - | 594 -> NONTERM_declExpr + | 593 -> NONTERM_moreBinders + | 594 -> NONTERM_moreBinders | 595 -> NONTERM_declExpr | 596 -> NONTERM_declExpr | 597 -> NONTERM_declExpr @@ -1906,52 +1906,52 @@ let prodIdxToNonTerminal (prodIdx:int) = | 699 -> NONTERM_declExpr | 700 -> NONTERM_declExpr | 701 -> NONTERM_declExpr - | 702 -> NONTERM_whileExprCore - | 703 -> NONTERM_whileExprCore + | 702 -> NONTERM_declExpr + | 703 -> NONTERM_declExpr | 704 -> NONTERM_whileExprCore | 705 -> NONTERM_whileExprCore | 706 -> NONTERM_whileExprCore | 707 -> NONTERM_whileExprCore - | 708 -> NONTERM_dynamicArg - | 709 -> NONTERM_dynamicArg - | 710 -> NONTERM_withClauses - | 711 -> NONTERM_withClauses + | 708 -> NONTERM_whileExprCore + | 709 -> NONTERM_whileExprCore + | 710 -> NONTERM_dynamicArg + | 711 -> NONTERM_dynamicArg | 712 -> NONTERM_withClauses | 713 -> NONTERM_withClauses - | 714 -> NONTERM_withPatternClauses - | 715 -> NONTERM_withPatternClauses + | 714 -> NONTERM_withClauses + | 715 -> NONTERM_withClauses | 716 -> NONTERM_withPatternClauses | 717 -> NONTERM_withPatternClauses - | 718 -> NONTERM_patternAndGuard - | 719 -> NONTERM_patternClauses - | 720 -> NONTERM_patternClauses + | 718 -> NONTERM_withPatternClauses + | 719 -> NONTERM_withPatternClauses + | 720 -> NONTERM_patternAndGuard | 721 -> NONTERM_patternClauses | 722 -> NONTERM_patternClauses | 723 -> NONTERM_patternClauses | 724 -> NONTERM_patternClauses - | 725 -> NONTERM_patternGuard - | 726 -> NONTERM_patternGuard - | 727 -> NONTERM_patternResult - | 728 -> NONTERM_ifExprCases - | 729 -> NONTERM_ifExprThen - | 730 -> NONTERM_ifExprThen + | 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_ifExprElifs - | 734 -> NONTERM_ifExprElifs + | 733 -> NONTERM_ifExprThen + | 734 -> NONTERM_ifExprThen | 735 -> NONTERM_ifExprElifs | 736 -> NONTERM_ifExprElifs | 737 -> NONTERM_ifExprElifs - | 738 -> NONTERM_tupleExpr - | 739 -> NONTERM_tupleExpr + | 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_minusExpr - | 747 -> NONTERM_minusExpr + | 746 -> NONTERM_tupleExpr + | 747 -> NONTERM_tupleExpr | 748 -> NONTERM_minusExpr | 749 -> NONTERM_minusExpr | 750 -> NONTERM_minusExpr @@ -1964,12 +1964,12 @@ let prodIdxToNonTerminal (prodIdx:int) = | 757 -> NONTERM_minusExpr | 758 -> NONTERM_minusExpr | 759 -> NONTERM_minusExpr - | 760 -> NONTERM_appExpr - | 761 -> NONTERM_appExpr - | 762 -> NONTERM_argExpr - | 763 -> NONTERM_argExpr - | 764 -> NONTERM_atomicExpr - | 765 -> NONTERM_atomicExpr + | 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 @@ -1989,9 +1989,9 @@ let prodIdxToNonTerminal (prodIdx:int) = | 782 -> NONTERM_atomicExpr | 783 -> NONTERM_atomicExpr | 784 -> NONTERM_atomicExpr - | 785 -> NONTERM_atomicExprQualification - | 786 -> NONTERM_atomicExprQualification - | 787 -> NONTERM_atomicExprQualification + | 785 -> NONTERM_atomicExpr + | 786 -> NONTERM_atomicExpr + | 787 -> NONTERM_atomicExpr | 788 -> NONTERM_atomicExprQualification | 789 -> NONTERM_atomicExprQualification | 790 -> NONTERM_atomicExprQualification @@ -1999,9 +1999,9 @@ let prodIdxToNonTerminal (prodIdx:int) = | 792 -> NONTERM_atomicExprQualification | 793 -> NONTERM_atomicExprQualification | 794 -> NONTERM_atomicExprQualification - | 795 -> NONTERM_atomicExprAfterType - | 796 -> NONTERM_atomicExprAfterType - | 797 -> NONTERM_atomicExprAfterType + | 795 -> NONTERM_atomicExprQualification + | 796 -> NONTERM_atomicExprQualification + | 797 -> NONTERM_atomicExprQualification | 798 -> NONTERM_atomicExprAfterType | 799 -> NONTERM_atomicExprAfterType | 800 -> NONTERM_atomicExprAfterType @@ -2010,21 +2010,21 @@ let prodIdxToNonTerminal (prodIdx:int) = | 803 -> NONTERM_atomicExprAfterType | 804 -> NONTERM_atomicExprAfterType | 805 -> NONTERM_atomicExprAfterType - | 806 -> NONTERM_beginEndExpr - | 807 -> NONTERM_beginEndExpr - | 808 -> NONTERM_beginEndExpr + | 806 -> NONTERM_atomicExprAfterType + | 807 -> NONTERM_atomicExprAfterType + | 808 -> NONTERM_atomicExprAfterType | 809 -> NONTERM_beginEndExpr - | 810 -> NONTERM_quoteExpr - | 811 -> NONTERM_quoteExpr - | 812 -> NONTERM_quoteExpr + | 810 -> NONTERM_beginEndExpr + | 811 -> NONTERM_beginEndExpr + | 812 -> NONTERM_beginEndExpr | 813 -> NONTERM_quoteExpr - | 814 -> NONTERM_arrayExpr - | 815 -> NONTERM_arrayExpr - | 816 -> NONTERM_arrayExpr + | 814 -> NONTERM_quoteExpr + | 815 -> NONTERM_quoteExpr + | 816 -> NONTERM_quoteExpr | 817 -> NONTERM_arrayExpr - | 818 -> NONTERM_parenExpr - | 819 -> NONTERM_parenExpr - | 820 -> NONTERM_parenExpr + | 818 -> NONTERM_arrayExpr + | 819 -> NONTERM_arrayExpr + | 820 -> NONTERM_arrayExpr | 821 -> NONTERM_parenExpr | 822 -> NONTERM_parenExpr | 823 -> NONTERM_parenExpr @@ -2032,123 +2032,123 @@ let prodIdxToNonTerminal (prodIdx:int) = | 825 -> NONTERM_parenExpr | 826 -> NONTERM_parenExpr | 827 -> NONTERM_parenExpr - | 828 -> NONTERM_parenExprBody - | 829 -> NONTERM_parenExprBody - | 830 -> NONTERM_parenExprBody - | 831 -> NONTERM_typars - | 832 -> NONTERM_typars - | 833 -> NONTERM_typarAlts - | 834 -> NONTERM_typarAlts - | 835 -> NONTERM_braceExpr - | 836 -> NONTERM_braceExpr - | 837 -> NONTERM_braceExpr + | 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_braceExprBody - | 841 -> NONTERM_braceExprBody - | 842 -> NONTERM_braceExprBody - | 843 -> NONTERM_listExprElements - | 844 -> NONTERM_listExprElements - | 845 -> NONTERM_arrayExprElements - | 846 -> NONTERM_arrayExprElements - | 847 -> NONTERM_computationExpr - | 848 -> NONTERM_arrowThenExprR - | 849 -> NONTERM_forLoopBinder - | 850 -> NONTERM_forLoopBinder - | 851 -> NONTERM_forLoopBinder - | 852 -> NONTERM_forLoopRange - | 853 -> NONTERM_forLoopDirection - | 854 -> NONTERM_forLoopDirection - | 855 -> NONTERM_inlineAssemblyExpr - | 856 -> NONTERM_optCurriedArgExprs - | 857 -> NONTERM_optCurriedArgExprs - | 858 -> NONTERM_opt_atomicExprAfterType - | 859 -> NONTERM_opt_atomicExprAfterType - | 860 -> NONTERM_opt_inlineAssemblyTypeArg - | 861 -> NONTERM_opt_inlineAssemblyTypeArg - | 862 -> NONTERM_optInlineAssemblyReturnTypes - | 863 -> NONTERM_optInlineAssemblyReturnTypes - | 864 -> NONTERM_optInlineAssemblyReturnTypes - | 865 -> NONTERM_recdExpr - | 866 -> NONTERM_recdExpr - | 867 -> NONTERM_recdExprCore - | 868 -> NONTERM_recdExprCore - | 869 -> NONTERM_recdExprCore + | 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_opt_seps_recd - | 877 -> NONTERM_opt_seps_recd - | 878 -> NONTERM_seps_recd - | 879 -> NONTERM_seps_recd - | 880 -> NONTERM_seps_recd + | 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_pathOrUnderscore - | 883 -> NONTERM_pathOrUnderscore - | 884 -> NONTERM_recdExprBindings - | 885 -> NONTERM_recdExprBindings - | 886 -> NONTERM_recdBinding - | 887 -> NONTERM_recdBinding - | 888 -> NONTERM_recdBinding + | 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_objExpr - | 892 -> NONTERM_objExpr - | 893 -> NONTERM_objExpr - | 894 -> NONTERM_objExprBaseCall - | 895 -> NONTERM_objExprBaseCall - | 896 -> NONTERM_objExprBaseCall - | 897 -> NONTERM_opt_objExprBindings - | 898 -> NONTERM_opt_objExprBindings - | 899 -> NONTERM_objExprBindings - | 900 -> NONTERM_objExprBindings - | 901 -> NONTERM_objExprBindings - | 902 -> NONTERM_objExprInterfaces - | 903 -> NONTERM_opt_objExprInterfaces - | 904 -> NONTERM_opt_objExprInterfaces - | 905 -> NONTERM_opt_objExprInterfaces - | 906 -> NONTERM_objExprInterface - | 907 -> NONTERM_braceBarExpr - | 908 -> NONTERM_braceBarExpr - | 909 -> NONTERM_braceBarExprCore - | 910 -> NONTERM_braceBarExprCore - | 911 -> NONTERM_braceBarExprCore + | 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_anonLambdaExpr - | 915 -> NONTERM_anonLambdaExpr - | 916 -> NONTERM_anonLambdaExpr + | 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_anonMatchingExpr - | 923 -> NONTERM_anonMatchingExpr - | 924 -> NONTERM_typeWithTypeConstraints - | 925 -> NONTERM_typeWithTypeConstraints - | 926 -> NONTERM_topTypeWithTypeConstraints - | 927 -> NONTERM_topTypeWithTypeConstraints - | 928 -> NONTERM_opt_topReturnTypeWithTypeConstraints - | 929 -> NONTERM_opt_topReturnTypeWithTypeConstraints - | 930 -> NONTERM_opt_topReturnTypeWithTypeConstraints - | 931 -> NONTERM_topType - | 932 -> NONTERM_topType - | 933 -> NONTERM_topType - | 934 -> NONTERM_topTupleType - | 935 -> NONTERM_topTupleType - | 936 -> NONTERM_topTupleType + | 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_topTupleTypeElements - | 939 -> NONTERM_topTupleTypeElements - | 940 -> NONTERM_topTupleTypeElements + | 938 -> NONTERM_topTupleType + | 939 -> NONTERM_topTupleType + | 940 -> NONTERM_topTupleType | 941 -> NONTERM_topTupleTypeElements - | 942 -> NONTERM_topAppType - | 943 -> NONTERM_topAppType - | 944 -> NONTERM_topAppType + | 942 -> NONTERM_topTupleTypeElements + | 943 -> NONTERM_topTupleTypeElements + | 944 -> NONTERM_topTupleTypeElements | 945 -> NONTERM_topAppType | 946 -> NONTERM_topAppType | 947 -> NONTERM_topAppType @@ -2156,47 +2156,47 @@ let prodIdxToNonTerminal (prodIdx:int) = | 949 -> NONTERM_topAppType | 950 -> NONTERM_topAppType | 951 -> NONTERM_topAppType - | 952 -> NONTERM_invalidUseOfAppTypeFunction - | 953 -> NONTERM_invalidUseOfAppTypeFunction - | 954 -> NONTERM_invalidUseOfAppTypeFunction + | 952 -> NONTERM_topAppType + | 953 -> NONTERM_topAppType + | 954 -> NONTERM_topAppType | 955 -> NONTERM_invalidUseOfAppTypeFunction - | 956 -> NONTERM_typ - | 957 -> NONTERM_typ - | 958 -> NONTERM_typ + | 956 -> NONTERM_invalidUseOfAppTypeFunction + | 957 -> NONTERM_invalidUseOfAppTypeFunction + | 958 -> NONTERM_invalidUseOfAppTypeFunction | 959 -> NONTERM_typ - | 960 -> NONTERM_typEOF - | 961 -> NONTERM_tupleType - | 962 -> NONTERM_tupleType - | 963 -> NONTERM_tupleType + | 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_tupleOrQuotTypeElements - | 970 -> NONTERM_tupleOrQuotTypeElements - | 971 -> NONTERM_tupleOrQuotTypeElements + | 969 -> NONTERM_tupleType + | 970 -> NONTERM_tupleType + | 971 -> NONTERM_tupleType | 972 -> NONTERM_tupleOrQuotTypeElements | 973 -> NONTERM_tupleOrQuotTypeElements | 974 -> NONTERM_tupleOrQuotTypeElements | 975 -> NONTERM_tupleOrQuotTypeElements - | 976 -> NONTERM_intersectionType - | 977 -> NONTERM_intersectionType - | 978 -> NONTERM_appTypeCon - | 979 -> NONTERM_appTypeCon - | 980 -> NONTERM_appTypeConPower - | 981 -> NONTERM_appTypeConPower - | 982 -> NONTERM_appType - | 983 -> NONTERM_appType - | 984 -> NONTERM_appType + | 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_arrayTypeSuffix - | 991 -> NONTERM_arrayTypeSuffix - | 992 -> NONTERM_arrayTypeSuffix + | 990 -> NONTERM_appType + | 991 -> NONTERM_appType + | 992 -> NONTERM_appType | 993 -> NONTERM_arrayTypeSuffix | 994 -> NONTERM_arrayTypeSuffix | 995 -> NONTERM_arrayTypeSuffix @@ -2226,19 +2226,19 @@ let prodIdxToNonTerminal (prodIdx:int) = | 1019 -> NONTERM_arrayTypeSuffix | 1020 -> NONTERM_arrayTypeSuffix | 1021 -> NONTERM_arrayTypeSuffix - | 1022 -> NONTERM_appTypePrefixArguments - | 1023 -> NONTERM_typeArgListElements - | 1024 -> NONTERM_typeArgListElements - | 1025 -> NONTERM_typeArgListElements - | 1026 -> NONTERM_powerType - | 1027 -> NONTERM_powerType - | 1028 -> NONTERM_atomTypeNonAtomicDeprecated - | 1029 -> NONTERM_atomTypeNonAtomicDeprecated - | 1030 -> NONTERM_atomTypeOrAnonRecdType - | 1031 -> NONTERM_atomTypeOrAnonRecdType - | 1032 -> NONTERM_atomType - | 1033 -> NONTERM_atomType - | 1034 -> NONTERM_atomType + | 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 @@ -2256,50 +2256,50 @@ let prodIdxToNonTerminal (prodIdx:int) = | 1049 -> NONTERM_atomType | 1050 -> NONTERM_atomType | 1051 -> NONTERM_atomType - | 1052 -> NONTERM_typeArgsNoHpaDeprecated - | 1053 -> NONTERM_typeArgsNoHpaDeprecated - | 1054 -> NONTERM_typeArgsActual - | 1055 -> NONTERM_typeArgsActual - | 1056 -> NONTERM_typeArgsActual + | 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_typeArgActual - | 1062 -> NONTERM_typeArgActual - | 1063 -> NONTERM_typeArgActual - | 1064 -> NONTERM_typeArgActualOrDummyIfEmpty - | 1065 -> NONTERM_typeArgActualOrDummyIfEmpty - | 1066 -> NONTERM_dummyTypeArg - | 1067 -> NONTERM_measureTypeArg - | 1068 -> NONTERM_measureTypeArg - | 1069 -> NONTERM_measureTypeAtom - | 1070 -> NONTERM_measureTypeAtom - | 1071 -> NONTERM_measureTypeAtom - | 1072 -> NONTERM_measureTypePower - | 1073 -> NONTERM_measureTypePower - | 1074 -> NONTERM_measureTypePower - | 1075 -> NONTERM_measureTypeSeq - | 1076 -> NONTERM_measureTypeSeq - | 1077 -> NONTERM_measureTypeExpr - | 1078 -> NONTERM_measureTypeExpr - | 1079 -> NONTERM_measureTypeExpr + | 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_typar - | 1082 -> NONTERM_typar - | 1083 -> NONTERM_ident - | 1084 -> NONTERM_path - | 1085 -> NONTERM_path - | 1086 -> NONTERM_path + | 1081 -> NONTERM_measureTypeExpr + | 1082 -> NONTERM_measureTypeExpr + | 1083 -> NONTERM_measureTypeExpr + | 1084 -> NONTERM_typar + | 1085 -> NONTERM_typar + | 1086 -> NONTERM_ident | 1087 -> NONTERM_path - | 1088 -> NONTERM_opName - | 1089 -> NONTERM_opName - | 1090 -> NONTERM_opName + | 1088 -> NONTERM_path + | 1089 -> NONTERM_path + | 1090 -> NONTERM_path | 1091 -> NONTERM_opName | 1092 -> NONTERM_opName - | 1093 -> NONTERM_operatorName - | 1094 -> NONTERM_operatorName - | 1095 -> NONTERM_operatorName + | 1093 -> NONTERM_opName + | 1094 -> NONTERM_opName + | 1095 -> NONTERM_opName | 1096 -> NONTERM_operatorName | 1097 -> NONTERM_operatorName | 1098 -> NONTERM_operatorName @@ -2323,106 +2323,109 @@ let prodIdxToNonTerminal (prodIdx:int) = | 1116 -> NONTERM_operatorName | 1117 -> NONTERM_operatorName | 1118 -> NONTERM_operatorName - | 1119 -> NONTERM_activePatternCaseName - | 1120 -> NONTERM_activePatternCaseNames - | 1121 -> NONTERM_activePatternCaseNames - | 1122 -> NONTERM_identOrOp - | 1123 -> NONTERM_identOrOp - | 1124 -> NONTERM_pathOp - | 1125 -> NONTERM_pathOp - | 1126 -> NONTERM_pathOp + | 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_nameop - | 1129 -> NONTERM_identExpr - | 1130 -> NONTERM_identExpr - | 1131 -> NONTERM_topSeparator - | 1132 -> NONTERM_topSeparator - | 1133 -> NONTERM_topSeparator - | 1134 -> NONTERM_topSeparators - | 1135 -> NONTERM_topSeparators - | 1136 -> NONTERM_opt_topSeparators - | 1137 -> NONTERM_opt_topSeparators - | 1138 -> NONTERM_seps - | 1139 -> NONTERM_seps - | 1140 -> NONTERM_seps + | 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_declEnd - | 1143 -> NONTERM_declEnd - | 1144 -> NONTERM_declEnd - | 1145 -> NONTERM_opt_declEnd - | 1146 -> NONTERM_opt_declEnd - | 1147 -> NONTERM_opt_declEnd + | 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_ODECLEND - | 1150 -> NONTERM_opt_ODECLEND - | 1151 -> NONTERM_deprecated_opt_equals - | 1152 -> NONTERM_deprecated_opt_equals - | 1153 -> NONTERM_opt_equals - | 1154 -> NONTERM_opt_equals - | 1155 -> NONTERM_opt_OBLOCKSEP - | 1156 -> NONTERM_opt_OBLOCKSEP - | 1157 -> NONTERM_opt_seps - | 1158 -> NONTERM_opt_seps - | 1159 -> NONTERM_opt_rec - | 1160 -> NONTERM_opt_rec - | 1161 -> NONTERM_opt_bar - | 1162 -> NONTERM_opt_bar - | 1163 -> NONTERM_opt_inline - | 1164 -> NONTERM_opt_inline - | 1165 -> NONTERM_opt_mutable - | 1166 -> NONTERM_opt_mutable - | 1167 -> NONTERM_doToken - | 1168 -> NONTERM_doToken - | 1169 -> NONTERM_doneDeclEnd - | 1170 -> NONTERM_doneDeclEnd - | 1171 -> NONTERM_structOrBegin - | 1172 -> NONTERM_structOrBegin - | 1173 -> NONTERM_sigOrBegin - | 1174 -> NONTERM_sigOrBegin - | 1175 -> NONTERM_colonOrEquals - | 1176 -> NONTERM_colonOrEquals - | 1177 -> NONTERM_string - | 1178 -> NONTERM_sourceIdentifier - | 1179 -> NONTERM_interpolatedStringFill - | 1180 -> NONTERM_interpolatedStringFill - | 1181 -> NONTERM_interpolatedStringParts - | 1182 -> NONTERM_interpolatedStringParts - | 1183 -> NONTERM_interpolatedStringParts - | 1184 -> NONTERM_interpolatedString - | 1185 -> NONTERM_interpolatedString - | 1186 -> NONTERM_interpolatedString - | 1187 -> NONTERM_opt_HIGH_PRECEDENCE_APP - | 1188 -> NONTERM_opt_HIGH_PRECEDENCE_APP - | 1189 -> NONTERM_opt_HIGH_PRECEDENCE_APP - | 1190 -> NONTERM_opt_HIGH_PRECEDENCE_TYAPP - | 1191 -> NONTERM_opt_HIGH_PRECEDENCE_TYAPP - | 1192 -> NONTERM_typeKeyword - | 1193 -> NONTERM_typeKeyword - | 1194 -> NONTERM_typeKeyword - | 1195 -> NONTERM_moduleKeyword - | 1196 -> NONTERM_moduleKeyword - | 1197 -> NONTERM_moduleKeyword - | 1198 -> NONTERM_rbrace - | 1199 -> NONTERM_rbrace - | 1200 -> NONTERM_rbrace - | 1201 -> NONTERM_bar_rbrace - | 1202 -> NONTERM_rparen - | 1203 -> NONTERM_rparen - | 1204 -> NONTERM_rparen - | 1205 -> NONTERM_oblockend - | 1206 -> NONTERM_oblockend - | 1207 -> NONTERM_oblockend - | 1208 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover - | 1209 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover - | 1210 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover + | 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_coming_soon_or_recover - | 1214 -> NONTERM_ends_coming_soon_or_recover - | 1215 -> NONTERM_ends_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 | _ -> failwith "prodIdxToNonTerminal: bad production index" let _fsyacc_endOfInputTag = 205 @@ -2841,18 +2844,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;649us;650us;656us;657us;1505us;1506us;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;724us;583us;724us;601us;610us;606us;610us;607us;610us;615us;610us;620us;610us;649us;175us;656us;175us;666us;676us;669us;676us;674us;676us;721us;724us;735us;736us;748us;800us;754us;800us;767us;794us;772us;781us;777us;781us;779us;781us;797us;800us;1505us;175us;1604us;546us;1606us;800us;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;1677us;120us;314us;123us;314us;127us;314us;130us;314us;134us;314us;137us;314us;139us;314us;149us;1677us;152us;314us;158us;314us;162us;314us;166us;314us;173us;314us;184us;1677us;198us;314us;201us;1677us;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;1677us;388us;314us;392us;314us;394us;314us;398us;314us;404us;314us;407us;314us;418us;314us;454us;1677us;475us;314us;516us;314us;519us;314us;537us;314us;543us;314us;574us;314us;583us;314us;601us;314us;606us;314us;607us;314us;615us;314us;620us;314us;649us;314us;656us;314us;666us;314us;669us;314us;674us;314us;687us;1677us;721us;314us;735us;314us;748us;314us;754us;314us;767us;314us;772us;314us;777us;314us;779us;314us;797us;314us;874us;874us;875us;874us;878us;874us;920us;1006us;939us;1006us;955us;1006us;958us;1006us;969us;1006us;977us;1006us;1000us;1006us;1006us;1006us;1007us;1006us;1009us;1006us;1010us;1006us;1013us;1006us;1015us;1006us;1016us;1006us;1022us;1006us;1026us;1006us;1133us;1006us;1303us;1006us;1305us;1006us;1311us;1006us;1318us;1006us;1320us;1006us;1505us;314us;1604us;314us;1606us;314us;1649us;1006us;1651us;1006us;1658us;1677us;1662us;1677us;1666us;1677us;1669us;1677us;1672us;1677us;1675us;1677us;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;583us;315us;601us;315us;606us;315us;607us;315us;615us;315us;620us;315us;649us;315us;656us;315us;666us;315us;669us;315us;674us;315us;687us;315us;721us;315us;735us;315us;748us;315us;754us;315us;767us;315us;772us;315us;777us;315us;779us;315us;797us;315us;874us;315us;875us;315us;878us;315us;920us;315us;939us;315us;955us;315us;958us;315us;969us;315us;977us;315us;1000us;315us;1006us;315us;1007us;315us;1009us;315us;1010us;315us;1013us;315us;1015us;315us;1016us;315us;1022us;315us;1026us;315us;1133us;315us;1303us;315us;1305us;315us;1311us;315us;1318us;315us;1320us;315us;1505us;315us;1604us;315us;1606us;315us;1649us;315us;1651us;315us;1658us;315us;1662us;315us;1666us;315us;1669us;315us;1672us;315us;1675us;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;924us;424us;924us;465us;964us;804us;924us;897us;924us;899us;924us;900us;924us;904us;924us;905us;924us;908us;924us;910us;924us;911us;924us;920us;924us;924us;964us;925us;964us;927us;964us;929us;964us;932us;964us;934us;964us;939us;924us;943us;964us;945us;964us;947us;964us;955us;924us;958us;924us;969us;924us;977us;924us;998us;924us;1000us;924us;1006us;924us;1007us;924us;1009us;924us;1010us;924us;1013us;924us;1015us;924us;1016us;924us;1022us;924us;1026us;924us;1076us;924us;1081us;924us;1133us;924us;1164us;924us;1171us;924us;1303us;924us;1305us;924us;1311us;924us;1318us;924us;1320us;924us;1632us;964us;1637us;964us;1649us;924us;1651us;924us;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;594us;363us;364us;436us;438us;437us;439us;478us;479us;487us;488us;560us;561us;676us;677us;726us;727us;736us;737us;768us;769us;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;676us;512us;726us;512us;736us;512us;768us;512us;804us;507us;897us;507us;899us;507us;900us;507us;904us;507us;905us;507us;908us;507us;910us;507us;911us;507us;920us;507us;924us;507us;925us;507us;927us;507us;929us;507us;932us;507us;934us;507us;939us;507us;943us;507us;945us;507us;947us;507us;955us;507us;958us;507us;969us;507us;977us;507us;998us;507us;1000us;507us;1006us;507us;1007us;507us;1009us;507us;1010us;507us;1013us;507us;1015us;507us;1016us;507us;1022us;507us;1026us;507us;1076us;507us;1081us;507us;1133us;507us;1164us;507us;1171us;507us;1303us;507us;1305us;507us;1311us;507us;1318us;507us;1320us;507us;1632us;507us;1637us;507us;1649us;507us;1651us;507us;1us;65535us;447us;448us;4us;65535us;374us;375us;376us;377us;380us;381us;733us;734us;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;1379us;1602us;2us;65535us;516us;517us;1604us;1609us;4us;65535us;516us;541us;537us;538us;543us;544us;1604us;541us;4us;65535us;516us;542us;537us;542us;543us;542us;1604us;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;678us;718us;680us;718us;683us;718us;704us;718us;707us;718us;742us;718us;83us;65535us;8us;1841us;111us;1841us;149us;1841us;178us;1841us;184us;1841us;188us;1841us;190us;1841us;201us;1841us;290us;1841us;385us;1841us;439us;1841us;446us;1841us;454us;1841us;481us;1841us;497us;1841us;561us;1841us;569us;1841us;625us;1841us;629us;1841us;639us;1841us;642us;1841us;652us;1841us;663us;1841us;678us;1841us;680us;1841us;683us;1841us;687us;1841us;704us;1841us;707us;1841us;710us;1841us;713us;1841us;729us;1841us;742us;1841us;827us;1841us;871us;1841us;936us;1841us;1003us;1841us;1044us;1841us;1229us;1841us;1232us;1841us;1235us;1841us;1515us;1841us;1548us;1841us;1551us;1841us;1553us;1841us;1617us;1841us;1655us;1841us;1657us;1841us;1658us;1841us;1662us;1841us;1666us;1841us;1669us;1841us;1672us;1841us;1675us;1841us;1677us;1841us;1679us;1841us;1684us;1841us;1688us;1841us;1693us;1841us;1698us;1841us;1701us;1841us;1704us;1841us;1707us;1841us;1712us;1841us;1715us;1841us;1717us;1841us;1720us;1841us;1724us;1841us;1727us;1841us;1729us;1841us;1732us;1841us;1749us;1841us;1755us;1841us;1758us;1841us;1825us;1841us;1829us;1841us;1835us;1841us;1846us;1841us;1852us;1841us;1853us;1841us;1876us;1841us;1878us;1841us;1889us;1841us;84us;65535us;8us;582us;111us;582us;149us;582us;178us;582us;184us;582us;188us;582us;190us;582us;201us;582us;290us;582us;385us;582us;439us;582us;446us;582us;454us;582us;481us;582us;497us;582us;561us;582us;569us;582us;580us;581us;625us;582us;629us;582us;639us;582us;642us;582us;652us;582us;663us;582us;678us;582us;680us;582us;683us;582us;687us;582us;704us;582us;707us;582us;710us;582us;713us;582us;729us;582us;742us;582us;827us;582us;871us;582us;936us;582us;1003us;582us;1044us;582us;1229us;582us;1232us;582us;1235us;582us;1515us;582us;1548us;582us;1551us;582us;1553us;582us;1617us;582us;1655us;582us;1657us;582us;1658us;582us;1662us;582us;1666us;582us;1669us;582us;1672us;582us;1675us;582us;1677us;582us;1679us;582us;1684us;582us;1688us;582us;1693us;582us;1698us;582us;1701us;582us;1704us;582us;1707us;582us;1712us;582us;1715us;582us;1717us;582us;1720us;582us;1724us;582us;1727us;582us;1729us;582us;1732us;582us;1749us;582us;1755us;582us;1758us;582us;1825us;582us;1829us;582us;1835us;582us;1846us;582us;1852us;582us;1853us;582us;1876us;582us;1878us;582us;1889us;582us;4us;65535us;134us;152us;137us;152us;368us;388us;371us;388us;9us;65535us;177us;188us;178us;188us;438us;446us;439us;446us;1598us;1617us;1600us;1617us;1611us;1617us;1613us;1617us;1615us;1617us;1us;65535us;355us;356us;1us;65535us;594us;596us;3us;65535us;601us;602us;615us;604us;620us;605us;5us;65535us;601us;609us;606us;608us;607us;608us;615us;609us;620us;609us;1us;65535us;595us;598us;1us;65535us;620us;621us;4us;65535us;109us;624us;182us;624us;452us;624us;924us;925us;3us;65535us;109us;110us;182us;183us;452us;453us;3us;65535us;356us;357us;604us;616us;621us;622us;3us;65535us;625us;626us;1655us;627us;1657us;628us;3us;65535us;612us;613us;1735us;632us;1737us;633us;4us;65535us;625us;631us;629us;630us;1655us;631us;1657us;631us;1us;65535us;652us;653us;3us;65535us;178us;567us;439us;567us;561us;567us;5us;65535us;178us;666us;439us;666us;561us;666us;668us;669us;673us;674us;3us;65535us;666us;667us;669us;670us;674us;675us;3us;65535us;666us;673us;669us;673us;674us;673us;1us;65535us;677us;678us;3us;65535us;178us;668us;439us;668us;561us;668us;3us;65535us;178us;671us;439us;671us;561us;671us;7us;65535us;678us;719us;680us;719us;683us;719us;704us;719us;707us;719us;710us;711us;742us;719us;7us;65535us;678us;709us;680us;709us;683us;709us;704us;709us;707us;709us;710us;709us;742us;709us;6us;65535us;678us;682us;680us;681us;683us;684us;704us;705us;707us;708us;742us;743us;3us;65535us;574us;575us;583us;584us;721us;722us;3us;65535us;574us;720us;583us;720us;721us;720us;3us;65535us;193us;194us;196us;197us;724us;725us;4us;65535us;31us;279us;237us;279us;251us;279us;270us;279us;6us;65535us;31us;733us;69us;218us;93us;218us;237us;733us;251us;733us;270us;733us;1us;65535us;737us;738us;1us;65535us;738us;739us;120us;65535us;6us;1087us;31us;272us;114us;1087us;116us;1087us;237us;272us;251us;272us;270us;271us;274us;1087us;350us;761us;422us;1087us;427us;1087us;438us;761us;439us;761us;468us;1087us;491us;1087us;751us;1087us;757us;1087us;807us;1087us;811us;1087us;821us;1087us;1028us;1087us;1034us;1087us;1050us;1087us;1052us;1087us;1055us;1087us;1058us;1087us;1077us;1087us;1082us;1087us;1088us;1087us;1091us;1087us;1094us;1087us;1100us;1087us;1104us;1087us;1108us;1087us;1114us;1087us;1116us;1087us;1121us;1087us;1123us;1087us;1125us;1087us;1127us;1087us;1129us;1087us;1131us;1087us;1135us;1087us;1145us;1087us;1152us;1087us;1158us;1087us;1160us;1087us;1165us;1087us;1169us;1087us;1172us;1087us;1176us;1087us;1179us;1087us;1182us;1087us;1184us;1087us;1187us;1087us;1189us;1087us;1238us;1087us;1240us;1087us;1244us;1087us;1246us;1087us;1248us;1087us;1250us;1087us;1252us;1087us;1254us;1087us;1256us;1087us;1258us;1087us;1260us;1087us;1262us;1087us;1264us;1087us;1266us;1087us;1268us;1087us;1270us;1087us;1272us;1087us;1274us;1087us;1276us;1087us;1278us;1087us;1280us;1087us;1282us;1087us;1284us;1087us;1285us;1087us;1286us;1087us;1287us;1087us;1290us;1087us;1300us;1087us;1325us;1087us;1326us;1087us;1330us;1087us;1332us;1087us;1335us;1087us;1336us;1087us;1338us;1087us;1341us;1087us;1343us;1087us;1345us;1087us;1347us;1087us;1429us;1087us;1436us;1087us;1443us;1087us;1450us;1087us;1467us;1087us;1474us;1087us;1475us;1087us;1481us;1087us;1487us;1087us;1488us;1087us;1489us;1087us;1501us;1087us;1507us;1087us;1517us;1087us;1530us;1087us;1532us;1087us;1535us;1087us;1536us;1087us;1562us;1087us;1567us;1087us;1592us;1087us;1634us;1087us;1639us;1087us;2019us;1087us;2023us;1087us;7us;65535us;31us;275us;237us;275us;251us;275us;270us;275us;350us;762us;438us;762us;439us;762us;120us;65535us;6us;1058us;31us;274us;114us;1091us;116us;1091us;237us;274us;251us;274us;270us;273us;274us;1058us;350us;763us;422us;1058us;427us;1058us;438us;763us;439us;763us;468us;1058us;491us;1058us;751us;1058us;757us;1058us;807us;1058us;811us;1058us;821us;1058us;1028us;1058us;1034us;1058us;1050us;1058us;1052us;1058us;1055us;1058us;1058us;1058us;1077us;1058us;1082us;1058us;1088us;1058us;1091us;1058us;1094us;1058us;1100us;1058us;1104us;1058us;1108us;1058us;1114us;1058us;1116us;1091us;1121us;1091us;1123us;1091us;1125us;1091us;1127us;1091us;1129us;1091us;1131us;1091us;1135us;1058us;1145us;1058us;1152us;1058us;1158us;1091us;1160us;1091us;1165us;1058us;1169us;1058us;1172us;1058us;1176us;1058us;1179us;1058us;1182us;1058us;1184us;1058us;1187us;1091us;1189us;1058us;1238us;1091us;1240us;1091us;1244us;1091us;1246us;1091us;1248us;1091us;1250us;1091us;1252us;1091us;1254us;1091us;1256us;1091us;1258us;1091us;1260us;1091us;1262us;1091us;1264us;1091us;1266us;1091us;1268us;1091us;1270us;1091us;1272us;1091us;1274us;1091us;1276us;1091us;1278us;1091us;1280us;1091us;1282us;1091us;1284us;1091us;1285us;1091us;1286us;1091us;1287us;1091us;1290us;1058us;1300us;1058us;1325us;1091us;1326us;1058us;1330us;1091us;1332us;1058us;1335us;1091us;1336us;1058us;1338us;1091us;1341us;1091us;1343us;1091us;1345us;1091us;1347us;1091us;1429us;1058us;1436us;1091us;1443us;1058us;1450us;1058us;1467us;1058us;1474us;1058us;1475us;1058us;1481us;1058us;1487us;1058us;1488us;1058us;1489us;1058us;1501us;1091us;1507us;1058us;1517us;1058us;1530us;1058us;1532us;1091us;1535us;1091us;1536us;1091us;1562us;1091us;1567us;1091us;1592us;1091us;1634us;1058us;1639us;1058us;2019us;1091us;2023us;1091us;119us;65535us;6us;1097us;31us;1097us;114us;1097us;116us;1097us;237us;1097us;251us;1097us;274us;1097us;350us;764us;422us;1097us;427us;1097us;438us;764us;439us;764us;468us;1097us;491us;1097us;751us;1097us;757us;1097us;807us;1097us;811us;1097us;821us;1097us;1028us;1097us;1034us;1097us;1050us;1097us;1052us;1097us;1055us;1097us;1058us;1097us;1077us;1097us;1082us;1097us;1088us;1097us;1091us;1097us;1094us;1097us;1100us;1097us;1104us;1097us;1108us;1097us;1114us;1097us;1116us;1097us;1121us;1097us;1123us;1097us;1125us;1097us;1127us;1097us;1129us;1097us;1131us;1097us;1135us;1097us;1145us;1097us;1152us;1097us;1158us;1097us;1160us;1097us;1165us;1097us;1169us;1097us;1172us;1097us;1176us;1097us;1179us;1097us;1182us;1097us;1184us;1097us;1187us;1097us;1189us;1097us;1238us;1097us;1240us;1097us;1244us;1097us;1246us;1097us;1248us;1097us;1250us;1097us;1252us;1097us;1254us;1097us;1256us;1097us;1258us;1097us;1260us;1097us;1262us;1097us;1264us;1097us;1266us;1097us;1268us;1097us;1270us;1097us;1272us;1097us;1274us;1097us;1276us;1097us;1278us;1097us;1280us;1097us;1282us;1097us;1284us;1097us;1285us;1097us;1286us;1097us;1287us;1097us;1290us;1097us;1300us;1097us;1325us;1097us;1326us;1097us;1330us;1097us;1332us;1097us;1335us;1097us;1336us;1097us;1338us;1097us;1341us;1097us;1343us;1097us;1345us;1097us;1347us;1097us;1429us;1097us;1436us;1097us;1443us;1097us;1450us;1097us;1467us;1097us;1474us;1097us;1475us;1097us;1481us;1097us;1487us;1097us;1488us;1097us;1489us;1097us;1501us;1097us;1507us;1097us;1517us;1097us;1530us;1097us;1532us;1097us;1535us;1097us;1536us;1097us;1562us;1097us;1567us;1097us;1592us;1097us;1634us;1097us;1639us;1097us;2019us;1097us;2023us;1097us;3us;65535us;350us;441us;438us;440us;439us;440us;5us;65535us;755us;756us;758us;759us;1083us;1084us;1173us;1174us;1185us;1186us;120us;65535us;6us;750us;31us;750us;114us;750us;116us;750us;237us;750us;251us;750us;270us;750us;274us;750us;350us;750us;422us;750us;427us;750us;438us;750us;439us;750us;468us;750us;491us;750us;751us;750us;757us;750us;807us;750us;811us;750us;821us;750us;1028us;750us;1034us;750us;1050us;750us;1052us;750us;1055us;750us;1058us;750us;1077us;750us;1082us;750us;1088us;750us;1091us;750us;1094us;750us;1100us;750us;1104us;750us;1108us;750us;1114us;750us;1116us;750us;1121us;750us;1123us;750us;1125us;750us;1127us;750us;1129us;750us;1131us;750us;1135us;750us;1145us;750us;1152us;750us;1158us;750us;1160us;750us;1165us;750us;1169us;750us;1172us;750us;1176us;750us;1179us;750us;1182us;750us;1184us;750us;1187us;750us;1189us;750us;1238us;750us;1240us;750us;1244us;750us;1246us;750us;1248us;750us;1250us;750us;1252us;750us;1254us;750us;1256us;750us;1258us;750us;1260us;750us;1262us;750us;1264us;750us;1266us;750us;1268us;750us;1270us;750us;1272us;750us;1274us;750us;1276us;750us;1278us;750us;1280us;750us;1282us;750us;1284us;750us;1285us;750us;1286us;750us;1287us;750us;1290us;750us;1300us;750us;1325us;750us;1326us;750us;1330us;750us;1332us;750us;1335us;750us;1336us;750us;1338us;750us;1341us;750us;1343us;750us;1345us;750us;1347us;750us;1429us;750us;1436us;750us;1443us;750us;1450us;750us;1467us;750us;1474us;750us;1475us;750us;1481us;750us;1487us;750us;1488us;750us;1489us;750us;1501us;750us;1507us;750us;1517us;750us;1530us;750us;1532us;750us;1535us;750us;1536us;750us;1562us;750us;1567us;750us;1592us;750us;1634us;750us;1639us;750us;2019us;750us;2023us;750us;1us;65535us;772us;773us;1us;65535us;772us;775us;3us;65535us;772us;776us;777us;778us;779us;780us;2us;65535us;781us;782us;794us;785us;1us;65535us;767us;768us;4us;65535us;748us;749us;754us;755us;1604us;1605us;1606us;1607us;2us;65535us;795us;796us;798us;799us;5us;65535us;748us;795us;754us;795us;797us;798us;1604us;795us;1606us;795us;2us;65535us;546us;801us;800us;801us;1us;65535us;807us;808us;2us;65535us;807us;815us;811us;812us;1us;65535us;816us;817us;1us;65535us;817us;818us;1us;65535us;819us;820us;2us;65535us;819us;825us;823us;824us;301us;65535us;6us;862us;8us;1860us;31us;862us;111us;1860us;114us;862us;116us;862us;149us;1860us;178us;1860us;184us;1860us;188us;1860us;190us;1860us;201us;1860us;237us;862us;251us;862us;274us;862us;290us;1860us;331us;862us;335us;862us;340us;862us;385us;1860us;419us;862us;422us;862us;424us;862us;427us;862us;439us;1860us;446us;1860us;454us;1860us;465us;862us;468us;862us;481us;1860us;491us;862us;497us;1860us;522us;1860us;525us;862us;561us;1860us;569us;1860us;570us;1860us;612us;1860us;625us;1860us;629us;1860us;634us;1860us;639us;1860us;642us;1860us;652us;1860us;663us;1860us;678us;1860us;680us;1860us;683us;1860us;687us;1860us;689us;862us;700us;862us;704us;1860us;707us;1860us;710us;1860us;713us;1860us;729us;1860us;742us;1860us;751us;862us;757us;862us;804us;862us;807us;862us;811us;862us;821us;862us;827us;1860us;871us;1860us;897us;862us;899us;862us;900us;862us;904us;862us;905us;862us;908us;862us;910us;862us;911us;862us;920us;862us;924us;862us;925us;862us;927us;862us;929us;862us;932us;862us;934us;862us;936us;1860us;939us;862us;943us;862us;945us;862us;947us;862us;955us;862us;958us;862us;969us;862us;977us;862us;998us;862us;1000us;862us;1003us;1860us;1006us;862us;1007us;862us;1009us;862us;1010us;862us;1013us;862us;1015us;862us;1016us;862us;1022us;862us;1026us;862us;1028us;862us;1034us;862us;1044us;1860us;1050us;862us;1052us;862us;1055us;862us;1058us;862us;1076us;862us;1077us;862us;1081us;862us;1082us;862us;1088us;862us;1091us;862us;1094us;862us;1100us;862us;1104us;862us;1108us;862us;1114us;862us;1116us;862us;1121us;862us;1123us;862us;1125us;862us;1127us;862us;1129us;862us;1131us;862us;1133us;862us;1135us;862us;1145us;862us;1152us;862us;1158us;862us;1160us;862us;1164us;862us;1165us;862us;1169us;862us;1171us;862us;1172us;862us;1176us;862us;1179us;862us;1182us;862us;1184us;862us;1187us;862us;1189us;862us;1229us;1860us;1232us;1860us;1235us;1860us;1238us;862us;1240us;862us;1244us;862us;1246us;862us;1248us;862us;1250us;862us;1252us;862us;1254us;862us;1256us;862us;1258us;862us;1260us;862us;1262us;862us;1264us;862us;1266us;862us;1268us;862us;1270us;862us;1272us;862us;1274us;862us;1276us;862us;1278us;862us;1280us;862us;1282us;862us;1284us;862us;1285us;862us;1286us;862us;1287us;862us;1290us;862us;1300us;862us;1303us;862us;1305us;862us;1311us;862us;1318us;862us;1320us;862us;1325us;862us;1326us;862us;1330us;862us;1332us;862us;1335us;862us;1336us;862us;1338us;862us;1341us;862us;1343us;862us;1345us;862us;1347us;862us;1349us;862us;1350us;862us;1351us;862us;1352us;862us;1354us;862us;1355us;862us;1357us;862us;1358us;862us;1360us;862us;1361us;862us;1363us;862us;1364us;862us;1366us;862us;1367us;862us;1369us;862us;1370us;862us;1372us;1860us;1373us;1860us;1376us;862us;1377us;862us;1384us;862us;1386us;862us;1388us;862us;1389us;862us;1390us;862us;1391us;862us;1395us;862us;1400us;862us;1406us;862us;1407us;862us;1410us;862us;1411us;862us;1429us;862us;1436us;862us;1443us;862us;1450us;862us;1467us;862us;1474us;862us;1475us;862us;1481us;862us;1487us;862us;1488us;862us;1489us;862us;1501us;862us;1507us;862us;1515us;1860us;1517us;862us;1530us;862us;1532us;862us;1535us;862us;1536us;862us;1542us;862us;1548us;1860us;1551us;1860us;1553us;1860us;1555us;1860us;1557us;862us;1562us;862us;1567us;862us;1592us;862us;1617us;1860us;1625us;862us;1632us;862us;1634us;862us;1637us;862us;1639us;862us;1649us;862us;1651us;862us;1655us;1860us;1657us;1860us;1658us;1860us;1662us;1860us;1666us;1860us;1669us;1860us;1672us;1860us;1675us;1860us;1677us;1860us;1679us;1860us;1684us;1860us;1688us;1860us;1693us;1860us;1698us;1860us;1701us;1860us;1704us;1860us;1707us;1860us;1712us;1860us;1715us;1860us;1717us;1860us;1720us;1860us;1724us;1860us;1727us;1860us;1729us;1860us;1732us;1860us;1735us;1860us;1737us;1860us;1749us;1860us;1755us;1860us;1758us;1860us;1825us;1860us;1829us;1860us;1835us;1860us;1842us;1860us;1846us;1860us;1852us;1860us;1853us;1860us;1862us;862us;1876us;1860us;1878us;1860us;1889us;1860us;2019us;862us;2023us;862us;1us;65535us;856us;857us;4us;65535us;860us;861us;1742us;859us;1833us;859us;1904us;859us;3us;65535us;1742us;1743us;1833us;1834us;1904us;1905us;208us;65535us;6us;1456us;31us;1456us;114us;1456us;116us;1456us;237us;1456us;251us;1456us;274us;1456us;331us;1456us;335us;1456us;340us;1456us;419us;965us;422us;1456us;424us;965us;427us;1456us;465us;965us;468us;1456us;491us;1456us;525us;1456us;689us;1456us;700us;1456us;751us;1456us;757us;1456us;804us;965us;807us;1456us;811us;1456us;821us;1456us;897us;965us;899us;965us;900us;965us;904us;965us;905us;965us;908us;965us;910us;965us;911us;965us;920us;965us;924us;965us;925us;965us;927us;965us;929us;965us;932us;965us;934us;965us;939us;965us;943us;965us;945us;965us;947us;965us;955us;965us;958us;965us;969us;965us;977us;965us;998us;965us;1000us;965us;1006us;965us;1007us;965us;1009us;965us;1010us;965us;1013us;965us;1015us;965us;1016us;965us;1022us;965us;1026us;965us;1028us;1456us;1034us;1456us;1050us;1456us;1052us;1456us;1055us;1456us;1058us;1456us;1076us;965us;1077us;1456us;1081us;965us;1082us;1456us;1088us;1456us;1091us;1456us;1094us;1456us;1100us;1456us;1104us;1456us;1108us;1456us;1114us;1456us;1116us;1456us;1121us;1456us;1123us;1456us;1125us;1456us;1127us;1456us;1129us;1456us;1131us;1456us;1133us;965us;1135us;1456us;1145us;1456us;1152us;1456us;1158us;1456us;1160us;1456us;1164us;965us;1165us;1456us;1169us;1456us;1171us;965us;1172us;1456us;1176us;1456us;1179us;1456us;1182us;1456us;1184us;1456us;1187us;1456us;1189us;1456us;1238us;1456us;1240us;1456us;1244us;1456us;1246us;1456us;1248us;1456us;1250us;1456us;1252us;1456us;1254us;1456us;1256us;1456us;1258us;1456us;1260us;1456us;1262us;1456us;1264us;1456us;1266us;1456us;1268us;1456us;1270us;1456us;1272us;1456us;1274us;1456us;1276us;1456us;1278us;1456us;1280us;1456us;1282us;1456us;1284us;1456us;1285us;1456us;1286us;1456us;1287us;1456us;1290us;1456us;1300us;1456us;1303us;965us;1305us;965us;1311us;965us;1318us;965us;1320us;965us;1325us;1456us;1326us;1456us;1330us;1456us;1332us;1456us;1335us;1456us;1336us;1456us;1338us;1456us;1341us;1456us;1343us;1456us;1345us;1456us;1347us;1456us;1349us;1456us;1350us;1456us;1351us;1456us;1352us;1456us;1354us;1456us;1355us;1456us;1357us;1456us;1358us;1456us;1360us;1456us;1361us;1456us;1363us;1456us;1364us;1456us;1366us;1456us;1367us;1456us;1369us;1456us;1370us;1456us;1376us;1456us;1377us;1456us;1384us;1456us;1386us;1456us;1388us;1456us;1389us;1456us;1390us;1456us;1391us;1456us;1395us;1456us;1400us;1456us;1406us;1456us;1407us;1456us;1410us;1456us;1411us;1456us;1429us;1456us;1436us;1456us;1443us;1456us;1450us;1456us;1467us;1456us;1474us;1456us;1475us;1456us;1481us;1456us;1487us;1456us;1488us;1456us;1489us;1456us;1501us;1456us;1507us;1456us;1517us;1456us;1530us;1456us;1532us;1456us;1535us;1456us;1536us;1456us;1542us;1456us;1557us;1456us;1562us;1456us;1567us;1456us;1592us;1456us;1625us;1456us;1632us;965us;1634us;1456us;1637us;965us;1639us;1456us;1649us;965us;1651us;965us;1862us;1456us;2019us;1456us;2023us;1456us;3us;65535us;419us;420us;424us;425us;804us;805us;3us;65535us;874us;869us;875us;870us;878us;870us;2us;65535us;875us;876us;878us;879us;1us;65535us;365us;366us;1us;65535us;365us;877us;14us;65535us;419us;865us;424us;865us;804us;865us;899us;886us;900us;887us;904us;888us;905us;889us;908us;890us;910us;891us;911us;892us;1076us;893us;1081us;894us;1164us;895us;1171us;896us;14us;65535us;419us;901us;424us;901us;804us;901us;899us;901us;900us;901us;904us;901us;905us;901us;908us;901us;910us;901us;911us;901us;1076us;901us;1081us;901us;1164us;901us;1171us;901us;14us;65535us;419us;902us;424us;902us;804us;902us;899us;902us;900us;902us;904us;902us;905us;902us;908us;902us;910us;902us;911us;902us;1076us;902us;1081us;902us;1164us;902us;1171us;902us;3us;65535us;914us;915us;916us;917us;939us;940us;3us;65535us;914us;912us;916us;912us;939us;912us;40us;65535us;419us;903us;424us;903us;804us;903us;897us;898us;899us;903us;900us;903us;904us;903us;905us;903us;908us;903us;910us;903us;911us;903us;920us;1008us;939us;1008us;955us;1008us;958us;1008us;969us;1008us;977us;1008us;998us;999us;1000us;1008us;1006us;1008us;1007us;1008us;1009us;1008us;1010us;1008us;1013us;1008us;1015us;1008us;1016us;1008us;1022us;1008us;1026us;1008us;1076us;903us;1081us;903us;1133us;1008us;1164us;903us;1171us;903us;1303us;1008us;1305us;1008us;1311us;1008us;1318us;1008us;1320us;1008us;1649us;1008us;1651us;1008us;6us;65535us;924us;931us;925us;926us;927us;928us;929us;930us;932us;933us;934us;935us;11us;65535us;924us;942us;925us;942us;927us;942us;929us;942us;932us;942us;934us;942us;943us;944us;945us;946us;947us;948us;1632us;1633us;1637us;1638us;52us;65535us;419us;938us;424us;938us;465us;466us;804us;938us;897us;938us;899us;938us;900us;938us;904us;938us;905us;938us;908us;938us;910us;938us;911us;938us;920us;938us;924us;943us;925us;943us;927us;943us;929us;943us;932us;943us;934us;943us;939us;938us;943us;943us;945us;943us;947us;943us;955us;938us;958us;938us;969us;938us;977us;938us;998us;938us;1000us;938us;1006us;938us;1007us;938us;1009us;938us;1010us;938us;1013us;938us;1015us;938us;1016us;938us;1022us;938us;1026us;938us;1076us;938us;1081us;938us;1133us;938us;1164us;938us;1171us;938us;1303us;938us;1305us;938us;1311us;938us;1318us;938us;1320us;938us;1632us;943us;1637us;943us;1649us;938us;1651us;938us;2us;65535us;939us;970us;969us;970us;24us;65535us;920us;921us;939us;984us;955us;995us;958us;995us;969us;984us;977us;992us;1000us;985us;1006us;986us;1007us;987us;1009us;988us;1010us;989us;1013us;990us;1015us;991us;1016us;993us;1022us;994us;1026us;995us;1133us;996us;1303us;997us;1305us;997us;1311us;997us;1318us;997us;1320us;997us;1649us;997us;1651us;997us;24us;65535us;920us;1001us;939us;1001us;955us;1001us;958us;1001us;969us;1001us;977us;978us;1000us;1001us;1006us;1001us;1007us;1001us;1009us;1001us;1010us;1001us;1013us;1001us;1015us;1001us;1016us;1001us;1022us;1001us;1026us;1001us;1133us;1001us;1303us;1001us;1305us;1001us;1311us;1001us;1318us;1001us;1320us;1001us;1649us;1001us;1651us;1001us;24us;65535us;920us;1002us;939us;1002us;955us;1002us;958us;1002us;969us;1002us;977us;1002us;1000us;1002us;1006us;1002us;1007us;1002us;1009us;1002us;1010us;1002us;1013us;1002us;1015us;1002us;1016us;1002us;1022us;1002us;1026us;1002us;1133us;1002us;1303us;1002us;1305us;1002us;1311us;1002us;1318us;1002us;1320us;1002us;1649us;1002us;1651us;1002us;2us;65535us;950us;951us;1019us;1020us;2us;65535us;950us;1017us;1019us;1017us;3us;65535us;955us;956us;958us;959us;1026us;1027us;27us;65535us;274us;1092us;422us;423us;427us;428us;468us;469us;491us;492us;751us;752us;757us;758us;821us;822us;1058us;1092us;1077us;1078us;1082us;1083us;1091us;1092us;1094us;1095us;1114us;1115us;1135us;1136us;1145us;1146us;1152us;1153us;1165us;1166us;1169us;1170us;1172us;1173us;1176us;1177us;1182us;1183us;1184us;1185us;1290us;1291us;1332us;1333us;1336us;1337us;1634us;1635us;6us;65535us;1125us;1126us;1127us;1128us;1240us;1241us;1562us;1563us;1567us;1568us;1592us;1593us;5us;65535us;1108us;1109us;1189us;1190us;1326us;1327us;1530us;1531us;1639us;1640us;52us;65535us;6us;1047us;274us;1033us;422us;1033us;427us;1033us;468us;1033us;491us;1033us;751us;1033us;757us;1033us;807us;816us;811us;816us;821us;1033us;1028us;1029us;1034us;1035us;1055us;1056us;1058us;1033us;1077us;1033us;1082us;1033us;1088us;1089us;1091us;1033us;1094us;1033us;1100us;1101us;1104us;1105us;1108us;1039us;1114us;1033us;1135us;1033us;1145us;1033us;1152us;1033us;1165us;1033us;1169us;1033us;1172us;1033us;1176us;1033us;1179us;1180us;1182us;1033us;1184us;1033us;1189us;1039us;1290us;1033us;1300us;1301us;1326us;1039us;1332us;1033us;1336us;1033us;1443us;1448us;1450us;1451us;1467us;1468us;1474us;1476us;1475us;1476us;1487us;1509us;1488us;1509us;1489us;1509us;1507us;1508us;1530us;1039us;1634us;1033us;1639us;1039us;1us;65535us;6us;7us;57us;65535us;6us;1043us;274us;1043us;422us;1043us;427us;1043us;468us;1043us;491us;1043us;751us;1043us;757us;1043us;807us;1043us;811us;1043us;821us;1043us;1028us;1043us;1034us;1043us;1050us;1051us;1052us;1053us;1055us;1043us;1058us;1043us;1077us;1043us;1082us;1043us;1088us;1043us;1091us;1043us;1094us;1043us;1100us;1043us;1104us;1043us;1108us;1043us;1114us;1043us;1135us;1043us;1145us;1043us;1152us;1043us;1165us;1043us;1169us;1043us;1172us;1043us;1176us;1043us;1179us;1043us;1182us;1043us;1184us;1043us;1189us;1043us;1290us;1043us;1300us;1043us;1326us;1043us;1332us;1043us;1336us;1043us;1429us;1527us;1443us;1043us;1450us;1043us;1467us;1043us;1474us;1043us;1475us;1043us;1481us;1528us;1487us;1043us;1488us;1043us;1489us;1043us;1507us;1043us;1517us;1529us;1530us;1043us;1634us;1043us;1639us;1043us;193us;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;2064us;319us;2064us;367us;370us;375us;378us;389us;2064us;395us;396us;399us;400us;426us;430us;442us;445us;446us;449us;465us;473us;467us;2064us;479us;485us;480us;484us;481us;483us;488us;496us;490us;2064us;497us;499us;522us;2064us;530us;532us;538us;540us;564us;565us;575us;577us;584us;586us;594us;599us;677us;679us;680us;686us;683us;685us;704us;706us;728us;732us;729us;731us;737us;740us;742us;744us;755us;766us;758us;766us;806us;810us;812us;814us;871us;873us;878us;885us;879us;882us;904us;2064us;905us;2064us;908us;2064us;918us;923us;919us;923us;920us;922us;939us;975us;969us;975us;970us;972us;977us;983us;978us;980us;996us;1157us;1003us;1005us;1009us;2064us;1010us;2064us;1013us;2064us;1021us;1024us;1022us;1023us;1029us;1031us;1044us;1046us;1083us;766us;1101us;1103us;1105us;1107us;1108us;1041us;1109us;1111us;1116us;1120us;1117us;1119us;1129us;1297us;1131us;1297us;1133us;2064us;1134us;2064us;1135us;2064us;1136us;2064us;1144us;1151us;1145us;1150us;1146us;1148us;1158us;1162us;1160us;1163us;1173us;766us;1185us;766us;1189us;1041us;1214us;1296us;1218us;1340us;1229us;1231us;1232us;1234us;1235us;1237us;1243us;1438us;1244us;2064us;1246us;2064us;1248us;2064us;1250us;2064us;1252us;2064us;1254us;2064us;1256us;2064us;1258us;2064us;1260us;2064us;1262us;2064us;1264us;2064us;1266us;2064us;1268us;2064us;1270us;2064us;1272us;2064us;1274us;2064us;1276us;2064us;1278us;2064us;1280us;2064us;1282us;2064us;1291us;1293us;1305us;1309us;1306us;1308us;1316us;1324us;1317us;1323us;1318us;1322us;1326us;1041us;1330us;1331us;1332us;1334us;1341us;2064us;1343us;2064us;1345us;2064us;1347us;2064us;1380us;1442us;1390us;1401us;1417us;1442us;1420us;1442us;1429us;1434us;1430us;1432us;1450us;1455us;1451us;1453us;1468us;1470us;1474us;1480us;1475us;1480us;1476us;1478us;1481us;1486us;1482us;1484us;1487us;1500us;1488us;1500us;1489us;1500us;1491us;2058us;1517us;1522us;1518us;1520us;1530us;1041us;1532us;2064us;1562us;1566us;1591us;2064us;1592us;2064us;1625us;1630us;1626us;1628us;1639us;1042us;1640us;1642us;1658us;1660us;1662us;1664us;1666us;1668us;1672us;1674us;1679us;1681us;1684us;1686us;1688us;1690us;1693us;1695us;1698us;1700us;1704us;1706us;1712us;1714us;1717us;1719us;1720us;1722us;1724us;1726us;1729us;1731us;1744us;1858us;1828us;1881us;1847us;1850us;1848us;1850us;1852us;1859us;1853us;1857us;1854us;1856us;1871us;2064us;1876us;1887us;1878us;2064us;1883us;2064us;1924us;2064us;1974us;2064us;4us;65535us;1079us;1080us;1085us;1086us;1168us;1169us;1175us;1176us;116us;65535us;6us;1049us;31us;32us;114us;115us;116us;117us;237us;252us;251us;252us;274us;1049us;422us;1049us;427us;1049us;468us;1049us;491us;1049us;751us;1049us;757us;1049us;807us;1049us;811us;1049us;821us;1049us;1028us;1049us;1034us;1049us;1050us;1049us;1052us;1049us;1055us;1049us;1058us;1049us;1077us;1049us;1082us;1049us;1088us;1049us;1091us;1049us;1094us;1049us;1100us;1049us;1104us;1049us;1108us;1049us;1114us;1049us;1116us;1117us;1121us;1122us;1123us;1124us;1125us;1038us;1127us;1038us;1129us;1214us;1131us;1214us;1135us;1049us;1145us;1049us;1152us;1049us;1158us;1159us;1160us;1161us;1165us;1049us;1169us;1049us;1172us;1049us;1176us;1049us;1179us;1049us;1182us;1049us;1184us;1049us;1187us;1188us;1189us;1049us;1238us;1191us;1240us;1038us;1244us;1192us;1246us;1193us;1248us;1194us;1250us;1195us;1252us;1196us;1254us;1197us;1256us;1198us;1258us;1199us;1260us;1200us;1262us;1201us;1264us;1202us;1266us;1203us;1268us;1204us;1270us;1205us;1272us;1206us;1274us;1207us;1276us;1208us;1278us;1209us;1280us;1210us;1282us;1211us;1284us;1212us;1285us;1213us;1286us;1213us;1287us;1213us;1290us;1049us;1300us;1049us;1325us;1215us;1326us;1049us;1330us;1216us;1332us;1049us;1335us;1217us;1336us;1049us;1338us;1218us;1341us;1219us;1343us;1220us;1345us;1221us;1347us;1223us;1429us;1049us;1436us;1222us;1443us;1049us;1450us;1049us;1467us;1049us;1474us;1049us;1475us;1049us;1481us;1049us;1487us;1049us;1488us;1049us;1489us;1049us;1501us;1224us;1507us;1049us;1517us;1049us;1530us;1049us;1532us;1225us;1535us;1226us;1536us;1227us;1562us;1038us;1567us;1038us;1592us;1038us;1634us;1049us;1639us;1049us;2019us;1228us;2023us;1228us;2us;65535us;1129us;1130us;1131us;1132us;1us;65535us;1425us;1426us;4us;65535us;1101us;1102us;1105us;1106us;1109us;1110us;1112us;1113us;4us;65535us;1303us;1304us;1305us;1306us;1649us;1650us;1651us;1652us;7us;65535us;1303us;1316us;1305us;1316us;1311us;1316us;1318us;1316us;1320us;1316us;1649us;1316us;1651us;1316us;7us;65535us;1303us;1310us;1305us;1310us;1311us;1312us;1318us;1319us;1320us;1321us;1649us;1310us;1651us;1310us;1us;65535us;997us;1315us;1us;65535us;1316us;1317us;2us;65535us;1117us;1118us;1218us;1339us;2us;65535us;1117us;1328us;1218us;1328us;1us;65535us;1328us;1329us;116us;65535us;6us;1242us;31us;1242us;114us;1242us;116us;1242us;237us;1242us;251us;1242us;274us;1242us;422us;1242us;427us;1242us;468us;1242us;491us;1242us;751us;1242us;757us;1242us;807us;1242us;811us;1242us;821us;1242us;1028us;1242us;1034us;1242us;1050us;1242us;1052us;1242us;1055us;1242us;1058us;1242us;1077us;1242us;1082us;1242us;1088us;1242us;1091us;1242us;1094us;1242us;1100us;1242us;1104us;1242us;1108us;1242us;1114us;1242us;1116us;1242us;1121us;1242us;1123us;1242us;1125us;1242us;1127us;1242us;1129us;1242us;1131us;1242us;1135us;1242us;1145us;1242us;1152us;1242us;1158us;1242us;1160us;1242us;1165us;1242us;1169us;1242us;1172us;1242us;1176us;1242us;1179us;1242us;1182us;1242us;1184us;1242us;1187us;1242us;1189us;1242us;1238us;1242us;1240us;1242us;1244us;1242us;1246us;1242us;1248us;1242us;1250us;1242us;1252us;1242us;1254us;1242us;1256us;1242us;1258us;1242us;1260us;1242us;1262us;1242us;1264us;1242us;1266us;1242us;1268us;1242us;1270us;1242us;1272us;1242us;1274us;1242us;1276us;1242us;1278us;1242us;1280us;1242us;1282us;1242us;1284us;1242us;1285us;1242us;1286us;1242us;1287us;1242us;1290us;1242us;1300us;1242us;1325us;1242us;1326us;1242us;1330us;1242us;1332us;1242us;1335us;1242us;1336us;1242us;1338us;1242us;1341us;1242us;1343us;1242us;1345us;1242us;1347us;1242us;1429us;1242us;1436us;1243us;1443us;1242us;1450us;1242us;1467us;1242us;1474us;1242us;1475us;1242us;1481us;1242us;1487us;1242us;1488us;1242us;1489us;1242us;1501us;1242us;1507us;1242us;1517us;1242us;1530us;1242us;1532us;1242us;1535us;1242us;1536us;1242us;1562us;1242us;1567us;1242us;1592us;1242us;1634us;1242us;1639us;1242us;2019us;1242us;2023us;1242us;134us;65535us;6us;1239us;31us;1239us;114us;1239us;116us;1239us;237us;1239us;251us;1239us;274us;1239us;422us;1239us;427us;1239us;468us;1239us;491us;1239us;751us;1239us;757us;1239us;807us;1239us;811us;1239us;821us;1239us;1028us;1239us;1034us;1239us;1050us;1239us;1052us;1239us;1055us;1239us;1058us;1239us;1077us;1239us;1082us;1239us;1088us;1239us;1091us;1239us;1094us;1239us;1100us;1239us;1104us;1239us;1108us;1239us;1114us;1239us;1116us;1239us;1121us;1239us;1123us;1239us;1125us;1239us;1127us;1239us;1129us;1239us;1131us;1239us;1135us;1239us;1145us;1239us;1152us;1239us;1158us;1239us;1160us;1239us;1165us;1239us;1169us;1239us;1172us;1239us;1176us;1239us;1179us;1239us;1182us;1239us;1184us;1239us;1187us;1239us;1189us;1239us;1238us;1239us;1240us;1239us;1244us;1239us;1246us;1239us;1248us;1239us;1250us;1239us;1252us;1239us;1254us;1239us;1256us;1239us;1258us;1239us;1260us;1239us;1262us;1239us;1264us;1239us;1266us;1239us;1268us;1239us;1270us;1239us;1272us;1239us;1274us;1239us;1276us;1239us;1278us;1239us;1280us;1239us;1282us;1239us;1284us;1239us;1285us;1239us;1286us;1239us;1287us;1239us;1290us;1239us;1300us;1239us;1325us;1239us;1326us;1239us;1330us;1239us;1332us;1239us;1335us;1239us;1336us;1239us;1338us;1239us;1341us;1239us;1343us;1239us;1345us;1239us;1347us;1239us;1349us;1353us;1350us;1353us;1351us;1353us;1352us;1353us;1354us;1356us;1355us;1356us;1357us;1359us;1358us;1359us;1360us;1362us;1361us;1362us;1363us;1365us;1364us;1365us;1366us;1368us;1367us;1368us;1369us;1371us;1370us;1371us;1384us;1385us;1386us;1387us;1429us;1239us;1436us;1239us;1443us;1239us;1450us;1239us;1467us;1239us;1474us;1239us;1475us;1239us;1481us;1239us;1487us;1239us;1488us;1239us;1489us;1239us;1501us;1239us;1507us;1239us;1517us;1239us;1530us;1239us;1532us;1239us;1535us;1239us;1536us;1239us;1562us;1239us;1567us;1239us;1592us;1239us;1634us;1239us;1639us;1239us;2019us;1239us;2023us;1239us;136us;65535us;6us;1388us;31us;1388us;114us;1388us;116us;1388us;237us;1388us;251us;1388us;274us;1388us;422us;1388us;427us;1388us;468us;1388us;491us;1388us;751us;1388us;757us;1388us;807us;1388us;811us;1388us;821us;1388us;1028us;1388us;1034us;1388us;1050us;1388us;1052us;1388us;1055us;1388us;1058us;1388us;1077us;1388us;1082us;1388us;1088us;1388us;1091us;1388us;1094us;1388us;1100us;1388us;1104us;1388us;1108us;1388us;1114us;1388us;1116us;1388us;1121us;1388us;1123us;1388us;1125us;1388us;1127us;1388us;1129us;1388us;1131us;1388us;1135us;1388us;1145us;1388us;1152us;1388us;1158us;1388us;1160us;1388us;1165us;1388us;1169us;1388us;1172us;1388us;1176us;1388us;1179us;1388us;1182us;1388us;1184us;1388us;1187us;1388us;1189us;1388us;1238us;1388us;1240us;1388us;1244us;1388us;1246us;1388us;1248us;1388us;1250us;1388us;1252us;1388us;1254us;1388us;1256us;1388us;1258us;1388us;1260us;1388us;1262us;1388us;1264us;1388us;1266us;1388us;1268us;1388us;1270us;1388us;1272us;1388us;1274us;1388us;1276us;1388us;1278us;1388us;1280us;1388us;1282us;1388us;1284us;1388us;1285us;1388us;1286us;1388us;1287us;1388us;1290us;1388us;1300us;1388us;1325us;1388us;1326us;1388us;1330us;1388us;1332us;1388us;1335us;1388us;1336us;1388us;1338us;1388us;1341us;1388us;1343us;1388us;1345us;1388us;1347us;1388us;1349us;1388us;1350us;1388us;1351us;1388us;1352us;1388us;1354us;1388us;1355us;1388us;1357us;1388us;1358us;1388us;1360us;1388us;1361us;1388us;1363us;1388us;1364us;1388us;1366us;1388us;1367us;1388us;1369us;1388us;1370us;1388us;1384us;1388us;1386us;1388us;1400us;1390us;1429us;1388us;1436us;1388us;1443us;1388us;1450us;1388us;1467us;1388us;1474us;1388us;1475us;1388us;1481us;1388us;1487us;1388us;1488us;1388us;1489us;1388us;1501us;1388us;1507us;1388us;1517us;1389us;1530us;1388us;1532us;1388us;1535us;1388us;1536us;1388us;1562us;1388us;1567us;1388us;1592us;1388us;1625us;1391us;1634us;1388us;1639us;1388us;2019us;1388us;2023us;1388us;5us;65535us;1388us;1392us;1389us;1392us;1390us;1392us;1391us;1392us;1542us;1545us;149us;65535us;6us;1394us;31us;1394us;114us;1394us;116us;1394us;237us;1394us;251us;1394us;274us;1394us;422us;1394us;427us;1394us;468us;1394us;491us;1394us;689us;690us;700us;701us;751us;1394us;757us;1394us;807us;1394us;811us;1394us;821us;1394us;1028us;1394us;1034us;1394us;1050us;1394us;1052us;1394us;1055us;1394us;1058us;1394us;1077us;1394us;1082us;1394us;1088us;1394us;1091us;1394us;1094us;1394us;1100us;1394us;1104us;1394us;1108us;1394us;1114us;1394us;1116us;1394us;1121us;1394us;1123us;1394us;1125us;1394us;1127us;1394us;1129us;1394us;1131us;1394us;1135us;1394us;1145us;1394us;1152us;1394us;1158us;1394us;1160us;1394us;1165us;1394us;1169us;1394us;1172us;1394us;1176us;1394us;1179us;1394us;1182us;1394us;1184us;1394us;1187us;1394us;1189us;1394us;1238us;1394us;1240us;1394us;1244us;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;1285us;1394us;1286us;1394us;1287us;1394us;1290us;1394us;1300us;1394us;1325us;1394us;1326us;1394us;1330us;1394us;1332us;1394us;1335us;1394us;1336us;1394us;1338us;1394us;1341us;1394us;1343us;1394us;1345us;1394us;1347us;1394us;1349us;1394us;1350us;1394us;1351us;1394us;1352us;1394us;1354us;1394us;1355us;1394us;1357us;1394us;1358us;1394us;1360us;1394us;1361us;1394us;1363us;1394us;1364us;1394us;1366us;1394us;1367us;1394us;1369us;1394us;1370us;1394us;1384us;1394us;1386us;1394us;1388us;1397us;1389us;1397us;1390us;1397us;1391us;1397us;1395us;1396us;1400us;1393us;1406us;1402us;1407us;1403us;1410us;1404us;1411us;1404us;1429us;1394us;1436us;1394us;1443us;1394us;1450us;1394us;1467us;1394us;1474us;1394us;1475us;1394us;1481us;1394us;1487us;1394us;1488us;1394us;1489us;1394us;1501us;1394us;1507us;1394us;1517us;1394us;1530us;1394us;1532us;1394us;1535us;1394us;1536us;1394us;1542us;1397us;1562us;1394us;1567us;1394us;1592us;1394us;1625us;1394us;1634us;1394us;1639us;1394us;1862us;1405us;2019us;1394us;2023us;1394us;3us;65535us;1380us;1381us;1417us;1418us;1420us;1421us;156us;65535us;6us;1439us;31us;1439us;114us;1439us;116us;1439us;237us;1439us;251us;1439us;274us;1439us;331us;1546us;335us;1546us;340us;1546us;422us;1439us;427us;1439us;468us;1439us;491us;1439us;525us;526us;689us;1439us;700us;1439us;751us;1439us;757us;1439us;807us;1439us;811us;1439us;821us;1439us;1028us;1439us;1034us;1439us;1050us;1439us;1052us;1439us;1055us;1439us;1058us;1439us;1077us;1439us;1082us;1439us;1088us;1439us;1091us;1439us;1094us;1439us;1100us;1439us;1104us;1439us;1108us;1439us;1114us;1439us;1116us;1439us;1121us;1439us;1123us;1439us;1125us;1439us;1127us;1439us;1129us;1439us;1131us;1439us;1135us;1439us;1145us;1439us;1152us;1439us;1158us;1439us;1160us;1439us;1165us;1439us;1169us;1439us;1172us;1439us;1176us;1439us;1179us;1439us;1182us;1439us;1184us;1439us;1187us;1439us;1189us;1439us;1238us;1439us;1240us;1439us;1244us;1439us;1246us;1439us;1248us;1439us;1250us;1439us;1252us;1439us;1254us;1439us;1256us;1439us;1258us;1439us;1260us;1439us;1262us;1439us;1264us;1439us;1266us;1439us;1268us;1439us;1270us;1439us;1272us;1439us;1274us;1439us;1276us;1439us;1278us;1439us;1280us;1439us;1282us;1439us;1284us;1439us;1285us;1439us;1286us;1439us;1287us;1439us;1290us;1439us;1300us;1439us;1325us;1439us;1326us;1439us;1330us;1439us;1332us;1439us;1335us;1439us;1336us;1439us;1338us;1439us;1341us;1439us;1343us;1439us;1345us;1439us;1347us;1439us;1349us;1439us;1350us;1439us;1351us;1439us;1352us;1439us;1354us;1439us;1355us;1439us;1357us;1439us;1358us;1439us;1360us;1439us;1361us;1439us;1363us;1439us;1364us;1439us;1366us;1439us;1367us;1439us;1369us;1439us;1370us;1439us;1376us;1378us;1377us;1379us;1384us;1439us;1386us;1439us;1388us;1439us;1389us;1439us;1390us;1439us;1391us;1439us;1395us;1439us;1400us;1439us;1406us;1439us;1407us;1439us;1410us;1439us;1411us;1439us;1429us;1439us;1436us;1439us;1443us;1439us;1450us;1439us;1467us;1439us;1474us;1439us;1475us;1439us;1481us;1439us;1487us;1439us;1488us;1439us;1489us;1439us;1501us;1439us;1507us;1439us;1517us;1439us;1530us;1439us;1532us;1439us;1535us;1439us;1536us;1439us;1542us;1439us;1557us;1546us;1562us;1439us;1567us;1439us;1592us;1439us;1625us;1439us;1634us;1439us;1639us;1439us;1862us;1439us;2019us;1439us;2023us;1439us;156us;65535us;6us;1466us;31us;1466us;114us;1466us;116us;1466us;237us;1466us;251us;1466us;274us;1466us;331us;1466us;335us;1466us;340us;1466us;422us;1466us;427us;1466us;468us;1466us;491us;1466us;525us;1466us;689us;1466us;700us;1466us;751us;1466us;757us;1466us;807us;1466us;811us;1466us;821us;1466us;1028us;1466us;1034us;1466us;1050us;1466us;1052us;1466us;1055us;1466us;1058us;1466us;1077us;1466us;1082us;1466us;1088us;1466us;1091us;1466us;1094us;1466us;1100us;1466us;1104us;1466us;1108us;1466us;1114us;1466us;1116us;1466us;1121us;1466us;1123us;1466us;1125us;1466us;1127us;1466us;1129us;1466us;1131us;1466us;1135us;1466us;1145us;1466us;1152us;1466us;1158us;1466us;1160us;1466us;1165us;1466us;1169us;1466us;1172us;1466us;1176us;1466us;1179us;1466us;1182us;1466us;1184us;1466us;1187us;1466us;1189us;1466us;1238us;1466us;1240us;1466us;1244us;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;1285us;1466us;1286us;1466us;1287us;1466us;1290us;1466us;1300us;1466us;1325us;1466us;1326us;1466us;1330us;1466us;1332us;1466us;1335us;1466us;1336us;1466us;1338us;1466us;1341us;1466us;1343us;1466us;1345us;1466us;1347us;1466us;1349us;1466us;1350us;1466us;1351us;1466us;1352us;1466us;1354us;1466us;1355us;1466us;1357us;1466us;1358us;1466us;1360us;1466us;1361us;1466us;1363us;1466us;1364us;1466us;1366us;1466us;1367us;1466us;1369us;1466us;1370us;1466us;1376us;1466us;1377us;1466us;1384us;1466us;1386us;1466us;1388us;1466us;1389us;1466us;1390us;1466us;1391us;1466us;1395us;1466us;1400us;1466us;1406us;1466us;1407us;1466us;1410us;1466us;1411us;1466us;1429us;1466us;1436us;1466us;1443us;1466us;1450us;1466us;1467us;1466us;1474us;1466us;1475us;1466us;1481us;1466us;1487us;1466us;1488us;1466us;1489us;1466us;1501us;1466us;1507us;1466us;1517us;1466us;1530us;1466us;1532us;1466us;1535us;1466us;1536us;1466us;1542us;1466us;1557us;1466us;1562us;1466us;1567us;1466us;1592us;1466us;1625us;1466us;1634us;1466us;1639us;1466us;1862us;1466us;2019us;1466us;2023us;1466us;208us;65535us;6us;1464us;31us;1464us;114us;1464us;116us;1464us;237us;1464us;251us;1464us;274us;1464us;331us;1464us;335us;1464us;340us;1464us;419us;949us;422us;1464us;424us;949us;427us;1464us;465us;949us;468us;1464us;491us;1464us;525us;1464us;689us;1464us;700us;1464us;751us;1464us;757us;1464us;804us;949us;807us;1464us;811us;1464us;821us;1464us;897us;949us;899us;949us;900us;949us;904us;949us;905us;949us;908us;949us;910us;949us;911us;949us;920us;949us;924us;949us;925us;949us;927us;949us;929us;949us;932us;949us;934us;949us;939us;949us;943us;949us;945us;949us;947us;949us;955us;949us;958us;949us;969us;949us;977us;949us;998us;949us;1000us;949us;1006us;949us;1007us;949us;1009us;949us;1010us;949us;1013us;949us;1015us;949us;1016us;949us;1022us;949us;1026us;949us;1028us;1464us;1034us;1464us;1050us;1464us;1052us;1464us;1055us;1464us;1058us;1464us;1076us;949us;1077us;1464us;1081us;949us;1082us;1464us;1088us;1464us;1091us;1464us;1094us;1464us;1100us;1464us;1104us;1464us;1108us;1464us;1114us;1464us;1116us;1464us;1121us;1464us;1123us;1464us;1125us;1464us;1127us;1464us;1129us;1464us;1131us;1464us;1133us;949us;1135us;1464us;1145us;1464us;1152us;1464us;1158us;1464us;1160us;1464us;1164us;949us;1165us;1464us;1169us;1464us;1171us;949us;1172us;1464us;1176us;1464us;1179us;1464us;1182us;1464us;1184us;1464us;1187us;1464us;1189us;1464us;1238us;1464us;1240us;1464us;1244us;1464us;1246us;1464us;1248us;1464us;1250us;1464us;1252us;1464us;1254us;1464us;1256us;1464us;1258us;1464us;1260us;1464us;1262us;1464us;1264us;1464us;1266us;1464us;1268us;1464us;1270us;1464us;1272us;1464us;1274us;1464us;1276us;1464us;1278us;1464us;1280us;1464us;1282us;1464us;1284us;1464us;1285us;1464us;1286us;1464us;1287us;1464us;1290us;1464us;1300us;1464us;1303us;949us;1305us;949us;1311us;949us;1318us;949us;1320us;949us;1325us;1464us;1326us;1464us;1330us;1464us;1332us;1464us;1335us;1464us;1336us;1464us;1338us;1464us;1341us;1464us;1343us;1464us;1345us;1464us;1347us;1464us;1349us;1464us;1350us;1464us;1351us;1464us;1352us;1464us;1354us;1464us;1355us;1464us;1357us;1464us;1358us;1464us;1360us;1464us;1361us;1464us;1363us;1464us;1364us;1464us;1366us;1464us;1367us;1464us;1369us;1464us;1370us;1464us;1376us;1464us;1377us;1464us;1384us;1464us;1386us;1464us;1388us;1464us;1389us;1464us;1390us;1464us;1391us;1464us;1395us;1464us;1400us;1464us;1406us;1464us;1407us;1464us;1410us;1464us;1411us;1464us;1429us;1464us;1436us;1464us;1443us;1464us;1450us;1464us;1467us;1464us;1474us;1464us;1475us;1464us;1481us;1464us;1487us;1464us;1488us;1464us;1489us;1464us;1501us;1464us;1507us;1464us;1517us;1464us;1530us;1464us;1532us;1464us;1535us;1464us;1536us;1464us;1542us;1464us;1557us;1464us;1562us;1464us;1567us;1464us;1592us;1464us;1625us;1464us;1632us;949us;1634us;1464us;1637us;949us;1639us;1464us;1649us;949us;1651us;949us;1862us;1464us;2019us;1464us;2023us;1464us;156us;65535us;6us;1465us;31us;1465us;114us;1465us;116us;1465us;237us;1465us;251us;1465us;274us;1465us;331us;1465us;335us;1465us;340us;1465us;422us;1465us;427us;1465us;468us;1465us;491us;1465us;525us;1465us;689us;1465us;700us;1465us;751us;1465us;757us;1465us;807us;1465us;811us;1465us;821us;1465us;1028us;1465us;1034us;1465us;1050us;1465us;1052us;1465us;1055us;1465us;1058us;1465us;1077us;1465us;1082us;1465us;1088us;1465us;1091us;1465us;1094us;1465us;1100us;1465us;1104us;1465us;1108us;1465us;1114us;1465us;1116us;1465us;1121us;1465us;1123us;1465us;1125us;1465us;1127us;1465us;1129us;1465us;1131us;1465us;1135us;1465us;1145us;1465us;1152us;1465us;1158us;1465us;1160us;1465us;1165us;1465us;1169us;1465us;1172us;1465us;1176us;1465us;1179us;1465us;1182us;1465us;1184us;1465us;1187us;1465us;1189us;1465us;1238us;1465us;1240us;1465us;1244us;1465us;1246us;1465us;1248us;1465us;1250us;1465us;1252us;1465us;1254us;1465us;1256us;1465us;1258us;1465us;1260us;1465us;1262us;1465us;1264us;1465us;1266us;1465us;1268us;1465us;1270us;1465us;1272us;1465us;1274us;1465us;1276us;1465us;1278us;1465us;1280us;1465us;1282us;1465us;1284us;1465us;1285us;1465us;1286us;1465us;1287us;1465us;1290us;1465us;1300us;1465us;1325us;1465us;1326us;1465us;1330us;1465us;1332us;1465us;1335us;1465us;1336us;1465us;1338us;1465us;1341us;1465us;1343us;1465us;1345us;1465us;1347us;1465us;1349us;1465us;1350us;1465us;1351us;1465us;1352us;1465us;1354us;1465us;1355us;1465us;1357us;1465us;1358us;1465us;1360us;1465us;1361us;1465us;1363us;1465us;1364us;1465us;1366us;1465us;1367us;1465us;1369us;1465us;1370us;1465us;1376us;1465us;1377us;1465us;1384us;1465us;1386us;1465us;1388us;1465us;1389us;1465us;1390us;1465us;1391us;1465us;1395us;1465us;1400us;1465us;1406us;1465us;1407us;1465us;1410us;1465us;1411us;1465us;1429us;1465us;1436us;1465us;1443us;1465us;1450us;1465us;1467us;1465us;1474us;1465us;1475us;1465us;1481us;1465us;1487us;1465us;1488us;1465us;1489us;1465us;1501us;1465us;1507us;1465us;1517us;1465us;1530us;1465us;1532us;1465us;1535us;1465us;1536us;1465us;1542us;1465us;1557us;1465us;1562us;1465us;1567us;1465us;1592us;1465us;1625us;1465us;1634us;1465us;1639us;1465us;1862us;1465us;2019us;1465us;2023us;1465us;156us;65535us;6us;1457us;31us;1457us;114us;1457us;116us;1457us;237us;1457us;251us;1457us;274us;1457us;331us;1457us;335us;1457us;340us;1457us;422us;1457us;427us;1457us;468us;1457us;491us;1457us;525us;1457us;689us;1457us;700us;1457us;751us;1457us;757us;1457us;807us;1457us;811us;1457us;821us;1457us;1028us;1457us;1034us;1457us;1050us;1457us;1052us;1457us;1055us;1457us;1058us;1457us;1077us;1457us;1082us;1457us;1088us;1457us;1091us;1457us;1094us;1457us;1100us;1457us;1104us;1457us;1108us;1457us;1114us;1457us;1116us;1457us;1121us;1457us;1123us;1457us;1125us;1457us;1127us;1457us;1129us;1457us;1131us;1457us;1135us;1457us;1145us;1457us;1152us;1457us;1158us;1457us;1160us;1457us;1165us;1457us;1169us;1457us;1172us;1457us;1176us;1457us;1179us;1457us;1182us;1457us;1184us;1457us;1187us;1457us;1189us;1457us;1238us;1457us;1240us;1457us;1244us;1457us;1246us;1457us;1248us;1457us;1250us;1457us;1252us;1457us;1254us;1457us;1256us;1457us;1258us;1457us;1260us;1457us;1262us;1457us;1264us;1457us;1266us;1457us;1268us;1457us;1270us;1457us;1272us;1457us;1274us;1457us;1276us;1457us;1278us;1457us;1280us;1457us;1282us;1457us;1284us;1457us;1285us;1457us;1286us;1457us;1287us;1457us;1290us;1457us;1300us;1457us;1325us;1457us;1326us;1457us;1330us;1457us;1332us;1457us;1335us;1457us;1336us;1457us;1338us;1457us;1341us;1457us;1343us;1457us;1345us;1457us;1347us;1457us;1349us;1457us;1350us;1457us;1351us;1457us;1352us;1457us;1354us;1457us;1355us;1457us;1357us;1457us;1358us;1457us;1360us;1457us;1361us;1457us;1363us;1457us;1364us;1457us;1366us;1457us;1367us;1457us;1369us;1457us;1370us;1457us;1376us;1457us;1377us;1457us;1384us;1457us;1386us;1457us;1388us;1457us;1389us;1457us;1390us;1457us;1391us;1457us;1395us;1457us;1400us;1457us;1406us;1457us;1407us;1457us;1410us;1457us;1411us;1457us;1429us;1457us;1436us;1457us;1443us;1457us;1450us;1457us;1467us;1457us;1474us;1457us;1475us;1457us;1481us;1457us;1487us;1457us;1488us;1457us;1489us;1457us;1501us;1457us;1507us;1457us;1517us;1457us;1530us;1457us;1532us;1457us;1535us;1457us;1536us;1457us;1542us;1457us;1557us;1457us;1562us;1457us;1567us;1457us;1592us;1457us;1625us;1457us;1634us;1457us;1639us;1457us;1862us;1457us;2019us;1457us;2023us;1457us;3us;65535us;1487us;1491us;1488us;1491us;1489us;1491us;3us;65535us;1487us;1503us;1488us;1503us;1489us;1503us;1us;65535us;1488us;1513us;156us;65535us;6us;1458us;31us;1458us;114us;1458us;116us;1458us;237us;1458us;251us;1458us;274us;1458us;331us;1458us;335us;1458us;340us;1458us;422us;1458us;427us;1458us;468us;1458us;491us;1458us;525us;1458us;689us;1458us;700us;1458us;751us;1458us;757us;1458us;807us;1458us;811us;1458us;821us;1458us;1028us;1458us;1034us;1458us;1050us;1458us;1052us;1458us;1055us;1458us;1058us;1458us;1077us;1458us;1082us;1458us;1088us;1458us;1091us;1458us;1094us;1458us;1100us;1458us;1104us;1458us;1108us;1458us;1114us;1458us;1116us;1458us;1121us;1458us;1123us;1458us;1125us;1458us;1127us;1458us;1129us;1458us;1131us;1458us;1135us;1458us;1145us;1458us;1152us;1458us;1158us;1458us;1160us;1458us;1165us;1458us;1169us;1458us;1172us;1458us;1176us;1458us;1179us;1458us;1182us;1458us;1184us;1458us;1187us;1458us;1189us;1458us;1238us;1458us;1240us;1458us;1244us;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;1285us;1458us;1286us;1458us;1287us;1458us;1290us;1458us;1300us;1458us;1325us;1458us;1326us;1458us;1330us;1458us;1332us;1458us;1335us;1458us;1336us;1458us;1338us;1458us;1341us;1458us;1343us;1458us;1345us;1458us;1347us;1458us;1349us;1458us;1350us;1458us;1351us;1458us;1352us;1458us;1354us;1458us;1355us;1458us;1357us;1458us;1358us;1458us;1360us;1458us;1361us;1458us;1363us;1458us;1364us;1458us;1366us;1458us;1367us;1458us;1369us;1458us;1370us;1458us;1376us;1458us;1377us;1458us;1384us;1458us;1386us;1458us;1388us;1458us;1389us;1458us;1390us;1458us;1391us;1458us;1395us;1458us;1400us;1458us;1406us;1458us;1407us;1458us;1410us;1458us;1411us;1458us;1429us;1458us;1436us;1458us;1443us;1458us;1450us;1458us;1467us;1458us;1474us;1458us;1475us;1458us;1481us;1458us;1487us;1458us;1488us;1458us;1489us;1458us;1501us;1458us;1507us;1458us;1517us;1458us;1530us;1458us;1532us;1458us;1535us;1458us;1536us;1458us;1542us;1458us;1557us;1458us;1562us;1458us;1567us;1458us;1592us;1458us;1625us;1458us;1634us;1458us;1639us;1458us;1862us;1458us;2019us;1458us;2023us;1458us;1us;65535us;1517us;1518us;1us;65535us;1429us;1430us;1us;65535us;1481us;1482us;1us;65535us;1517us;1526us;1us;65535us;1142us;1143us;1us;65535us;1133us;1134us;1us;65535us;1133us;1144us;1us;65535us;1226us;1536us;3us;65535us;1487us;1510us;1488us;1510us;1489us;1510us;1us;65535us;1541us;1542us;4us;65535us;331us;332us;335us;336us;340us;341us;1557us;1558us;1us;65535us;1540us;1541us;1us;65535us;1542us;1543us;1us;65535us;1517us;1524us;2us;65535us;1517us;1561us;1625us;1626us;6us;65535us;1559us;1560us;1564us;1565us;1569us;1570us;1573us;1574us;1575us;1576us;1579us;1580us;6us;65535us;1559us;1583us;1564us;1583us;1569us;1583us;1573us;1583us;1575us;1582us;1579us;1583us;3us;65535us;1571us;1591us;1575us;1591us;1583us;1591us;5us;65535us;1558us;1559us;1563us;1564us;1568us;1569us;1572us;1573us;1578us;1579us;3us;65535us;1571us;1572us;1575us;1578us;1583us;1590us;1us;65535us;1517us;1525us;1us;65535us;1517us;1596us;1us;65535us;1618us;1619us;2us;65535us;1596us;1597us;1618us;1603us;1us;65535us;1600us;1601us;4us;65535us;1598us;1599us;1611us;1612us;1613us;1614us;1615us;1616us;5us;65535us;1598us;1613us;1600us;1611us;1611us;1613us;1613us;1613us;1615us;1613us;156us;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;689us;1459us;700us;1459us;751us;1459us;757us;1459us;807us;1459us;811us;1459us;821us;1459us;1028us;1459us;1034us;1459us;1050us;1459us;1052us;1459us;1055us;1459us;1058us;1459us;1077us;1459us;1082us;1459us;1088us;1459us;1091us;1459us;1094us;1459us;1100us;1459us;1104us;1459us;1108us;1459us;1114us;1459us;1116us;1459us;1121us;1459us;1123us;1459us;1125us;1459us;1127us;1459us;1129us;1459us;1131us;1459us;1135us;1459us;1145us;1459us;1152us;1459us;1158us;1459us;1160us;1459us;1165us;1459us;1169us;1459us;1172us;1459us;1176us;1459us;1179us;1459us;1182us;1459us;1184us;1459us;1187us;1459us;1189us;1459us;1238us;1459us;1240us;1459us;1244us;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;1285us;1459us;1286us;1459us;1287us;1459us;1290us;1459us;1300us;1459us;1325us;1459us;1326us;1459us;1330us;1459us;1332us;1459us;1335us;1459us;1336us;1459us;1338us;1459us;1341us;1459us;1343us;1459us;1345us;1459us;1347us;1459us;1349us;1459us;1350us;1459us;1351us;1459us;1352us;1459us;1354us;1459us;1355us;1459us;1357us;1459us;1358us;1459us;1360us;1459us;1361us;1459us;1363us;1459us;1364us;1459us;1366us;1459us;1367us;1459us;1369us;1459us;1370us;1459us;1376us;1459us;1377us;1459us;1384us;1459us;1386us;1459us;1388us;1459us;1389us;1459us;1390us;1459us;1391us;1459us;1395us;1459us;1400us;1459us;1406us;1459us;1407us;1459us;1410us;1459us;1411us;1459us;1429us;1459us;1436us;1459us;1443us;1459us;1450us;1459us;1467us;1459us;1474us;1459us;1475us;1459us;1481us;1459us;1487us;1459us;1488us;1459us;1489us;1459us;1501us;1459us;1507us;1459us;1517us;1459us;1530us;1459us;1532us;1459us;1535us;1459us;1536us;1459us;1542us;1459us;1557us;1459us;1562us;1459us;1567us;1459us;1592us;1459us;1625us;1459us;1634us;1459us;1639us;1459us;1862us;1459us;2019us;1459us;2023us;1459us;158us;65535us;6us;1624us;31us;1624us;114us;1624us;116us;1624us;237us;1624us;251us;1624us;274us;1624us;331us;1624us;335us;1624us;340us;1624us;422us;1624us;427us;1624us;468us;1624us;491us;1624us;525us;1624us;689us;1624us;700us;1624us;751us;1624us;757us;1624us;807us;1624us;811us;1624us;821us;1624us;1028us;1624us;1034us;1624us;1050us;1624us;1052us;1624us;1055us;1624us;1058us;1624us;1077us;1624us;1082us;1624us;1088us;1624us;1091us;1624us;1094us;1624us;1100us;1624us;1104us;1624us;1108us;1624us;1114us;1624us;1116us;1624us;1121us;1624us;1123us;1624us;1125us;1624us;1127us;1624us;1129us;1624us;1131us;1624us;1135us;1624us;1145us;1624us;1152us;1624us;1158us;1624us;1160us;1624us;1165us;1624us;1169us;1624us;1172us;1624us;1176us;1624us;1179us;1624us;1182us;1624us;1184us;1624us;1187us;1624us;1189us;1624us;1238us;1624us;1240us;1624us;1244us;1624us;1246us;1624us;1248us;1624us;1250us;1624us;1252us;1624us;1254us;1624us;1256us;1624us;1258us;1624us;1260us;1624us;1262us;1624us;1264us;1624us;1266us;1624us;1268us;1624us;1270us;1624us;1272us;1624us;1274us;1624us;1276us;1624us;1278us;1624us;1280us;1624us;1282us;1624us;1284us;1624us;1285us;1624us;1286us;1624us;1287us;1624us;1290us;1624us;1300us;1624us;1325us;1624us;1326us;1624us;1330us;1624us;1332us;1624us;1335us;1624us;1336us;1624us;1338us;1624us;1341us;1624us;1343us;1624us;1345us;1624us;1347us;1624us;1349us;1624us;1350us;1624us;1351us;1624us;1352us;1624us;1354us;1624us;1355us;1624us;1357us;1624us;1358us;1624us;1360us;1624us;1361us;1624us;1363us;1624us;1364us;1624us;1366us;1624us;1367us;1624us;1369us;1624us;1370us;1624us;1376us;1624us;1377us;1624us;1384us;1624us;1386us;1624us;1388us;1624us;1389us;1624us;1390us;1624us;1391us;1624us;1395us;1624us;1400us;1624us;1406us;1624us;1407us;1624us;1410us;1624us;1411us;1624us;1429us;1624us;1435us;1623us;1436us;1624us;1443us;1624us;1450us;1624us;1467us;1624us;1474us;1624us;1475us;1624us;1481us;1624us;1487us;1624us;1488us;1624us;1489us;1624us;1501us;1624us;1507us;1624us;1517us;1624us;1530us;1624us;1532us;1624us;1535us;1624us;1536us;1624us;1542us;1624us;1557us;1624us;1562us;1624us;1567us;1624us;1592us;1624us;1622us;1623us;1625us;1624us;1634us;1624us;1639us;1624us;1862us;1624us;2019us;1624us;2023us;1624us;116us;65535us;6us;1099us;31us;1099us;114us;1099us;116us;1099us;237us;1099us;251us;1099us;274us;1099us;422us;1099us;427us;1099us;468us;1099us;491us;1099us;751us;1099us;757us;1099us;807us;1099us;811us;1099us;821us;1099us;1028us;1099us;1034us;1099us;1050us;1099us;1052us;1099us;1055us;1099us;1058us;1099us;1077us;1099us;1082us;1099us;1088us;1099us;1091us;1099us;1094us;1099us;1100us;1099us;1104us;1099us;1108us;1099us;1114us;1099us;1116us;1099us;1121us;1099us;1123us;1099us;1125us;1099us;1127us;1099us;1129us;1099us;1131us;1099us;1135us;1099us;1145us;1099us;1152us;1099us;1158us;1099us;1160us;1099us;1165us;1099us;1169us;1099us;1172us;1099us;1176us;1099us;1179us;1099us;1182us;1099us;1184us;1099us;1187us;1099us;1189us;1099us;1238us;1099us;1240us;1099us;1244us;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;1285us;1099us;1286us;1099us;1287us;1099us;1290us;1099us;1300us;1099us;1325us;1099us;1326us;1099us;1330us;1099us;1332us;1099us;1335us;1099us;1336us;1099us;1338us;1099us;1341us;1099us;1343us;1099us;1345us;1099us;1347us;1099us;1429us;1099us;1436us;1099us;1443us;1099us;1450us;1099us;1467us;1099us;1474us;1099us;1475us;1099us;1481us;1099us;1487us;1099us;1488us;1099us;1489us;1099us;1501us;1099us;1507us;1099us;1517us;1099us;1530us;1099us;1532us;1099us;1535us;1099us;1536us;1099us;1562us;1099us;1567us;1099us;1592us;1099us;1634us;1099us;1639us;1099us;2019us;1099us;2023us;1099us;116us;65535us;6us;1098us;31us;1098us;114us;1098us;116us;1098us;237us;1098us;251us;1098us;274us;1098us;422us;1098us;427us;1098us;468us;1098us;491us;1098us;751us;1098us;757us;1098us;807us;1098us;811us;1098us;821us;1098us;1028us;1098us;1034us;1098us;1050us;1098us;1052us;1098us;1055us;1098us;1058us;1098us;1077us;1098us;1082us;1098us;1088us;1098us;1091us;1098us;1094us;1098us;1100us;1098us;1104us;1098us;1108us;1098us;1114us;1098us;1116us;1098us;1121us;1098us;1123us;1098us;1125us;1098us;1127us;1098us;1129us;1098us;1131us;1098us;1135us;1098us;1145us;1098us;1152us;1098us;1158us;1098us;1160us;1098us;1165us;1098us;1169us;1098us;1172us;1098us;1176us;1098us;1179us;1098us;1182us;1098us;1184us;1098us;1187us;1098us;1189us;1098us;1238us;1098us;1240us;1098us;1244us;1098us;1246us;1098us;1248us;1098us;1250us;1098us;1252us;1098us;1254us;1098us;1256us;1098us;1258us;1098us;1260us;1098us;1262us;1098us;1264us;1098us;1266us;1098us;1268us;1098us;1270us;1098us;1272us;1098us;1274us;1098us;1276us;1098us;1278us;1098us;1280us;1098us;1282us;1098us;1284us;1098us;1285us;1098us;1286us;1098us;1287us;1098us;1290us;1098us;1300us;1098us;1325us;1098us;1326us;1098us;1330us;1098us;1332us;1098us;1335us;1098us;1336us;1098us;1338us;1098us;1341us;1098us;1343us;1098us;1345us;1098us;1347us;1098us;1429us;1098us;1436us;1098us;1443us;1098us;1450us;1098us;1467us;1098us;1474us;1098us;1475us;1098us;1481us;1098us;1487us;1098us;1488us;1098us;1489us;1098us;1501us;1098us;1507us;1098us;1517us;1098us;1530us;1098us;1532us;1098us;1535us;1098us;1536us;1098us;1562us;1098us;1567us;1098us;1592us;1098us;1634us;1098us;1639us;1098us;2019us;1098us;2023us;1098us;3us;65535us;871us;872us;1003us;1004us;1044us;1045us;5us;65535us;111us;112us;184us;185us;201us;202us;454us;455us;1658us;1659us;3us;65535us;420us;421us;425us;426us;805us;806us;9us;65535us;111us;1656us;149us;150us;184us;1656us;201us;1656us;385us;386us;454us;1656us;687us;688us;1658us;1656us;1662us;1663us;9us;65535us;111us;1661us;149us;1661us;184us;1661us;201us;1661us;385us;1661us;454us;1661us;687us;1661us;1658us;1661us;1662us;1661us;4us;65535us;1666us;1667us;1669us;1670us;1672us;1673us;1675us;1676us;13us;65535us;111us;1665us;149us;1665us;184us;1665us;201us;1665us;385us;1665us;454us;1665us;687us;1665us;1658us;1665us;1662us;1665us;1666us;1671us;1669us;1671us;1672us;1671us;1675us;1671us;10us;65535us;678us;717us;680us;717us;683us;717us;704us;717us;707us;717us;710us;717us;713us;716us;742us;717us;1698us;1699us;1701us;1702us;33us;65535us;8us;1709us;178us;566us;439us;566us;481us;482us;497us;498us;561us;566us;569us;1848us;639us;640us;642us;643us;652us;1848us;729us;730us;827us;828us;871us;1654us;1003us;1654us;1044us;1654us;1229us;1230us;1232us;1233us;1235us;1236us;1548us;1549us;1551us;1552us;1553us;1848us;1704us;1705us;1707us;1708us;1749us;1848us;1755us;1756us;1758us;1759us;1825us;1888us;1829us;1888us;1835us;1848us;1846us;1847us;1876us;1888us;1878us;1888us;1889us;1890us;1us;65535us;8us;9us;33us;65535us;8us;1703us;178us;1703us;439us;1703us;481us;1703us;497us;1703us;561us;1703us;569us;1703us;639us;1703us;642us;1703us;652us;1703us;729us;1703us;827us;1703us;871us;1703us;1003us;1703us;1044us;1703us;1229us;1703us;1232us;1703us;1235us;1703us;1548us;1703us;1551us;1703us;1553us;1703us;1704us;1703us;1707us;1703us;1749us;1703us;1755us;1703us;1758us;1703us;1825us;1703us;1829us;1703us;1835us;1703us;1846us;1703us;1876us;1703us;1878us;1703us;1889us;1703us;9us;65535us;1712us;1713us;1715us;1716us;1717us;1718us;1720us;1721us;1724us;1725us;1727us;1728us;1729us;1730us;1732us;1733us;1853us;1854us;82us;65535us;8us;1754us;111us;1754us;149us;1754us;178us;1754us;184us;1754us;188us;1754us;190us;1754us;201us;1754us;290us;1754us;385us;1754us;439us;1754us;446us;1754us;454us;1754us;481us;1754us;497us;1754us;561us;1754us;569us;1754us;625us;1754us;629us;1754us;639us;1754us;642us;1754us;652us;1754us;663us;1754us;678us;1754us;680us;1754us;683us;1754us;687us;1754us;704us;1754us;707us;1754us;710us;1754us;713us;1754us;729us;1754us;742us;1754us;827us;1754us;871us;1754us;1003us;1754us;1044us;1754us;1229us;1754us;1232us;1754us;1235us;1754us;1515us;1754us;1548us;1754us;1551us;1754us;1553us;1754us;1617us;1754us;1655us;1754us;1657us;1754us;1658us;1754us;1662us;1754us;1666us;1754us;1669us;1754us;1672us;1754us;1675us;1754us;1677us;1754us;1679us;1754us;1684us;1754us;1688us;1754us;1693us;1754us;1698us;1754us;1701us;1754us;1704us;1754us;1707us;1754us;1712us;1754us;1715us;1754us;1717us;1754us;1720us;1754us;1724us;1754us;1727us;1754us;1729us;1754us;1732us;1754us;1749us;1754us;1755us;1754us;1758us;1754us;1825us;1754us;1829us;1754us;1835us;1754us;1846us;1754us;1852us;1754us;1853us;1754us;1876us;1754us;1878us;1754us;1889us;1754us;117us;65535us;8us;1741us;111us;1741us;149us;1741us;178us;1741us;184us;1741us;188us;1741us;189us;1740us;190us;1741us;191us;1740us;201us;1741us;290us;1741us;291us;1740us;385us;1741us;439us;1741us;446us;1741us;447us;1740us;454us;1741us;481us;1741us;497us;1741us;522us;1741us;561us;1741us;569us;1741us;570us;1741us;612us;1741us;625us;1741us;629us;1741us;634us;1741us;639us;1741us;642us;1741us;652us;1741us;662us;1740us;663us;1741us;664us;1740us;665us;1740us;678us;1741us;680us;1741us;683us;1741us;687us;1741us;704us;1741us;707us;1741us;710us;1741us;713us;1741us;714us;1740us;715us;1740us;729us;1741us;742us;1741us;827us;1741us;871us;1741us;936us;1741us;1003us;1741us;1044us;1741us;1229us;1741us;1232us;1741us;1235us;1741us;1372us;1741us;1373us;1741us;1515us;1741us;1516us;1740us;1548us;1741us;1551us;1741us;1553us;1741us;1555us;1741us;1617us;1741us;1618us;1740us;1655us;1741us;1657us;1741us;1658us;1741us;1662us;1741us;1666us;1741us;1669us;1741us;1672us;1741us;1675us;1741us;1677us;1741us;1678us;1740us;1679us;1741us;1680us;1740us;1684us;1741us;1685us;1740us;1687us;1740us;1688us;1741us;1689us;1740us;1693us;1741us;1694us;1740us;1696us;1740us;1697us;1740us;1698us;1741us;1701us;1741us;1704us;1741us;1707us;1741us;1711us;1740us;1712us;1741us;1715us;1741us;1717us;1741us;1720us;1741us;1723us;1740us;1724us;1741us;1727us;1741us;1729us;1741us;1732us;1741us;1735us;1741us;1737us;1741us;1744us;1740us;1749us;1741us;1751us;1740us;1755us;1741us;1758us;1741us;1825us;1741us;1829us;1741us;1835us;1741us;1837us;1740us;1842us;1741us;1846us;1741us;1852us;1741us;1853us;1741us;1876us;1741us;1878us;1741us;1889us;1741us;117us;65535us;8us;1844us;111us;1844us;149us;1844us;178us;1844us;184us;1844us;188us;1844us;189us;1748us;190us;1844us;191us;1748us;201us;1844us;290us;1844us;291us;1748us;385us;1844us;439us;1844us;446us;1844us;447us;1748us;454us;1844us;481us;1844us;497us;1844us;522us;1844us;561us;1844us;569us;1844us;570us;1844us;612us;1844us;625us;1844us;629us;1844us;634us;1844us;639us;1844us;642us;1844us;652us;1844us;662us;1748us;663us;1844us;664us;1748us;665us;1748us;678us;1844us;680us;1844us;683us;1844us;687us;1844us;704us;1844us;707us;1844us;710us;1844us;713us;1844us;714us;1748us;715us;1748us;729us;1844us;742us;1844us;827us;1844us;871us;1844us;936us;1844us;1003us;1844us;1044us;1844us;1229us;1844us;1232us;1844us;1235us;1844us;1372us;1844us;1373us;1844us;1515us;1844us;1516us;1748us;1548us;1844us;1551us;1844us;1553us;1844us;1555us;1844us;1617us;1844us;1618us;1748us;1655us;1844us;1657us;1844us;1658us;1844us;1662us;1844us;1666us;1844us;1669us;1844us;1672us;1844us;1675us;1844us;1677us;1844us;1678us;1748us;1679us;1844us;1680us;1748us;1684us;1844us;1685us;1748us;1687us;1748us;1688us;1844us;1689us;1748us;1693us;1844us;1694us;1748us;1696us;1748us;1697us;1748us;1698us;1844us;1701us;1844us;1704us;1844us;1707us;1844us;1711us;1748us;1712us;1844us;1715us;1844us;1717us;1844us;1720us;1844us;1723us;1748us;1724us;1844us;1727us;1844us;1729us;1844us;1732us;1844us;1735us;1844us;1737us;1844us;1744us;1748us;1749us;1844us;1751us;1752us;1755us;1844us;1758us;1844us;1825us;1844us;1829us;1844us;1835us;1844us;1837us;1838us;1842us;1844us;1846us;1844us;1852us;1844us;1853us;1844us;1876us;1844us;1878us;1844us;1889us;1844us;82us;65535us;8us;1711us;111us;1687us;149us;1687us;178us;1711us;184us;1687us;188us;189us;190us;191us;201us;1687us;290us;291us;385us;1687us;439us;1711us;446us;447us;454us;1687us;481us;1711us;497us;1711us;561us;1711us;569us;1711us;625us;662us;629us;662us;639us;1711us;642us;1711us;652us;665us;663us;664us;678us;715us;680us;715us;683us;715us;687us;1687us;704us;715us;707us;715us;710us;715us;713us;714us;729us;1711us;742us;715us;827us;1711us;871us;1711us;1003us;1711us;1044us;1711us;1229us;1711us;1232us;1711us;1235us;1711us;1515us;1516us;1548us;1711us;1551us;1711us;1553us;1711us;1617us;1618us;1655us;662us;1657us;662us;1658us;1687us;1662us;1687us;1666us;1687us;1669us;1687us;1672us;1687us;1675us;1687us;1677us;1678us;1679us;1680us;1684us;1685us;1688us;1689us;1693us;1694us;1698us;1696us;1701us;1697us;1704us;1711us;1707us;1711us;1712us;1723us;1715us;1723us;1717us;1723us;1720us;1723us;1724us;1723us;1727us;1723us;1729us;1723us;1732us;1723us;1749us;1711us;1755us;1711us;1758us;1711us;1825us;1711us;1829us;1711us;1835us;1711us;1846us;1711us;1852us;1744us;1853us;1723us;1876us;1711us;1878us;1711us;1889us;1711us;23us;65535us;189us;1745us;191us;1745us;291us;1745us;447us;1745us;662us;1745us;664us;1745us;665us;1745us;714us;1745us;715us;1745us;1516us;1745us;1618us;1745us;1678us;1745us;1680us;1745us;1685us;1745us;1687us;1745us;1689us;1745us;1694us;1745us;1696us;1745us;1697us;1745us;1711us;1745us;1723us;1745us;1744us;1745us;1746us;1747us;5us;65535us;569us;1750us;652us;1750us;1553us;1750us;1749us;1750us;1835us;1836us;2us;65535us;1826us;1827us;1879us;1828us;82us;65535us;8us;1753us;111us;1753us;149us;1753us;178us;1753us;184us;1753us;188us;1753us;190us;1753us;201us;1753us;290us;1753us;385us;1753us;439us;1753us;446us;1753us;454us;1753us;481us;1753us;497us;1753us;561us;1753us;569us;1753us;625us;1753us;629us;1753us;639us;1753us;642us;1753us;652us;1753us;663us;1753us;678us;1753us;680us;1753us;683us;1753us;687us;1753us;704us;1753us;707us;1753us;710us;1753us;713us;1753us;729us;1753us;742us;1753us;827us;1753us;871us;1753us;1003us;1753us;1044us;1753us;1229us;1753us;1232us;1753us;1235us;1753us;1515us;1753us;1548us;1753us;1551us;1753us;1553us;1753us;1617us;1753us;1655us;1753us;1657us;1753us;1658us;1753us;1662us;1753us;1666us;1753us;1669us;1753us;1672us;1753us;1675us;1753us;1677us;1753us;1679us;1753us;1684us;1753us;1688us;1753us;1693us;1753us;1698us;1753us;1701us;1753us;1704us;1753us;1707us;1753us;1712us;1753us;1715us;1753us;1717us;1753us;1720us;1753us;1724us;1753us;1727us;1753us;1729us;1753us;1732us;1753us;1749us;1753us;1755us;1753us;1758us;1753us;1825us;1753us;1829us;1753us;1835us;1753us;1846us;1753us;1852us;1753us;1853us;1753us;1876us;1753us;1878us;1753us;1889us;1753us;4us;65535us;522us;523us;1372us;1374us;1373us;1375us;1555us;1556us;83us;65535us;8us;1832us;111us;1832us;149us;1832us;178us;1832us;184us;1832us;188us;1832us;190us;1832us;201us;1832us;290us;1832us;385us;1832us;439us;1832us;446us;1832us;454us;1832us;481us;1832us;497us;1832us;561us;1832us;569us;1832us;625us;1832us;629us;1832us;639us;1832us;642us;1832us;652us;1832us;663us;1832us;678us;1832us;680us;1832us;683us;1832us;687us;1832us;704us;1832us;707us;1832us;710us;1832us;713us;1832us;729us;1832us;742us;1832us;827us;1832us;871us;1832us;936us;937us;1003us;1832us;1044us;1832us;1229us;1832us;1232us;1832us;1235us;1832us;1515us;1832us;1548us;1832us;1551us;1832us;1553us;1832us;1617us;1832us;1655us;1832us;1657us;1832us;1658us;1832us;1662us;1832us;1666us;1832us;1669us;1832us;1672us;1832us;1675us;1832us;1677us;1832us;1679us;1832us;1684us;1832us;1688us;1832us;1693us;1832us;1698us;1832us;1701us;1832us;1704us;1832us;1707us;1832us;1712us;1832us;1715us;1832us;1717us;1832us;1720us;1832us;1724us;1832us;1727us;1832us;1729us;1832us;1732us;1832us;1749us;1832us;1755us;1832us;1758us;1832us;1825us;1832us;1829us;1832us;1835us;1832us;1846us;1832us;1852us;1832us;1853us;1832us;1876us;1832us;1878us;1832us;1889us;1832us;93us;65535us;8us;1736us;111us;1736us;149us;1736us;178us;1736us;184us;1736us;188us;1736us;190us;1736us;201us;1736us;290us;1736us;385us;1736us;439us;1736us;446us;1736us;454us;1736us;481us;1736us;497us;1736us;522us;1839us;561us;1736us;569us;1736us;570us;1843us;612us;636us;625us;1736us;629us;1736us;634us;635us;639us;1736us;642us;1736us;652us;1736us;663us;1736us;678us;1736us;680us;1736us;683us;1736us;687us;1736us;704us;1736us;707us;1736us;710us;1736us;713us;1736us;729us;1736us;742us;1736us;827us;1736us;871us;1736us;936us;1840us;1003us;1736us;1044us;1736us;1229us;1736us;1232us;1736us;1235us;1736us;1372us;1839us;1373us;1839us;1515us;1736us;1548us;1736us;1551us;1736us;1553us;1736us;1555us;1839us;1617us;1736us;1655us;1736us;1657us;1736us;1658us;1736us;1662us;1736us;1666us;1736us;1669us;1736us;1672us;1736us;1675us;1736us;1677us;1736us;1679us;1736us;1684us;1736us;1688us;1736us;1693us;1736us;1698us;1736us;1701us;1736us;1704us;1736us;1707us;1736us;1712us;1736us;1715us;1736us;1717us;1736us;1720us;1736us;1724us;1736us;1727us;1736us;1729us;1736us;1732us;1736us;1735us;636us;1737us;636us;1749us;1736us;1755us;1736us;1758us;1736us;1825us;1736us;1829us;1736us;1835us;1736us;1842us;1843us;1846us;1736us;1852us;1736us;1853us;1736us;1876us;1736us;1878us;1736us;1889us;1736us;4us;65535us;646us;661us;659us;660us;1741us;1867us;1869us;1870us;6us;65535us;646us;1873us;659us;1873us;1408us;1409us;1741us;1873us;1869us;1873us;1874us;1875us;9us;65535us;569us;1824us;652us;1824us;1553us;1824us;1749us;1824us;1825us;1826us;1829us;1830us;1835us;1824us;1876us;1883us;1878us;1891us;2us;65535us;1876us;1877us;1878us;1879us;3us;65535us;1829us;1831us;1876us;1892us;1878us;1892us;1us;65535us;863us;864us;6us;65535us;1893us;1903us;1900us;1903us;1907us;1903us;1913us;1903us;1914us;1903us;1915us;1903us;6us;65535us;1893us;1907us;1900us;1907us;1907us;1907us;1913us;1907us;1914us;1907us;1915us;1907us;6us;65535us;1893us;1909us;1900us;1909us;1907us;1908us;1913us;1909us;1914us;1909us;1915us;1909us;5us;65535us;1893us;1894us;1900us;1901us;1913us;1910us;1914us;1911us;1915us;1912us;131us;65535us;8us;1734us;111us;1734us;149us;1734us;178us;1734us;184us;1734us;188us;1734us;189us;1739us;190us;1734us;191us;1739us;201us;1734us;290us;1734us;291us;1739us;385us;1734us;439us;1734us;446us;1734us;447us;1739us;454us;1734us;481us;1734us;497us;1734us;522us;1739us;561us;1734us;569us;1734us;570us;1739us;594us;600us;610us;611us;612us;1739us;625us;641us;629us;641us;634us;1739us;637us;638us;639us;1734us;642us;1734us;652us;1734us;662us;1739us;663us;1734us;664us;1739us;665us;1739us;678us;1734us;680us;1734us;683us;1734us;687us;1734us;704us;1734us;707us;1734us;710us;1734us;713us;1734us;714us;1739us;715us;1739us;729us;1734us;742us;1734us;819us;826us;823us;826us;827us;1734us;871us;1734us;936us;1739us;1003us;1734us;1044us;1734us;1229us;1734us;1232us;1734us;1235us;1734us;1372us;1739us;1373us;1739us;1487us;1511us;1488us;1512us;1489us;1511us;1515us;1734us;1516us;1739us;1548us;1734us;1551us;1734us;1553us;1734us;1555us;1739us;1617us;1734us;1618us;1739us;1655us;641us;1657us;641us;1658us;1734us;1662us;1734us;1666us;1734us;1669us;1734us;1672us;1734us;1675us;1734us;1677us;1734us;1678us;1739us;1679us;1734us;1680us;1739us;1684us;1734us;1685us;1739us;1687us;1739us;1688us;1734us;1689us;1739us;1693us;1734us;1694us;1739us;1696us;1739us;1697us;1739us;1698us;1734us;1701us;1734us;1704us;1734us;1707us;1734us;1711us;1739us;1712us;1734us;1715us;1734us;1717us;1734us;1720us;1734us;1723us;1739us;1724us;1734us;1727us;1734us;1729us;1734us;1732us;1734us;1735us;1739us;1737us;1739us;1744us;1739us;1749us;1734us;1751us;1739us;1755us;1734us;1758us;1734us;1825us;1734us;1829us;1734us;1835us;1734us;1837us;1739us;1842us;1739us;1846us;1734us;1852us;1734us;1853us;1734us;1876us;1734us;1878us;1734us;1889us;1734us;1893us;1899us;1900us;1899us;1907us;1899us;1913us;1899us;1914us;1899us;1915us;1899us;386us;65535us;6us;1978us;8us;1923us;31us;1978us;53us;1923us;58us;1923us;95us;1923us;108us;1970us;111us;1923us;114us;1978us;116us;1978us;120us;1923us;149us;1923us;178us;698us;181us;1970us;184us;1923us;188us;1923us;189us;1923us;190us;1923us;191us;1923us;201us;1923us;203us;1970us;205us;1970us;210us;1970us;237us;1978us;251us;1978us;274us;1978us;281us;1923us;287us;1923us;290us;1923us;291us;1923us;317us;346us;328us;346us;333us;1923us;337us;1923us;385us;1923us;419us;1972us;422us;1978us;424us;1972us;427us;1978us;439us;698us;446us;1923us;447us;1923us;451us;1970us;454us;1923us;465us;1972us;468us;1978us;479us;480us;481us;1923us;488us;489us;491us;1978us;497us;1923us;501us;1972us;504us;1972us;507us;1972us;509us;1972us;522us;1923us;530us;531us;534us;535us;561us;698us;569us;1923us;570us;1923us;594us;1923us;596us;1923us;612us;1923us;625us;1923us;629us;1923us;634us;1923us;639us;1923us;642us;1923us;652us;1923us;662us;1923us;663us;1923us;664us;1923us;665us;1923us;677us;1970us;678us;712us;680us;712us;683us;712us;687us;1923us;689us;1978us;700us;1978us;704us;712us;707us;712us;710us;712us;713us;1923us;714us;1923us;715us;1923us;727us;728us;729us;1923us;737us;741us;742us;712us;745us;1923us;751us;1978us;757us;1978us;769us;770us;781us;1923us;782us;783us;794us;1923us;804us;1972us;807us;1978us;811us;1978us;821us;1978us;827us;1923us;867us;868us;871us;1923us;874us;866us;875us;866us;878us;866us;897us;1972us;899us;1972us;900us;1972us;904us;1972us;905us;1972us;908us;1972us;910us;1972us;911us;1972us;914us;918us;916us;918us;920us;1972us;924us;1972us;925us;1972us;927us;1972us;929us;1972us;932us;1972us;934us;1972us;936us;1923us;939us;919us;943us;1972us;945us;1972us;947us;1972us;950us;1923us;955us;1972us;958us;1972us;961us;963us;962us;963us;969us;1972us;977us;1972us;998us;1972us;1000us;1972us;1003us;1923us;1006us;1972us;1007us;1972us;1009us;1972us;1010us;1972us;1013us;1972us;1015us;1972us;1016us;1972us;1019us;1923us;1022us;1972us;1026us;1972us;1028us;1978us;1034us;1978us;1044us;1923us;1050us;1978us;1052us;1978us;1055us;1978us;1058us;1978us;1076us;1972us;1077us;1978us;1081us;1972us;1082us;1978us;1088us;1978us;1091us;1978us;1094us;1978us;1100us;1978us;1104us;1978us;1108us;1978us;1114us;1978us;1116us;1978us;1121us;1978us;1123us;1978us;1125us;1978us;1127us;1978us;1129us;1978us;1131us;1978us;1133us;1972us;1135us;1978us;1145us;1978us;1152us;1978us;1158us;1978us;1160us;1978us;1164us;1972us;1165us;1978us;1169us;1978us;1171us;1972us;1172us;1978us;1176us;1978us;1179us;1978us;1182us;1978us;1184us;1978us;1187us;1978us;1189us;1978us;1229us;1923us;1232us;1923us;1235us;1923us;1238us;1978us;1240us;1978us;1244us;1978us;1246us;1978us;1248us;1978us;1250us;1978us;1252us;1978us;1254us;1978us;1256us;1978us;1258us;1978us;1260us;1978us;1262us;1978us;1264us;1978us;1266us;1978us;1268us;1978us;1270us;1978us;1272us;1978us;1274us;1978us;1276us;1978us;1278us;1978us;1280us;1978us;1282us;1978us;1284us;1978us;1285us;1978us;1286us;1978us;1287us;1978us;1290us;1978us;1300us;1978us;1303us;1972us;1305us;1972us;1311us;1972us;1318us;1972us;1320us;1972us;1325us;1978us;1326us;1978us;1330us;1978us;1332us;1978us;1335us;1978us;1336us;1978us;1338us;1978us;1341us;1978us;1343us;1978us;1345us;1978us;1347us;1978us;1349us;1978us;1350us;1920us;1351us;1920us;1352us;1978us;1354us;1978us;1355us;1978us;1357us;1978us;1358us;1978us;1360us;1978us;1361us;1978us;1363us;1978us;1364us;1978us;1366us;1978us;1367us;1978us;1369us;1978us;1370us;1978us;1372us;1923us;1373us;1923us;1380us;1970us;1384us;1978us;1386us;1978us;1388us;1978us;1389us;1978us;1390us;1978us;1391us;1978us;1395us;1978us;1400us;1978us;1406us;1978us;1407us;1978us;1410us;1978us;1411us;1978us;1412us;1414us;1413us;1415us;1417us;1970us;1420us;1970us;1422us;1970us;1423us;1970us;1429us;1978us;1436us;1978us;1443us;1978us;1450us;1978us;1467us;1978us;1474us;1978us;1475us;1978us;1481us;1978us;1487us;1978us;1488us;1978us;1489us;1978us;1501us;1978us;1507us;1978us;1515us;1923us;1516us;1923us;1517us;1978us;1530us;1978us;1532us;1978us;1535us;1978us;1536us;1978us;1542us;1978us;1548us;1923us;1551us;1923us;1553us;1923us;1555us;1923us;1562us;1978us;1567us;1978us;1571us;1923us;1575us;1923us;1583us;1923us;1592us;1978us;1617us;1923us;1618us;1923us;1625us;1978us;1632us;1972us;1634us;1978us;1637us;1972us;1639us;1978us;1649us;1972us;1651us;1972us;1655us;1923us;1657us;1923us;1658us;1923us;1662us;1923us;1666us;1923us;1669us;1923us;1672us;1923us;1675us;1923us;1677us;1923us;1678us;1923us;1679us;1923us;1680us;1923us;1682us;1683us;1684us;1923us;1685us;1923us;1687us;1923us;1688us;1923us;1689us;1923us;1691us;1692us;1693us;1923us;1694us;1923us;1696us;1923us;1697us;1923us;1698us;1923us;1701us;1923us;1704us;1923us;1707us;1923us;1711us;1923us;1712us;1923us;1715us;1923us;1717us;1923us;1720us;1923us;1723us;1923us;1724us;1923us;1727us;1923us;1729us;1923us;1732us;1923us;1735us;1923us;1737us;1923us;1744us;1923us;1749us;1923us;1751us;1923us;1755us;1923us;1758us;1923us;1825us;1923us;1829us;1923us;1835us;1923us;1837us;1923us;1842us;1923us;1846us;1923us;1852us;1923us;1853us;1923us;1862us;1978us;1868us;1923us;1876us;1923us;1878us;1923us;1889us;1923us;1893us;1923us;1900us;1923us;1907us;1923us;1913us;1923us;1914us;1923us;1915us;1923us;1916us;1917us;1918us;1919us;1924us;1925us;1974us;1972us;2016us;2017us;2019us;1978us;2023us;1978us;144us;65535us;8us;1738us;53us;54us;58us;59us;95us;295us;111us;1738us;120us;293us;149us;1738us;178us;562us;184us;1738us;188us;1738us;189us;1738us;190us;1738us;191us;1738us;201us;1738us;281us;305us;287us;288us;290us;1738us;291us;1738us;317us;330us;328us;330us;333us;334us;337us;338us;385us;1738us;439us;562us;446us;1738us;447us;1738us;454us;1738us;481us;1738us;497us;1738us;522us;1738us;561us;562us;569us;1738us;570us;1738us;594us;595us;596us;597us;612us;1738us;625us;1738us;629us;1738us;634us;1738us;639us;1738us;642us;1738us;652us;1738us;662us;1738us;663us;1738us;664us;1738us;665us;1738us;678us;1738us;680us;1738us;683us;1738us;687us;1738us;704us;1738us;707us;1738us;710us;1738us;713us;1738us;714us;1738us;715us;1738us;729us;1738us;742us;1738us;745us;746us;781us;784us;794us;784us;827us;1738us;871us;1738us;936us;1738us;950us;1021us;1003us;1738us;1019us;1021us;1044us;1738us;1229us;1738us;1232us;1738us;1235us;1738us;1372us;1738us;1373us;1738us;1515us;1738us;1516us;1738us;1548us;1738us;1551us;1738us;1553us;1738us;1555us;1738us;1571us;1588us;1575us;1588us;1583us;1588us;1617us;1738us;1618us;1738us;1655us;1738us;1657us;1738us;1658us;1738us;1662us;1738us;1666us;1738us;1669us;1738us;1672us;1738us;1675us;1738us;1677us;1738us;1678us;1738us;1679us;1738us;1680us;1738us;1684us;1738us;1685us;1738us;1687us;1738us;1688us;1738us;1689us;1738us;1693us;1738us;1694us;1738us;1696us;1738us;1697us;1738us;1698us;1738us;1701us;1738us;1704us;1738us;1707us;1738us;1711us;1738us;1712us;1738us;1715us;1738us;1717us;1738us;1720us;1738us;1723us;1738us;1724us;1738us;1727us;1738us;1729us;1738us;1732us;1738us;1735us;1738us;1737us;1738us;1744us;1738us;1749us;1738us;1751us;1738us;1755us;1738us;1758us;1738us;1825us;1738us;1829us;1738us;1835us;1738us;1837us;1738us;1842us;1738us;1846us;1738us;1852us;1738us;1853us;1738us;1868us;1869us;1876us;1738us;1878us;1738us;1889us;1738us;1893us;1898us;1900us;1898us;1907us;1898us;1913us;1898us;1914us;1898us;1915us;1898us;218us;65535us;6us;1979us;31us;1979us;108us;1971us;114us;1979us;116us;1979us;181us;1971us;203us;1971us;205us;1971us;210us;1971us;237us;1979us;251us;1979us;274us;1979us;419us;1973us;422us;1979us;424us;1973us;427us;1979us;451us;1971us;465us;1973us;468us;1979us;491us;1979us;501us;1973us;504us;1973us;507us;1973us;509us;1973us;677us;1971us;689us;1979us;700us;1979us;751us;1979us;757us;1979us;804us;1973us;807us;1979us;811us;1979us;821us;1979us;897us;1973us;899us;1973us;900us;1973us;904us;1973us;905us;1973us;908us;1973us;910us;1973us;911us;1973us;920us;1973us;924us;1973us;925us;1973us;927us;1973us;929us;1973us;932us;1973us;934us;1973us;939us;1973us;943us;1973us;945us;1973us;947us;1973us;955us;1973us;958us;1973us;969us;1973us;977us;1973us;998us;1973us;1000us;1973us;1006us;1973us;1007us;1973us;1009us;1973us;1010us;1973us;1013us;1973us;1015us;1973us;1016us;1973us;1022us;1973us;1026us;1973us;1028us;1979us;1034us;1979us;1050us;1979us;1052us;1979us;1055us;1979us;1058us;1979us;1076us;1973us;1077us;1979us;1081us;1973us;1082us;1979us;1088us;1979us;1091us;1979us;1094us;1979us;1100us;1979us;1104us;1979us;1108us;1979us;1114us;1979us;1116us;1979us;1121us;1979us;1123us;1979us;1125us;1979us;1127us;1979us;1129us;1979us;1131us;1979us;1133us;1973us;1135us;1979us;1145us;1979us;1152us;1979us;1158us;1979us;1160us;1979us;1164us;1973us;1165us;1979us;1169us;1979us;1171us;1973us;1172us;1979us;1176us;1979us;1179us;1979us;1182us;1979us;1184us;1979us;1187us;1979us;1189us;1979us;1238us;1979us;1240us;1979us;1244us;1979us;1246us;1979us;1248us;1979us;1250us;1979us;1252us;1979us;1254us;1979us;1256us;1979us;1258us;1979us;1260us;1979us;1262us;1979us;1264us;1979us;1266us;1979us;1268us;1979us;1270us;1979us;1272us;1979us;1274us;1979us;1276us;1979us;1278us;1979us;1280us;1979us;1282us;1979us;1284us;1979us;1285us;1979us;1286us;1979us;1287us;1979us;1290us;1979us;1300us;1979us;1303us;1973us;1305us;1973us;1311us;1973us;1318us;1973us;1320us;1973us;1325us;1979us;1326us;1979us;1330us;1979us;1332us;1979us;1335us;1979us;1336us;1979us;1338us;1979us;1341us;1979us;1343us;1979us;1345us;1979us;1347us;1979us;1349us;1979us;1350us;1979us;1351us;1979us;1352us;1979us;1354us;1979us;1355us;1979us;1357us;1979us;1358us;1979us;1360us;1979us;1361us;1979us;1363us;1979us;1364us;1979us;1366us;1979us;1367us;1979us;1369us;1979us;1370us;1979us;1380us;1971us;1384us;1979us;1386us;1979us;1388us;1979us;1389us;1979us;1390us;1979us;1391us;1979us;1395us;1979us;1400us;1979us;1406us;1979us;1407us;1979us;1410us;1979us;1411us;1979us;1417us;1971us;1420us;1971us;1422us;1971us;1423us;1971us;1429us;1979us;1436us;1979us;1443us;1979us;1450us;1979us;1467us;1979us;1474us;1979us;1475us;1979us;1481us;1979us;1487us;1979us;1488us;1979us;1489us;1979us;1501us;1979us;1507us;1979us;1517us;1979us;1530us;1979us;1532us;1979us;1535us;1979us;1536us;1979us;1542us;1979us;1562us;1979us;1567us;1979us;1592us;1979us;1625us;1979us;1632us;1973us;1634us;1979us;1637us;1973us;1639us;1979us;1649us;1973us;1651us;1973us;1862us;1979us;1974us;1973us;2019us;1979us;2023us;1979us;7us;65535us;692us;1928us;939us;1928us;969us;1928us;1443us;1928us;1488us;1928us;1489us;1928us;1927us;1928us;2us;65535us;1934us;1969us;1967us;1968us;7us;65535us;692us;1933us;939us;1933us;969us;1933us;1443us;1933us;1488us;1933us;1489us;1933us;1927us;1933us;12us;65535us;108us;1977us;181us;1977us;203us;1977us;205us;1977us;210us;1977us;451us;1977us;677us;1977us;1380us;1440us;1417us;1440us;1420us;1440us;1422us;1977us;1423us;1977us;57us;65535us;419us;506us;424us;506us;465us;506us;501us;502us;504us;505us;507us;511us;509us;510us;804us;506us;897us;506us;899us;506us;900us;506us;904us;506us;905us;506us;908us;506us;910us;506us;911us;506us;920us;506us;924us;506us;925us;506us;927us;506us;929us;506us;932us;506us;934us;506us;939us;506us;943us;506us;945us;506us;947us;506us;955us;506us;958us;506us;969us;506us;977us;506us;998us;506us;1000us;506us;1006us;506us;1007us;506us;1009us;506us;1010us;506us;1013us;506us;1015us;506us;1016us;506us;1022us;506us;1026us;506us;1076us;506us;1081us;506us;1133us;506us;1164us;506us;1171us;506us;1303us;506us;1305us;506us;1311us;506us;1318us;506us;1320us;506us;1632us;506us;1637us;506us;1649us;506us;1651us;506us;1974us;1975us;9us;65535us;108us;109us;181us;182us;203us;209us;205us;209us;210us;211us;451us;452us;677us;691us;1422us;1424us;1423us;1424us;149us;65535us;6us;1428us;31us;1428us;114us;1428us;116us;1428us;237us;1428us;251us;1428us;274us;1428us;422us;1428us;427us;1428us;468us;1428us;491us;1428us;689us;1428us;700us;1428us;751us;1428us;757us;1428us;807us;1428us;811us;1428us;821us;1428us;1028us;1428us;1034us;1428us;1050us;1428us;1052us;1428us;1055us;1428us;1058us;1428us;1077us;1428us;1082us;1428us;1088us;1428us;1091us;1428us;1094us;1428us;1100us;1428us;1104us;1428us;1108us;1428us;1114us;1428us;1116us;1428us;1121us;1428us;1123us;1428us;1125us;1428us;1127us;1428us;1129us;1428us;1131us;1428us;1135us;1428us;1145us;1428us;1152us;1428us;1158us;1428us;1160us;1428us;1165us;1428us;1169us;1428us;1172us;1428us;1176us;1428us;1179us;1428us;1182us;1428us;1184us;1428us;1187us;1428us;1189us;1428us;1238us;1428us;1240us;1428us;1244us;1428us;1246us;1428us;1248us;1428us;1250us;1428us;1252us;1428us;1254us;1428us;1256us;1428us;1258us;1428us;1260us;1428us;1262us;1428us;1264us;1428us;1266us;1428us;1268us;1428us;1270us;1428us;1272us;1428us;1274us;1428us;1276us;1428us;1278us;1428us;1280us;1428us;1282us;1428us;1284us;1428us;1285us;1428us;1286us;1428us;1287us;1428us;1290us;1428us;1300us;1428us;1325us;1428us;1326us;1428us;1330us;1428us;1332us;1428us;1335us;1428us;1336us;1428us;1338us;1428us;1341us;1428us;1343us;1428us;1345us;1428us;1347us;1428us;1349us;1428us;1350us;1428us;1351us;1428us;1352us;1428us;1354us;1428us;1355us;1428us;1357us;1428us;1358us;1428us;1360us;1428us;1361us;1428us;1363us;1428us;1364us;1428us;1366us;1428us;1367us;1428us;1369us;1428us;1370us;1428us;1384us;1428us;1386us;1428us;1388us;1428us;1389us;1428us;1390us;1428us;1391us;1428us;1395us;1428us;1400us;1428us;1406us;1428us;1407us;1428us;1410us;1428us;1411us;1428us;1429us;1428us;1436us;1428us;1443us;1428us;1450us;1428us;1467us;1428us;1474us;1428us;1475us;1428us;1481us;1428us;1487us;1428us;1488us;1428us;1489us;1428us;1501us;1428us;1507us;1428us;1517us;1428us;1530us;1428us;1532us;1428us;1535us;1428us;1536us;1428us;1542us;1428us;1562us;1428us;1567us;1428us;1592us;1428us;1625us;1428us;1634us;1428us;1639us;1428us;1862us;1428us;2019us;1428us;2023us;1428us;16us;65535us;48us;1983us;79us;1983us;82us;1983us;83us;1983us;84us;1985us;87us;1983us;227us;1983us;246us;1983us;252us;1983us;257us;1983us;261us;1983us;262us;1983us;263us;1983us;264us;1983us;1983us;1983us;1985us;1985us;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;1983us;1984us;2us;65535us;84us;85us;1985us;1986us;10us;65535us;172us;2000us;318us;328us;406us;2000us;542us;2000us;720us;721us;912us;914us;914us;916us;995us;1026us;1017us;1019us;1049us;1050us;4us;65535us;221us;222us;312us;313us;517us;518us;520us;521us;2us;65535us;1609us;1610us;1619us;1620us;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;671us;703us;698us;699us;701us;702us;1084us;1085us;1134us;1142us;1167us;1168us;1174us;1175us;1181us;1182us;1596us;1600us;1597us;1598us;1620us;1621us;8us;65535us;172us;173us;318us;319us;406us;407us;542us;543us;720us;723us;912us;913us;995us;1025us;1017us;1018us;4us;65535us;52us;53us;57us;58us;747us;748us;753us;754us;0us;65535us;11us;65535us;105us;106us;179us;180us;409us;418us;411us;418us;416us;418us;442us;424us;450us;451us;546us;803us;547us;424us;553us;424us;800us;803us;7us;65535us;106us;107us;193us;726us;196us;726us;477us;478us;486us;487us;724us;726us;803us;804us;4us;65535us;1062us;1152us;1134us;1135us;1144us;1145us;1214us;1290us;9us;65535us;1060us;1139us;1061us;1149us;1063us;1156us;1064us;1298us;1136us;1137us;1146us;1147us;1153us;1154us;1291us;1292us;1294us;1295us;2us;65535us;281us;306us;296us;306us;2us;65535us;95us;127us;120us;123us;2us;65535us;70us;95us;94us;95us;303us;65535us;6us;845us;8us;845us;31us;845us;40us;42us;111us;845us;114us;845us;116us;845us;149us;845us;178us;845us;184us;845us;188us;845us;190us;845us;201us;845us;237us;845us;251us;845us;274us;845us;290us;845us;331us;845us;335us;845us;340us;845us;385us;845us;419us;845us;422us;845us;424us;845us;427us;845us;439us;845us;446us;845us;454us;845us;465us;845us;468us;845us;481us;845us;491us;845us;497us;845us;522us;845us;525us;845us;561us;845us;569us;845us;570us;571us;612us;845us;625us;845us;629us;845us;634us;845us;639us;845us;642us;845us;652us;845us;663us;845us;678us;845us;680us;845us;683us;845us;687us;845us;689us;845us;700us;845us;704us;845us;707us;845us;710us;845us;713us;845us;729us;845us;742us;845us;751us;845us;757us;845us;804us;845us;807us;845us;811us;845us;821us;845us;827us;845us;871us;845us;897us;845us;899us;845us;900us;845us;904us;845us;905us;845us;908us;845us;910us;845us;911us;845us;920us;845us;924us;845us;925us;845us;927us;845us;929us;845us;932us;845us;934us;845us;936us;845us;939us;845us;943us;845us;945us;845us;947us;845us;955us;845us;958us;845us;969us;845us;977us;845us;998us;845us;1000us;845us;1003us;845us;1006us;845us;1007us;845us;1009us;845us;1010us;845us;1013us;845us;1015us;845us;1016us;845us;1022us;845us;1026us;845us;1028us;845us;1034us;845us;1044us;845us;1050us;845us;1052us;845us;1055us;845us;1058us;845us;1076us;845us;1077us;845us;1081us;845us;1082us;845us;1088us;845us;1091us;845us;1094us;845us;1100us;845us;1104us;845us;1108us;845us;1114us;845us;1116us;845us;1121us;845us;1123us;845us;1125us;845us;1127us;845us;1129us;845us;1131us;845us;1133us;845us;1135us;845us;1145us;845us;1152us;845us;1158us;845us;1160us;845us;1164us;845us;1165us;845us;1169us;845us;1171us;845us;1172us;845us;1176us;845us;1179us;845us;1182us;845us;1184us;845us;1187us;845us;1189us;845us;1229us;845us;1232us;845us;1235us;845us;1238us;845us;1240us;845us;1244us;845us;1246us;845us;1248us;845us;1250us;845us;1252us;845us;1254us;845us;1256us;845us;1258us;845us;1260us;845us;1262us;845us;1264us;845us;1266us;845us;1268us;845us;1270us;845us;1272us;845us;1274us;845us;1276us;845us;1278us;845us;1280us;845us;1282us;845us;1284us;845us;1285us;845us;1286us;845us;1287us;845us;1290us;845us;1300us;845us;1303us;845us;1305us;845us;1311us;845us;1318us;845us;1320us;845us;1325us;845us;1326us;845us;1330us;845us;1332us;845us;1335us;845us;1336us;845us;1338us;845us;1341us;845us;1343us;845us;1345us;845us;1347us;845us;1349us;845us;1350us;845us;1351us;845us;1352us;845us;1354us;845us;1355us;845us;1357us;845us;1358us;845us;1360us;845us;1361us;845us;1363us;845us;1364us;845us;1366us;845us;1367us;845us;1369us;845us;1370us;845us;1372us;845us;1373us;845us;1376us;845us;1377us;845us;1384us;845us;1386us;845us;1388us;845us;1389us;845us;1390us;845us;1391us;845us;1395us;845us;1400us;845us;1406us;845us;1407us;845us;1410us;845us;1411us;845us;1429us;845us;1436us;845us;1443us;845us;1450us;845us;1467us;845us;1474us;845us;1475us;845us;1481us;845us;1487us;845us;1488us;845us;1489us;845us;1501us;845us;1507us;845us;1515us;845us;1517us;845us;1530us;845us;1532us;845us;1535us;845us;1536us;845us;1539us;1540us;1542us;845us;1548us;845us;1551us;845us;1553us;845us;1555us;845us;1557us;845us;1562us;845us;1567us;845us;1592us;845us;1617us;845us;1625us;845us;1632us;845us;1634us;845us;1637us;845us;1639us;845us;1649us;845us;1651us;845us;1655us;845us;1657us;845us;1658us;845us;1662us;845us;1666us;845us;1669us;845us;1672us;845us;1675us;845us;1677us;845us;1679us;845us;1684us;845us;1688us;845us;1693us;845us;1698us;845us;1701us;845us;1704us;845us;1707us;845us;1712us;845us;1715us;845us;1717us;845us;1720us;845us;1724us;845us;1727us;845us;1729us;845us;1732us;845us;1735us;845us;1737us;845us;1749us;845us;1755us;845us;1758us;845us;1825us;845us;1829us;845us;1835us;845us;1842us;845us;1846us;845us;1852us;845us;1853us;845us;1862us;845us;1876us;845us;1878us;845us;1889us;845us;2019us;845us;2023us;845us;302us;65535us;6us;846us;8us;846us;31us;846us;40us;43us;111us;846us;114us;846us;116us;846us;149us;846us;178us;846us;184us;846us;188us;846us;190us;846us;201us;846us;237us;846us;251us;846us;274us;846us;290us;846us;331us;846us;335us;846us;340us;846us;385us;846us;419us;846us;422us;846us;424us;846us;427us;846us;439us;846us;446us;846us;454us;846us;465us;846us;468us;846us;481us;846us;491us;846us;497us;846us;522us;846us;525us;846us;561us;846us;569us;846us;570us;846us;612us;846us;625us;846us;629us;846us;634us;846us;639us;846us;642us;846us;652us;846us;663us;846us;678us;846us;680us;846us;683us;846us;687us;846us;689us;846us;700us;846us;704us;846us;707us;846us;710us;846us;713us;846us;729us;846us;742us;846us;751us;846us;757us;846us;804us;846us;807us;846us;811us;846us;821us;846us;827us;846us;871us;846us;897us;846us;899us;846us;900us;846us;904us;846us;905us;846us;908us;846us;910us;846us;911us;846us;920us;846us;924us;846us;925us;846us;927us;846us;929us;846us;932us;846us;934us;846us;936us;846us;939us;846us;943us;846us;945us;846us;947us;846us;955us;846us;958us;846us;969us;846us;977us;846us;998us;846us;1000us;846us;1003us;846us;1006us;846us;1007us;846us;1009us;846us;1010us;846us;1013us;846us;1015us;846us;1016us;846us;1022us;846us;1026us;846us;1028us;846us;1034us;846us;1044us;846us;1050us;846us;1052us;846us;1055us;846us;1058us;846us;1076us;846us;1077us;846us;1081us;846us;1082us;846us;1088us;846us;1091us;846us;1094us;846us;1100us;846us;1104us;846us;1108us;846us;1114us;846us;1116us;846us;1121us;846us;1123us;846us;1125us;846us;1127us;846us;1129us;846us;1131us;846us;1133us;846us;1135us;846us;1145us;846us;1152us;846us;1158us;846us;1160us;846us;1164us;846us;1165us;846us;1169us;846us;1171us;846us;1172us;846us;1176us;846us;1179us;846us;1182us;846us;1184us;846us;1187us;846us;1189us;846us;1229us;846us;1232us;846us;1235us;846us;1238us;846us;1240us;846us;1244us;846us;1246us;846us;1248us;846us;1250us;846us;1252us;846us;1254us;846us;1256us;846us;1258us;846us;1260us;846us;1262us;846us;1264us;846us;1266us;846us;1268us;846us;1270us;846us;1272us;846us;1274us;846us;1276us;846us;1278us;846us;1280us;846us;1282us;846us;1284us;846us;1285us;846us;1286us;846us;1287us;846us;1290us;846us;1300us;846us;1303us;846us;1305us;846us;1311us;846us;1318us;846us;1320us;846us;1325us;846us;1326us;846us;1330us;846us;1332us;846us;1335us;846us;1336us;846us;1338us;846us;1341us;846us;1343us;846us;1345us;846us;1347us;846us;1349us;846us;1350us;846us;1351us;846us;1352us;846us;1354us;846us;1355us;846us;1357us;846us;1358us;846us;1360us;846us;1361us;846us;1363us;846us;1364us;846us;1366us;846us;1367us;846us;1369us;846us;1370us;846us;1372us;846us;1373us;846us;1376us;846us;1377us;846us;1384us;846us;1386us;846us;1388us;846us;1389us;846us;1390us;846us;1391us;846us;1395us;846us;1400us;846us;1406us;846us;1407us;846us;1410us;846us;1411us;846us;1429us;846us;1436us;846us;1443us;846us;1450us;846us;1467us;846us;1474us;846us;1475us;846us;1481us;846us;1487us;846us;1488us;846us;1489us;846us;1501us;846us;1507us;846us;1515us;846us;1517us;846us;1530us;846us;1532us;846us;1535us;846us;1536us;846us;1542us;846us;1548us;846us;1551us;846us;1553us;846us;1555us;846us;1557us;846us;1562us;846us;1567us;846us;1592us;846us;1617us;846us;1625us;846us;1632us;846us;1634us;846us;1637us;846us;1639us;846us;1649us;846us;1651us;846us;1655us;846us;1657us;846us;1658us;846us;1662us;846us;1666us;846us;1669us;846us;1672us;846us;1675us;846us;1677us;846us;1679us;846us;1684us;846us;1688us;846us;1693us;846us;1698us;846us;1701us;846us;1704us;846us;1707us;846us;1712us;846us;1715us;846us;1717us;846us;1720us;846us;1724us;846us;1727us;846us;1729us;846us;1732us;846us;1735us;846us;1737us;846us;1749us;846us;1755us;846us;1758us;846us;1825us;846us;1829us;846us;1835us;846us;1842us;846us;1846us;846us;1852us;846us;1853us;846us;1862us;846us;1876us;846us;1878us;846us;1889us;846us;2019us;846us;2023us;846us;2us;65535us;2019us;2020us;2023us;2024us;4us;65535us;2019us;2022us;2020us;2021us;2023us;2027us;2024us;2025us;156us;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;689us;1460us;700us;1460us;751us;1460us;757us;1460us;807us;1460us;811us;1460us;821us;1460us;1028us;1460us;1034us;1460us;1050us;1460us;1052us;1460us;1055us;1460us;1058us;1460us;1077us;1460us;1082us;1460us;1088us;1460us;1091us;1460us;1094us;1460us;1100us;1460us;1104us;1460us;1108us;1460us;1114us;1460us;1116us;1460us;1121us;1460us;1123us;1460us;1125us;1460us;1127us;1460us;1129us;1460us;1131us;1460us;1135us;1460us;1145us;1460us;1152us;1460us;1158us;1460us;1160us;1460us;1165us;1460us;1169us;1460us;1172us;1460us;1176us;1460us;1179us;1460us;1182us;1460us;1184us;1460us;1187us;1460us;1189us;1460us;1238us;1460us;1240us;1460us;1244us;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;1285us;1460us;1286us;1460us;1287us;1460us;1290us;1460us;1300us;1460us;1325us;1460us;1326us;1460us;1330us;1460us;1332us;1460us;1335us;1460us;1336us;1460us;1338us;1460us;1341us;1460us;1343us;1460us;1345us;1460us;1347us;1460us;1349us;1460us;1350us;1460us;1351us;1460us;1352us;1460us;1354us;1460us;1355us;1460us;1357us;1460us;1358us;1460us;1360us;1460us;1361us;1460us;1363us;1460us;1364us;1460us;1366us;1460us;1367us;1460us;1369us;1460us;1370us;1460us;1376us;1460us;1377us;1460us;1384us;1460us;1386us;1460us;1388us;1460us;1389us;1460us;1390us;1460us;1391us;1460us;1395us;1460us;1400us;1460us;1406us;1460us;1407us;1460us;1410us;1460us;1411us;1460us;1429us;1460us;1436us;1460us;1443us;1460us;1450us;1460us;1467us;1460us;1474us;1460us;1475us;1460us;1481us;1460us;1487us;1460us;1488us;1460us;1489us;1460us;1501us;1460us;1507us;1460us;1517us;1460us;1530us;1460us;1532us;1460us;1535us;1460us;1536us;1460us;1542us;1460us;1557us;1460us;1562us;1460us;1567us;1460us;1592us;1460us;1625us;1460us;1634us;1460us;1639us;1460us;1862us;1460us;2019us;1460us;2023us;1460us;11us;65535us;330us;331us;334us;335us;339us;340us;364us;365us;523us;525us;770us;771us;782us;786us;785us;786us;1374us;1376us;1375us;1377us;1556us;1557us;5us;65535us;109us;619us;182us;619us;452us;619us;595us;614us;924us;619us;14us;65535us;31us;276us;69us;99us;93us;99us;195us;198us;237us;276us;251us;276us;270us;276us;287us;290us;317us;344us;328us;344us;350us;475us;1540us;1547us;2031us;2033us;2032us;2033us;10us;65535us;31us;50us;69us;50us;93us;50us;237us;50us;251us;50us;270us;50us;317us;342us;328us;342us;2036us;2038us;2037us;2038us;8us;65535us;575us;576us;578us;579us;951us;952us;953us;954us;1073us;1521us;1517us;1523us;1518us;1519us;2041us;2042us;5us;65535us;584us;585us;587us;588us;1074us;1629us;1625us;1631us;1626us;1627us;44us;65535us;572us;573us;602us;603us;650us;651us;653us;654us;657us;658us;693us;694us;696us;697us;773us;774us;857us;858us;878us;881us;879us;880us;883us;884us;940us;941us;970us;971us;973us;974us;978us;979us;981us;982us;1071us;1494us;1072us;1495us;1224us;1502us;1243us;1437us;1301us;1302us;1444us;1445us;1448us;1449us;1487us;1490us;1488us;1490us;1489us;1490us;1491us;1492us;1506us;1507us;1513us;1514us;1549us;1550us;1553us;1554us;1750us;1751us;1836us;1837us;1847us;1849us;1848us;1849us;1854us;1855us;1865us;1866us;1901us;1902us;1928us;1929us;1930us;1931us;1934us;1935us;1937us;1938us;2046us;2047us;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;812us;813us;1028us;1032us;1029us;1030us;1034us;1037us;1035us;1036us;1056us;1057us;2050us;2051us;1us;65535us;1491us;1493us;49us;65535us;317us;326us;319us;325us;389us;391us;467us;471us;490us;494us;522us;528us;904us;906us;905us;907us;908us;909us;996us;1534us;1009us;1011us;1010us;1012us;1013us;1014us;1133us;1155us;1134us;1141us;1135us;1140us;1136us;1138us;1244us;1245us;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;1341us;1342us;1343us;1344us;1345us;1346us;1347us;1348us;1532us;1533us;1591us;1595us;1592us;1594us;1871us;1872us;1878us;1882us;1883us;1885us;1924us;1926us;1974us;1976us;|] -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;2110us;2112us;2117us;2121us;2330us;2334us;2338us;2341us;2343us;2345us;2360us;2375us;2390us;2394us;2398us;2439us;2446us;2458us;2511us;2514us;2539us;2564us;2589us;2592us;2595us;2599us;2627us;2634us;2640us;2693us;2695us;2753us;2947us;2952us;3069us;3072us;3074us;3079us;3084us;3092us;3100us;3102us;3104us;3107us;3110us;3112us;3229us;3364us;3501us;3507us;3657us;3661us;3818us;3975us;4184us;4341us;4498us;4502us;4506us;4508us;4665us;4667us;4669us;4671us;4673us;4675us;4677us;4679us;4681us;4685us;4687us;4692us;4694us;4696us;4698us;4701us;4708us;4715us;4719us;4725us;4729us;4731us;4733us;4735us;4738us;4740us;4745us;4751us;4908us;5067us;5184us;5301us;5305us;5311us;5315us;5325us;5335us;5340us;5354us;5365us;5399us;5401us;5435us;5445us;5528us;5646us;5764us;5847us;5871us;5877us;5880us;5963us;5968us;6052us;6146us;6151us;6158us;6168us;6171us;6175us;6177us;6184us;6191us;6198us;6204us;6336us;6723us;6868us;7087us;7095us;7098us;7106us;7119us;7177us;7187us;7337us;7354us;7369us;7372us;7383us;7388us;7391us;7402us;7405us;7406us;7425us;7434us;7439us;7440us;7452us;7460us;7465us;7475us;7478us;7481us;7484us;7788us;8091us;8094us;8099us;8256us;8268us;8274us;8289us;8300us;8309us;8315us;8360us;8389us;8391us;|] -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;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;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;1086us;1087us;1us;34us;1us;35us;2us;36us;37us;2us;36us;37us;3us;36us;1086us;1087us;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;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;1us;66us;54us;66us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;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;982us;983us;984us;2us;95us;96us;4us;95us;982us;983us;984us;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;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;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;593us;594us;1us;143us;5us;143us;595us;596us;597us;598us;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;1086us;1087us;1us;152us;2us;153us;154us;4us;153us;982us;983us;984us;1us;154us;3us;155us;1086us;1087us;1us;155us;3us;156us;1086us;1087us;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;1086us;1087us;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;588us;1us;173us;1us;173us;1us;174us;1us;175us;1us;176us;2us;177us;1157us;1us;177us;3us;178us;1086us;1087us;1us;178us;1us;178us;2us;179us;180us;3us;179us;1086us;1087us;1us;179us;1us;179us;1us;180us;3us;180us;1086us;1087us;1us;180us;1us;180us;1us;180us;1us;181us;1us;181us;1us;182us;1us;182us;2us;183us;1085us;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;982us;983us;984us;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;526us;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;427us;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;978us;1086us;1087us;1us;296us;1us;296us;1us;296us;1us;297us;1us;298us;1us;299us;5us;300us;985us;1035us;1036us;1047us;2us;300us;1032us;2us;300us;458us;1us;300us;1us;300us;3us;301us;302us;303us;2us;301us;302us;1us;301us;1us;302us;1us;303us;1us;303us;6us;304us;1037us;1038us;1039us;1040us;1041us;1us;304us;1us;305us;3us;306us;307us;308us;2us;306us;307us;1us;306us;1us;307us;1us;308us;1us;308us;1us;309us;1us;310us;1us;311us;1us;312us;1us;313us;4us;314us;315us;316us;317us;4us;314us;316us;1086us;1087us;1us;315us;3us;315us;1086us;1087us;1us;316us;1us;317us;1us;318us;1us;319us;2us;319us;320us;1us;319us;2us;320us;324us;3us;320us;325us;326us;1us;320us;2us;320us;325us;1us;320us;1us;321us;2us;322us;323us;2us;322us;323us;1us;323us;2us;323us;335us;1us;324us;1us;324us;1us;324us;1us;324us;1us;325us;1us;328us;1us;328us;1us;328us;1us;328us;1us;328us;1us;329us;1us;332us;2us;332us;333us;2us;333us;925us;2us;333us;927us;1us;333us;1us;333us;1us;334us;2us;335us;976us;2us;335us;977us;1us;335us;3us;335us;1049us;1050us;3us;336us;1049us;1050us;1us;337us;1us;337us;1us;337us;1us;337us;11us;338us;339us;340us;341us;342us;344us;345us;346us;976us;979us;988us;2us;338us;988us;2us;338us;988us;7us;339us;340us;341us;342us;344us;345us;346us;1us;339us;3us;340us;345us;346us;1us;340us;1us;341us;1us;342us;1us;342us;1us;342us;5us;343us;985us;1035us;1036us;1047us;2us;343us;348us;1us;343us;1us;343us;1us;343us;1us;343us;1us;343us;1us;344us;1us;344us;1us;345us;4us;347us;982us;983us;984us;1us;348us;4us;348us;982us;983us;984us;9us;349us;961us;962us;966us;967us;968us;982us;983us;984us;1us;350us;1us;350us;1us;351us;1us;351us;1us;351us;2us;352us;370us;1us;353us;2us;354us;355us;1us;354us;1us;354us;9us;356us;357us;358us;359us;360us;361us;362us;363us;364us;9us;356us;357us;358us;359us;360us;361us;362us;363us;364us;6us;356us;358us;359us;362us;363us;364us;1us;357us;2us;358us;362us;1us;358us;1us;359us;2us;360us;361us;1us;360us;1us;361us;1us;362us;1us;363us;1us;363us;1us;364us;6us;364us;766us;767us;768us;772us;775us;1us;365us;6us;366us;367us;1088us;1089us;1091us;1092us;1us;366us;1us;366us;1us;367us;1us;367us;1us;367us;6us;368us;369us;371us;372us;374us;1085us;1us;368us;2us;369us;374us;7us;369us;374us;766us;767us;768us;772us;775us;2us;369us;374us;1us;370us;2us;371us;372us;1us;371us;1us;372us;1us;373us;1us;373us;2us;375us;376us;1us;375us;1us;375us;3us;377us;379us;1085us;2us;377us;379us;8us;377us;952us;953us;954us;955us;982us;983us;984us;8us;378us;952us;953us;954us;955us;982us;983us;984us;1us;379us;1us;380us;1us;381us;1us;382us;2us;383us;384us;2us;383us;1157us;1us;383us;1us;384us;1us;385us;1us;385us;3us;386us;387us;388us;3us;386us;387us;388us;3us;386us;387us;388us;2us;386us;387us;1us;386us;1us;387us;1us;388us;1us;389us;1us;389us;2us;390us;391us;2us;390us;391us;2us;390us;391us;1us;390us;1us;390us;1us;391us;3us;392us;393us;394us;2us;393us;394us;1us;393us;1us;394us;1us;396us;3us;396us;1086us;1087us;1us;397us;1us;397us;1us;397us;1us;398us;1us;399us;1us;399us;1us;400us;1us;400us;1us;400us;1us;400us;2us;401us;402us;1us;401us;1us;401us;1us;402us;1us;403us;1us;404us;1us;405us;1us;406us;1us;407us;1us;408us;1us;409us;1us;409us;1us;409us;1us;409us;1us;409us;1us;409us;1us;409us;1us;409us;2us;410us;413us;2us;411us;414us;1us;413us;1us;413us;1us;414us;1us;414us;2us;415us;416us;5us;415us;416us;418us;419us;420us;1us;416us;3us;417us;1086us;1087us;4us;418us;419us;420us;422us;1us;418us;1us;418us;1us;418us;1us;419us;1us;420us;1us;421us;2us;421us;423us;1us;421us;2us;422us;423us;1us;424us;1us;424us;1us;425us;1us;425us;1us;425us;1us;427us;1us;427us;1us;428us;3us;429us;430us;431us;3us;429us;430us;431us;3us;429us;430us;431us;3us;429us;430us;431us;2us;429us;430us;1us;429us;1us;430us;1us;431us;2us;432us;433us;2us;432us;433us;1us;432us;1us;433us;1us;434us;1us;435us;2us;435us;436us;1us;436us;1us;438us;2us;438us;439us;1us;438us;1us;438us;1us;439us;1us;439us;1us;440us;2us;441us;442us;1us;441us;1us;441us;1us;442us;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;2us;461us;463us;1us;461us;1us;461us;2us;462us;464us;2us;462us;464us;1us;462us;1us;462us;1us;465us;1us;466us;1us;466us;1us;466us;1us;467us;1us;468us;1us;468us;2us;469us;470us;1us;470us;1us;470us;7us;471us;486us;487us;488us;493us;495us;499us;1us;472us;1us;473us;1us;473us;3us;474us;475us;476us;4us;474us;475us;477us;478us;2us;474us;475us;1us;474us;1us;475us;1us;476us;1us;478us;1us;478us;1us;479us;5us;481us;482us;483us;484us;485us;2us;481us;483us;1us;481us;1us;482us;1us;483us;2us;484us;588us;1us;484us;1us;485us;7us;486us;487us;487us;488us;493us;495us;499us;7us;486us;487us;488us;488us;493us;495us;499us;7us;486us;487us;488us;492us;493us;495us;499us;7us;486us;487us;488us;493us;493us;495us;499us;7us;486us;487us;488us;493us;495us;496us;499us;7us;486us;487us;488us;493us;495us;498us;499us;7us;486us;487us;488us;493us;495us;499us;499us;7us;486us;487us;488us;493us;495us;499us;590us;7us;486us;487us;488us;493us;495us;499us;591us;7us;486us;487us;488us;493us;495us;499us;641us;8us;486us;487us;488us;493us;495us;499us;642us;643us;1us;486us;1us;486us;1us;487us;1us;488us;3us;489us;492us;494us;2us;490us;498us;1us;491us;2us;492us;494us;2us;493us;495us;1us;494us;1us;495us;2us;496us;497us;1us;497us;1us;498us;1us;499us;3us;500us;501us;502us;1us;500us;3us;501us;502us;1157us;1us;501us;1us;502us;1us;502us;3us;503us;504us;505us;6us;503us;504us;505us;1124us;1126us;1127us;2us;503us;504us;9us;503us;543us;544us;547us;548us;550us;553us;555us;559us;1us;504us;1us;505us;8us;506us;507us;508us;509us;510us;511us;512us;528us;4us;506us;507us;508us;509us;1us;507us;1us;508us;1us;508us;1us;509us;1us;509us;1us;510us;1us;511us;1us;511us;1us;512us;1us;512us;1us;513us;1us;513us;1us;514us;9us;515us;533us;534us;535us;536us;1088us;1089us;1091us;1092us;1us;515us;1us;515us;1us;516us;4us;517us;518us;519us;520us;1us;517us;1us;518us;1us;518us;1us;519us;1us;519us;1us;521us;2us;522us;523us;1us;522us;1us;522us;1us;523us;1us;523us;1us;524us;1us;524us;1us;524us;1us;525us;1us;525us;1us;525us;1us;527us;2us;527us;1109us;1us;527us;1us;528us;1us;529us;1us;530us;1us;531us;1us;532us;8us;533us;534us;535us;536us;1088us;1089us;1091us;1092us;2us;533us;534us;1us;533us;1us;534us;3us;535us;588us;1089us;2us;535us;1089us;1us;536us;4us;537us;538us;539us;540us;4us;537us;538us;539us;540us;5us;537us;538us;545us;552us;554us;1us;537us;1us;538us;2us;539us;588us;1us;539us;1us;540us;9us;541us;543us;544us;547us;548us;550us;553us;555us;559us;9us;543us;544us;544us;547us;548us;550us;553us;555us;559us;9us;543us;544us;547us;548us;549us;550us;553us;555us;559us;9us;543us;544us;547us;548us;550us;550us;553us;555us;559us;9us;543us;544us;547us;548us;550us;552us;553us;555us;559us;9us;543us;544us;547us;548us;550us;553us;553us;555us;559us;9us;543us;544us;547us;548us;550us;553us;555us;556us;559us;9us;543us;544us;547us;548us;550us;553us;555us;558us;559us;8us;543us;544us;547us;548us;550us;553us;555us;559us;9us;543us;544us;547us;548us;550us;553us;555us;559us;559us;9us;543us;544us;547us;548us;550us;553us;555us;559us;562us;10us;543us;544us;547us;548us;550us;553us;555us;559us;566us;567us;14us;543us;544us;547us;548us;550us;553us;555us;559us;635us;636us;849us;850us;851us;852us;9us;543us;544us;547us;548us;550us;553us;555us;559us;718us;1us;543us;1us;543us;1us;544us;3us;545us;552us;554us;2us;546us;558us;2us;547us;548us;1us;547us;1us;548us;1us;549us;1us;550us;1us;551us;2us;552us;554us;2us;553us;555us;1us;554us;1us;555us;2us;556us;557us;1us;557us;1us;558us;1us;559us;2us;560us;561us;1us;560us;2us;561us;1157us;1us;561us;5us;562us;563us;564us;1086us;1087us;2us;562us;563us;1us;563us;1us;564us;1us;566us;2us;567us;1157us;1us;567us;3us;568us;569us;570us;2us;568us;569us;1us;568us;1us;569us;1us;570us;1us;571us;2us;572us;573us;1us;572us;1us;572us;1us;573us;54us;574us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;2us;575us;576us;1us;575us;1us;577us;2us;577us;919us;3us;578us;579us;580us;2us;578us;579us;1us;578us;1us;579us;1us;581us;1us;581us;58us;582us;583us;584us;585us;586us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;2us;582us;583us;1us;582us;1us;585us;1us;585us;1us;586us;1us;586us;1us;586us;1us;586us;5us;587us;595us;596us;597us;598us;1us;588us;2us;588us;624us;2us;588us;630us;2us;588us;633us;2us;588us;635us;2us;588us;707us;2us;588us;717us;2us;588us;721us;2us;588us;780us;2us;588us;793us;2us;588us;812us;2us;588us;816us;2us;588us;821us;3us;588us;821us;1089us;2us;588us;837us;2us;588us;911us;1us;589us;1us;590us;1us;590us;1us;590us;1us;590us;1us;590us;1us;591us;1us;591us;1us;591us;1us;591us;1us;591us;1us;591us;2us;593us;594us;2us;593us;594us;1us;593us;1us;594us;4us;595us;596us;597us;598us;1us;595us;1us;596us;2us;597us;598us;1us;597us;1us;598us;1us;599us;1us;600us;1us;601us;2us;602us;603us;2us;602us;603us;1us;602us;1us;603us;2us;604us;605us;2us;604us;605us;1us;604us;1us;605us;5us;606us;607us;608us;609us;610us;3us;606us;607us;610us;1us;606us;1us;607us;2us;608us;609us;1us;609us;1us;610us;1us;610us;3us;611us;612us;613us;55us;611us;612us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;1us;611us;1us;612us;1us;613us;1us;614us;54us;614us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;2us;615us;616us;54us;615us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;1us;617us;1us;617us;2us;618us;619us;1us;618us;1us;620us;1us;620us;1us;621us;1us;621us;15us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;6us;622us;623us;624us;625us;626us;627us;4us;622us;623us;624us;625us;2us;622us;623us;1us;622us;1us;623us;1us;624us;1us;625us;1us;626us;1us;627us;1us;627us;5us;628us;629us;630us;631us;632us;4us;628us;629us;630us;631us;2us;628us;629us;1us;628us;1us;629us;1us;630us;1us;631us;1us;632us;1us;633us;1us;633us;1us;633us;1us;634us;1us;635us;2us;636us;1218us;2us;637us;639us;54us;637us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;2us;638us;640us;54us;638us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;1us;639us;1us;640us;1us;641us;1us;641us;1us;641us;1us;641us;1us;641us;1us;641us;1us;641us;2us;642us;643us;2us;642us;643us;2us;642us;643us;2us;642us;643us;2us;642us;643us;1us;642us;1us;642us;1us;643us;1us;644us;1us;644us;1us;644us;1us;644us;1us;644us;1us;645us;1us;645us;1us;645us;1us;646us;54us;646us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;1us;647us;1us;647us;54us;648us;649us;650us;651us;652us;653us;654us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;57us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;702us;703us;704us;705us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;725us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;729us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;734us;742us;743us;744us;745us;55us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;736us;737us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;738us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;740us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;743us;744us;745us;53us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;827us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;849us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;852us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;852us;55us;648us;649us;650us;651us;652us;653us;654us;657us;658us;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;742us;743us;744us;745us;1179us;1180us;2us;648us;649us;1us;648us;1us;649us;2us;650us;651us;1us;650us;1us;651us;2us;652us;653us;1us;652us;1us;653us;1us;654us;2us;655us;701us;1us;655us;1us;655us;5us;656us;738us;739us;740us;741us;7us;656us;738us;739us;740us;741us;782us;783us;2us;657us;658us;1us;658us;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;699us;3us;699us;1116us;1117us;2us;699us;1117us;1us;700us;2us;700us;1104us;3us;702us;703us;704us;2us;702us;703us;1us;702us;1us;703us;1us;704us;1us;704us;1us;705us;1us;706us;1us;707us;1us;708us;1us;709us;1us;709us;1us;709us;1us;710us;1us;710us;3us;711us;712us;713us;2us;711us;712us;1us;711us;1us;712us;1us;713us;1us;714us;2us;715us;716us;1us;715us;1us;716us;1us;717us;1us;718us;6us;719us;720us;721us;722us;723us;724us;4us;719us;720us;722us;723us;2us;720us;722us;1us;720us;1us;721us;1us;721us;1us;722us;1us;723us;1us;724us;1us;725us;1us;727us;1us;727us;1us;728us;1us;728us;2us;729us;730us;1us;730us;2us;731us;732us;1us;731us;1us;732us;1us;734us;1us;735us;1us;735us;2us;736us;737us;1us;736us;1us;737us;4us;738us;739us;740us;741us;1us;739us;2us;740us;741us;1us;741us;4us;742us;743us;744us;745us;1us;742us;2us;744us;745us;1us;744us;1us;746us;2us;746us;1082us;3us;746us;1082us;1096us;2us;746us;1096us;1us;746us;1us;747us;2us;747us;1103us;1us;747us;1us;748us;2us;748us;1099us;1us;748us;1us;749us;2us;749us;1102us;1us;749us;1us;750us;2us;750us;1115us;1us;750us;1us;751us;2us;751us;1110us;1us;751us;1us;752us;2us;752us;1111us;1us;752us;4us;753us;754us;755us;756us;8us;753us;754us;755us;756us;893us;894us;895us;896us;3us;753us;754us;755us;7us;753us;754us;755us;893us;894us;895us;896us;3us;753us;754us;755us;5us;753us;754us;755us;894us;895us;2us;753us;754us;4us;753us;754us;894us;895us;1us;753us;1us;753us;1us;755us;1us;756us;1us;757us;1us;757us;1us;758us;1us;758us;2us;759us;760us;8us;759us;760us;867us;868us;869us;873us;874us;875us;2us;760us;765us;7us;760us;867us;868us;869us;873us;874us;875us;1us;760us;7us;761us;764us;766us;767us;768us;772us;775us;6us;761us;766us;767us;768us;772us;775us;1us;762us;6us;762us;766us;767us;768us;772us;775us;6us;763us;766us;767us;768us;772us;775us;2us;764us;765us;5us;764us;765us;870us;871us;872us;2us;764us;765us;1us;765us;6us;766us;766us;767us;768us;772us;775us;6us;766us;767us;767us;768us;772us;775us;6us;766us;767us;768us;769us;772us;775us;6us;766us;767us;768us;772us;775us;1044us;1us;766us;1us;767us;1us;768us;1us;768us;1us;769us;2us;769us;1093us;1us;770us;2us;770us;1081us;1us;770us;2us;770us;1081us;1us;771us;1us;772us;1us;772us;1us;773us;1us;773us;1us;773us;1us;774us;2us;774us;1109us;1us;774us;1us;775us;1us;775us;1us;776us;1us;777us;4us;778us;779us;780us;781us;2us;778us;779us;1us;778us;1us;779us;1us;780us;1us;781us;3us;782us;783us;907us;2us;782us;783us;1us;782us;1us;783us;1us;784us;1us;785us;1us;786us;1us;788us;6us;789us;790us;1088us;1089us;1091us;1092us;1us;789us;1us;789us;1us;789us;1us;789us;1us;790us;1us;790us;4us;791us;792us;793us;794us;2us;791us;792us;1us;791us;1us;792us;1us;793us;1us;794us;1us;795us;1us;796us;1us;797us;1us;798us;1us;799us;1us;800us;1us;801us;1us;802us;1us;803us;1us;804us;1us;805us;4us;806us;807us;808us;809us;2us;806us;807us;1us;806us;1us;807us;1us;808us;1us;808us;1us;809us;4us;810us;811us;812us;813us;5us;810us;811us;812us;813us;1118us;2us;810us;811us;1us;810us;1us;811us;1us;812us;1us;813us;4us;814us;815us;816us;817us;2us;814us;815us;1us;814us;1us;815us;1us;816us;1us;817us;10us;818us;819us;820us;821us;822us;823us;824us;825us;826us;827us;15us;818us;819us;820us;821us;822us;823us;824us;825us;826us;827us;832us;1088us;1089us;1091us;1092us;14us;818us;819us;820us;821us;822us;823us;824us;825us;826us;827us;1088us;1089us;1091us;1092us;1us;818us;2us;819us;820us;1us;819us;1us;820us;1us;821us;2us;821us;1089us;1us;822us;1us;823us;1us;824us;1us;825us;1us;826us;1us;827us;1us;827us;1us;828us;1us;828us;1us;828us;1us;828us;1us;828us;1us;828us;1us;829us;1us;830us;1us;831us;2us;831us;834us;2us;832us;833us;1us;832us;1us;833us;4us;833us;982us;983us;984us;5us;835us;836us;837us;838us;839us;2us;835us;836us;1us;835us;1us;836us;1us;837us;1us;838us;1us;839us;1us;840us;1us;841us;1us;842us;1us;843us;1us;845us;1us;847us;1us;848us;1us;848us;2us;849us;850us;1us;850us;1us;851us;1us;852us;1us;852us;1us;853us;1us;854us;1us;855us;1us;855us;1us;855us;2us;855us;856us;1us;855us;1us;855us;1us;856us;1us;859us;1us;861us;1us;861us;1us;861us;1us;861us;2us;863us;864us;1us;863us;5us;864us;985us;1035us;1036us;1047us;1us;864us;1us;865us;1us;865us;1us;865us;1us;865us;2us;865us;884us;1us;865us;1us;866us;2us;867us;868us;1us;867us;2us;867us;884us;1us;867us;1us;868us;2us;871us;872us;1us;872us;2us;872us;884us;1us;872us;1us;873us;1us;873us;2us;873us;884us;1us;873us;2us;874us;875us;1us;874us;1us;874us;1us;875us;2us;875us;884us;1us;875us;1us;875us;1us;876us;2us;876us;884us;2us;878us;881us;2us;879us;880us;1us;880us;1us;881us;3us;882us;1086us;1087us;1us;883us;1us;884us;5us;886us;887us;888us;889us;890us;3us;886us;887us;888us;1us;886us;1us;888us;1us;890us;2us;891us;892us;1us;891us;1us;891us;1us;891us;1us;892us;1us;892us;1us;894us;1us;897us;2us;899us;901us;1us;899us;1us;900us;1us;900us;1us;900us;1us;901us;1us;901us;1us;902us;1us;902us;1us;904us;1us;904us;1us;905us;1us;905us;1us;906us;4us;906us;982us;983us;984us;1us;906us;1us;906us;1us;906us;1us;907us;1us;907us;1us;908us;5us;909us;910us;911us;912us;913us;2us;909us;910us;1us;909us;1us;910us;1us;911us;1us;912us;1us;913us;2us;914us;915us;2us;914us;915us;2us;914us;915us;1us;914us;1us;915us;6us;916us;917us;918us;919us;920us;921us;5us;916us;917us;918us;919us;920us;4us;916us;917us;918us;919us;2us;916us;917us;1us;916us;1us;917us;1us;918us;1us;918us;1us;920us;1us;920us;1us;921us;1us;921us;1us;922us;1us;922us;1us;923us;1us;923us;1us;923us;2us;924us;925us;1us;925us;2us;926us;927us;1us;927us;2us;929us;930us;1us;929us;1us;930us;3us;931us;932us;933us;2us;931us;932us;1us;931us;1us;932us;3us;934us;935us;937us;2us;934us;935us;1us;934us;1us;935us;1us;936us;1us;936us;3us;938us;939us;941us;2us;938us;939us;1us;938us;1us;939us;1us;940us;1us;940us;5us;942us;943us;944us;945us;946us;6us;942us;943us;946us;982us;983us;984us;2us;942us;943us;4us;942us;982us;983us;984us;1us;943us;2us;944us;945us;2us;944us;945us;2us;944us;945us;4us;944us;982us;983us;984us;1us;945us;6us;947us;948us;951us;982us;983us;984us;2us;947us;948us;4us;947us;982us;983us;984us;1us;948us;2us;949us;950us;2us;949us;950us;2us;949us;950us;4us;949us;982us;983us;984us;1us;950us;8us;952us;953us;954us;955us;955us;982us;983us;984us;7us;952us;953us;954us;955us;982us;983us;984us;4us;952us;953us;954us;955us;1us;952us;1us;953us;1us;954us;1us;954us;4us;956us;957us;958us;959us;3us;956us;957us;958us;1us;956us;1us;957us;1us;958us;1us;958us;1us;960us;1us;960us;8us;961us;962us;966us;967us;968us;982us;983us;984us;2us;961us;962us;1us;961us;1us;962us;1us;963us;1us;963us;2us;964us;965us;1us;964us;1us;965us;2us;966us;967us;1us;966us;1us;967us;8us;969us;970us;972us;973us;975us;982us;983us;984us;2us;969us;970us;1us;969us;1us;970us;1us;971us;1us;971us;2us;972us;973us;1us;972us;1us;973us;1us;974us;1us;974us;3us;976us;979us;988us;1us;976us;4us;977us;1030us;1049us;1050us;1us;977us;3us;978us;1086us;1087us;1us;979us;2us;980us;981us;4us;980us;981us;1048us;1051us;1us;980us;1us;980us;7us;982us;983us;984us;1037us;1038us;1039us;1040us;1us;982us;1us;983us;1us;983us;1us;984us;4us;985us;1035us;1036us;1047us;1us;985us;1us;985us;1us;985us;1us;986us;1us;987us;1us;988us;1us;988us;2us;989us;1034us;1us;989us;1us;989us;32us;990us;991us;992us;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;1us;990us;31us;991us;992us;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;1us;991us;30us;992us;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;1us;992us;29us;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;1us;993us;28us;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;1us;994us;27us;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;1us;995us;26us;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;1us;996us;25us;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;1us;997us;24us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;998us;23us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;999us;22us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1000us;21us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1001us;20us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1002us;19us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1003us;18us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1004us;17us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1005us;16us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1006us;15us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1007us;14us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1008us;13us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1009us;12us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1010us;11us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1011us;10us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1012us;9us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1013us;8us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1014us;7us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1015us;6us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1016us;5us;1017us;1018us;1019us;1020us;1021us;1us;1017us;4us;1018us;1019us;1020us;1021us;1us;1018us;3us;1019us;1020us;1021us;1us;1019us;2us;1020us;1021us;1us;1020us;1us;1021us;1us;1021us;1us;1022us;1us;1022us;1us;1022us;3us;1022us;1023us;1024us;4us;1023us;1024us;1054us;1055us;2us;1023us;1024us;1us;1023us;1us;1024us;2us;1026us;1027us;1us;1027us;1us;1027us;4us;1028us;1035us;1036us;1047us;1us;1028us;1us;1028us;1us;1028us;3us;1029us;1049us;1050us;3us;1030us;1049us;1050us;1us;1031us;1us;1032us;3us;1032us;1049us;1050us;1us;1033us;1us;1034us;3us;1035us;1036us;1047us;2us;1035us;1036us;5us;1035us;1036us;1061us;1062us;1063us;1us;1035us;1us;1036us;5us;1037us;1038us;1039us;1040us;1041us;5us;1037us;1038us;1039us;1040us;1041us;3us;1037us;1038us;1039us;2us;1037us;1038us;1us;1037us;1us;1038us;1us;1039us;1us;1040us;1us;1041us;1us;1042us;1us;1043us;1us;1044us;1us;1045us;1us;1046us;1us;1047us;1us;1047us;1us;1048us;2us;1049us;1050us;4us;1049us;1050us;1086us;1087us;1us;1050us;1us;1051us;1us;1051us;1us;1052us;1us;1053us;1us;1053us;7us;1054us;1055us;1056us;1057us;1058us;1059us;1060us;3us;1054us;1055us;1056us;3us;1054us;1055us;1056us;2us;1054us;1055us;1us;1054us;1us;1055us;1us;1056us;3us;1057us;1058us;1064us;1us;1057us;1us;1058us;1us;1059us;1us;1060us;3us;1061us;1062us;1063us;2us;1062us;1063us;1us;1062us;1us;1064us;1us;1065us;2us;1067us;1068us;3us;1067us;1078us;1079us;1us;1067us;1us;1068us;1us;1068us;3us;1069us;1086us;1087us;1us;1070us;1us;1071us;3us;1071us;1078us;1079us;1us;1071us;2us;1072us;1073us;1us;1073us;1us;1073us;1us;1074us;2us;1075us;1076us;1us;1076us;1us;1077us;3us;1078us;1078us;1079us;3us;1078us;1079us;1079us;3us;1078us;1079us;1080us;1us;1078us;1us;1079us;1us;1080us;1us;1081us;1us;1081us;1us;1082us;1us;1082us;2us;1082us;1129us;1us;1083us;1us;1084us;1us;1085us;2us;1086us;1087us;1us;1086us;1us;1087us;4us;1088us;1089us;1091us;1092us;1us;1088us;1us;1088us;1us;1089us;1us;1089us;1us;1090us;3us;1091us;1092us;1121us;3us;1091us;1092us;1121us;1us;1091us;1us;1092us;1us;1092us;1us;1092us;1us;1093us;1us;1094us;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;2us;1116us;1117us;1us;1117us;1us;1118us;1us;1118us;1us;1119us;1us;1120us;1us;1120us;1us;1121us;1us;1122us;1us;1123us;3us;1124us;1126us;1127us;1us;1125us;2us;1126us;1127us;1us;1126us;1us;1127us;1us;1128us;1us;1129us;1us;1130us;1us;1131us;1us;1132us;1us;1133us;2us;1134us;1135us;1us;1135us;1us;1136us;1us;1136us;2us;1138us;1140us;2us;1139us;1141us;1us;1140us;1us;1141us;1us;1142us;1us;1143us;1us;1144us;1us;1145us;1us;1146us;1us;1147us;1us;1149us;1us;1151us;1us;1155us;1us;1157us;1us;1159us;1us;1163us;1us;1165us;1us;1167us;1us;1168us;1us;1169us;1us;1170us;1us;1171us;1us;1172us;1us;1173us;1us;1174us;1us;1175us;1us;1176us;1us;1177us;1us;1178us;1us;1180us;1us;1180us;1us;1181us;2us;1182us;1183us;1us;1182us;1us;1182us;1us;1183us;2us;1184us;1186us;1us;1184us;1us;1184us;1us;1185us;1us;1186us;1us;1187us;1us;1188us;1us;1190us;1us;1192us;2us;1192us;1213us;1us;1192us;1us;1193us;1us;1194us;1us;1195us;2us;1195us;1214us;1us;1195us;1us;1196us;1us;1197us;1us;1198us;1us;1198us;1us;1199us;1us;1200us;1us;1201us;1us;1202us;1us;1202us;1us;1203us;1us;1204us;1us;1205us;1us;1205us;1us;1206us;1us;1207us;1us;1208us;1us;1209us;1us;1210us;1us;1211us;1us;1212us;1us;1213us;1us;1214us;1us;1215us;1us;1216us;1us;1217us;1us;1218us;|] -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;1823us;1826us;1828us;1830us;1832us;1834us;1841us;1843us;1845us;1849us;1852us;1854us;1856us;1858us;1860us;1862us;1864us;1866us;1868us;1870us;1875us;1880us;1882us;1886us;1888us;1890us;1892us;1894us;1897us;1899us;1902us;1906us;1908us;1911us;1913us;1915us;1918us;1921us;1923us;1926us;1928us;1930us;1932us;1934us;1936us;1938us;1940us;1942us;1944us;1946us;1948us;1950us;1953us;1956us;1959us;1961us;1963us;1965us;1968us;1971us;1973us;1977us;1981us;1983us;1985us;1987us;1989us;2001us;2004us;2007us;2015us;2017us;2021us;2023us;2025us;2027us;2029us;2031us;2037us;2040us;2042us;2044us;2046us;2048us;2050us;2052us;2054us;2056us;2061us;2063us;2068us;2078us;2080us;2082us;2084us;2086us;2088us;2091us;2093us;2096us;2098us;2100us;2110us;2120us;2127us;2129us;2132us;2134us;2136us;2139us;2141us;2143us;2145us;2147us;2149us;2151us;2158us;2160us;2167us;2169us;2171us;2173us;2175us;2177us;2184us;2186us;2189us;2197us;2200us;2202us;2205us;2207us;2209us;2211us;2213us;2216us;2218us;2220us;2224us;2227us;2236us;2245us;2247us;2249us;2251us;2253us;2256us;2259us;2261us;2263us;2265us;2267us;2271us;2275us;2279us;2282us;2284us;2286us;2288us;2290us;2292us;2295us;2298us;2301us;2303us;2305us;2307us;2311us;2314us;2316us;2318us;2320us;2324us;2326us;2328us;2330us;2332us;2334us;2336us;2338us;2340us;2342us;2344us;2347us;2349us;2351us;2353us;2355us;2357us;2359us;2361us;2363us;2365us;2367us;2369us;2371us;2373us;2375us;2377us;2379us;2381us;2384us;2387us;2389us;2391us;2393us;2395us;2398us;2404us;2406us;2410us;2415us;2417us;2419us;2421us;2423us;2425us;2427us;2430us;2432us;2435us;2437us;2439us;2441us;2443us;2445us;2447us;2449us;2451us;2455us;2459us;2463us;2467us;2470us;2472us;2474us;2476us;2479us;2482us;2484us;2486us;2488us;2490us;2493us;2495us;2497us;2500us;2502us;2504us;2506us;2508us;2510us;2513us;2515us;2517us;2519us;2521us;2523us;2525us;2527us;2529us;2531us;2533us;2535us;2537us;2539us;2541us;2543us;2545us;2547us;2549us;2551us;2553us;2555us;2558us;2560us;2562us;2565us;2568us;2570us;2572us;2574us;2576us;2578us;2580us;2582us;2584us;2586us;2589us;2591us;2593us;2601us;2603us;2605us;2607us;2611us;2616us;2619us;2621us;2623us;2625us;2627us;2629us;2631us;2637us;2640us;2642us;2644us;2646us;2649us;2651us;2653us;2661us;2669us;2677us;2685us;2693us;2701us;2709us;2717us;2725us;2733us;2742us;2744us;2746us;2748us;2750us;2754us;2757us;2759us;2762us;2765us;2767us;2769us;2772us;2774us;2776us;2778us;2782us;2784us;2788us;2790us;2792us;2794us;2798us;2805us;2808us;2818us;2820us;2822us;2831us;2836us;2838us;2840us;2842us;2844us;2846us;2848us;2850us;2852us;2854us;2856us;2858us;2860us;2862us;2872us;2874us;2876us;2878us;2883us;2885us;2887us;2889us;2891us;2893us;2895us;2898us;2900us;2902us;2904us;2906us;2908us;2910us;2912us;2914us;2916us;2918us;2920us;2923us;2925us;2927us;2929us;2931us;2933us;2935us;2944us;2947us;2949us;2951us;2955us;2958us;2960us;2965us;2970us;2976us;2978us;2980us;2983us;2985us;2987us;2997us;3007us;3017us;3027us;3037us;3047us;3057us;3067us;3076us;3086us;3096us;3107us;3122us;3132us;3134us;3136us;3138us;3142us;3145us;3148us;3150us;3152us;3154us;3156us;3158us;3161us;3164us;3166us;3168us;3171us;3173us;3175us;3177us;3180us;3182us;3185us;3187us;3193us;3196us;3198us;3200us;3202us;3205us;3207us;3211us;3214us;3216us;3218us;3220us;3222us;3225us;3227us;3229us;3231us;3286us;3289us;3291us;3293us;3296us;3300us;3303us;3305us;3307us;3309us;3311us;3370us;3373us;3375us;3377us;3379us;3381us;3383us;3385us;3387us;3393us;3395us;3398us;3401us;3404us;3407us;3410us;3413us;3416us;3419us;3422us;3425us;3428us;3431us;3435us;3438us;3441us;3443us;3445us;3447us;3449us;3451us;3453us;3455us;3457us;3459us;3461us;3463us;3465us;3468us;3471us;3473us;3475us;3480us;3482us;3484us;3487us;3489us;3491us;3493us;3495us;3497us;3500us;3503us;3505us;3507us;3510us;3513us;3515us;3517us;3523us;3527us;3529us;3531us;3534us;3536us;3538us;3540us;3544us;3600us;3602us;3604us;3606us;3608us;3663us;3666us;3721us;3723us;3725us;3728us;3730us;3732us;3734us;3736us;3738us;3754us;3761us;3766us;3769us;3771us;3773us;3775us;3777us;3779us;3781us;3783us;3789us;3794us;3797us;3799us;3801us;3803us;3805us;3807us;3809us;3811us;3813us;3815us;3817us;3820us;3823us;3878us;3881us;3936us;3938us;3940us;3942us;3944us;3946us;3948us;3950us;3952us;3954us;3957us;3960us;3963us;3966us;3969us;3971us;3973us;3975us;3977us;3979us;3981us;3983us;3985us;3987us;3989us;3991us;3993us;4048us;4050us;4052us;4107us;4162us;4217us;4272us;4327us;4382us;4437us;4492us;4547us;4602us;4657us;4712us;4767us;4822us;4877us;4932us;4987us;5042us;5097us;5152us;5207us;5262us;5317us;5375us;5430us;5485us;5540us;5596us;5651us;5706us;5761us;5815us;5870us;5925us;5980us;6035us;6090us;6146us;6149us;6151us;6153us;6156us;6158us;6160us;6163us;6165us;6167us;6169us;6172us;6174us;6176us;6182us;6190us;6193us;6195us;6198us;6200us;6203us;6205us;6208us;6210us;6213us;6215us;6218us;6220us;6223us;6225us;6228us;6230us;6233us;6235us;6238us;6240us;6243us;6245us;6248us;6250us;6253us;6255us;6258us;6260us;6263us;6265us;6268us;6270us;6273us;6275us;6278us;6280us;6283us;6285us;6288us;6290us;6293us;6295us;6299us;6302us;6304us;6307us;6311us;6314us;6316us;6318us;6320us;6322us;6324us;6326us;6328us;6330us;6332us;6334us;6336us;6338us;6340us;6344us;6347us;6349us;6351us;6353us;6355us;6358us;6360us;6362us;6364us;6366us;6373us;6378us;6381us;6383us;6385us;6387us;6389us;6391us;6393us;6395us;6397us;6399us;6401us;6403us;6406us;6408us;6411us;6413us;6415us;6417us;6419us;6421us;6424us;6426us;6428us;6433us;6435us;6438us;6440us;6445us;6447us;6450us;6452us;6454us;6457us;6461us;6464us;6466us;6468us;6471us;6473us;6475us;6478us;6480us;6482us;6485us;6487us;6489us;6492us;6494us;6496us;6499us;6501us;6503us;6506us;6508us;6513us;6522us;6526us;6534us;6538us;6544us;6547us;6552us;6554us;6556us;6558us;6560us;6562us;6564us;6566us;6568us;6571us;6580us;6583us;6591us;6593us;6601us;6608us;6610us;6617us;6624us;6627us;6633us;6636us;6638us;6645us;6652us;6659us;6666us;6668us;6670us;6672us;6674us;6676us;6679us;6681us;6684us;6686us;6689us;6691us;6693us;6695us;6697us;6699us;6701us;6703us;6706us;6708us;6710us;6712us;6714us;6716us;6721us;6724us;6726us;6728us;6730us;6732us;6736us;6739us;6741us;6743us;6745us;6747us;6749us;6751us;6758us;6760us;6762us;6764us;6766us;6768us;6770us;6775us;6778us;6780us;6782us;6784us;6786us;6788us;6790us;6792us;6794us;6796us;6798us;6800us;6802us;6804us;6806us;6808us;6813us;6816us;6818us;6820us;6822us;6824us;6826us;6831us;6837us;6840us;6842us;6844us;6846us;6848us;6853us;6856us;6858us;6860us;6862us;6864us;6875us;6891us;6906us;6908us;6911us;6913us;6915us;6917us;6920us;6922us;6924us;6926us;6928us;6930us;6932us;6934us;6936us;6938us;6940us;6942us;6944us;6946us;6948us;6950us;6952us;6955us;6958us;6960us;6962us;6967us;6973us;6976us;6978us;6980us;6982us;6984us;6986us;6988us;6990us;6992us;6994us;6996us;6998us;7000us;7002us;7005us;7007us;7009us;7011us;7013us;7015us;7017us;7019us;7021us;7023us;7026us;7028us;7030us;7032us;7034us;7036us;7038us;7040us;7042us;7045us;7047us;7053us;7055us;7057us;7059us;7061us;7063us;7066us;7068us;7070us;7073us;7075us;7078us;7080us;7082us;7085us;7087us;7090us;7092us;7094us;7096us;7099us;7101us;7104us;7106us;7108us;7110us;7113us;7115us;7117us;7119us;7122us;7125us;7128us;7130us;7132us;7136us;7138us;7140us;7146us;7150us;7152us;7154us;7156us;7159us;7161us;7163us;7165us;7167us;7169us;7171us;7173us;7176us;7178us;7180us;7182us;7184us;7186us;7188us;7190us;7192us;7194us;7196us;7198us;7200us;7202us;7207us;7209us;7211us;7213us;7215us;7217us;7219us;7225us;7228us;7230us;7232us;7234us;7236us;7238us;7241us;7244us;7247us;7249us;7251us;7258us;7264us;7269us;7272us;7274us;7276us;7278us;7280us;7282us;7284us;7286us;7288us;7290us;7292us;7294us;7296us;7298us;7301us;7303us;7306us;7308us;7311us;7313us;7315us;7319us;7322us;7324us;7326us;7330us;7333us;7335us;7337us;7339us;7341us;7345us;7348us;7350us;7352us;7354us;7356us;7362us;7369us;7372us;7377us;7379us;7382us;7385us;7388us;7393us;7395us;7402us;7405us;7410us;7412us;7415us;7418us;7421us;7426us;7428us;7437us;7445us;7450us;7452us;7454us;7456us;7458us;7463us;7467us;7469us;7471us;7473us;7475us;7477us;7479us;7488us;7491us;7493us;7495us;7497us;7499us;7502us;7504us;7506us;7509us;7511us;7513us;7522us;7525us;7527us;7529us;7531us;7533us;7536us;7538us;7540us;7542us;7544us;7548us;7550us;7555us;7557us;7561us;7563us;7566us;7571us;7573us;7575us;7583us;7585us;7587us;7589us;7591us;7596us;7598us;7600us;7602us;7604us;7606us;7608us;7610us;7613us;7615us;7617us;7650us;7652us;7684us;7686us;7717us;7719us;7749us;7751us;7780us;7782us;7810us;7812us;7839us;7841us;7867us;7869us;7894us;7896us;7920us;7922us;7945us;7947us;7969us;7971us;7992us;7994us;8014us;8016us;8035us;8037us;8055us;8057us;8074us;8076us;8092us;8094us;8109us;8111us;8125us;8127us;8140us;8142us;8154us;8156us;8167us;8169us;8179us;8181us;8190us;8192us;8200us;8202us;8209us;8211us;8217us;8219us;8224us;8226us;8230us;8232us;8235us;8237us;8239us;8241us;8243us;8245us;8247us;8251us;8256us;8259us;8261us;8263us;8266us;8268us;8270us;8275us;8277us;8279us;8281us;8285us;8289us;8291us;8293us;8297us;8299us;8301us;8305us;8308us;8314us;8316us;8318us;8324us;8330us;8334us;8337us;8339us;8341us;8343us;8345us;8347us;8349us;8351us;8353us;8355us;8357us;8359us;8361us;8363us;8366us;8371us;8373us;8375us;8377us;8379us;8381us;8383us;8391us;8395us;8399us;8402us;8404us;8406us;8408us;8412us;8414us;8416us;8418us;8420us;8424us;8427us;8429us;8431us;8433us;8436us;8440us;8442us;8444us;8446us;8450us;8452us;8454us;8458us;8460us;8463us;8465us;8467us;8469us;8472us;8474us;8476us;8480us;8484us;8488us;8490us;8492us;8494us;8496us;8498us;8500us;8502us;8505us;8507us;8509us;8511us;8514us;8516us;8518us;8523us;8525us;8527us;8529us;8531us;8533us;8537us;8541us;8543us;8545us;8547us;8549us;8551us;8553us;8555us;8557us;8559us;8561us;8563us;8565us;8567us;8569us;8571us;8573us;8575us;8577us;8579us;8581us;8583us;8585us;8587us;8589us;8591us;8593us;8595us;8598us;8600us;8602us;8604us;8606us;8608us;8610us;8612us;8614us;8616us;8620us;8622us;8625us;8627us;8629us;8631us;8633us;8635us;8637us;8639us;8641us;8644us;8646us;8648us;8650us;8653us;8656us;8658us;8660us;8662us;8664us;8666us;8668us;8670us;8672us;8674us;8676us;8678us;8680us;8682us;8684us;8686us;8688us;8690us;8692us;8694us;8696us;8698us;8700us;8702us;8704us;8706us;8708us;8710us;8712us;8714us;8716us;8719us;8721us;8723us;8725us;8728us;8730us;8732us;8734us;8736us;8738us;8740us;8742us;8744us;8747us;8749us;8751us;8753us;8755us;8758us;8760us;8762us;8764us;8766us;8768us;8770us;8772us;8774us;8776us;8778us;8780us;8782us;8784us;8786us;8788us;8790us;8792us;8794us;8796us;8798us;8800us;8802us;8804us;8806us;8808us;8810us;|] -let _fsyacc_action_rows = 2065 -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;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;49152us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;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;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2031us;38us;2034us;39us;2036us;40us;2039us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;108us;2035us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;121us;735us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;137us;751us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;150us;2040us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;26us;16403us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;0us;16404us;2us;16405us;21us;37us;83us;36us;0us;16406us;0us;16407us;0us;16408us;1us;32768us;193us;39us;0us;16410us;2us;16409us;194us;2015us;201us;2014us;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;1982us;67us;1981us;83us;1980us;0us;16416us;1us;16553us;73us;317us;3us;16647us;43us;514us;44us;513us;45us;515us;1us;17544us;103us;2001us;5us;32768us;10us;1075us;21us;55us;46us;1922us;193us;1921us;203us;1059us;1us;16417us;76us;1924us;0us;16418us;0us;16419us;1us;17544us;103us;2001us;4us;32768us;10us;1075us;46us;1922us;193us;1921us;203us;1059us;1us;16420us;76us;1924us;0us;16421us;1us;16422us;151us;57us;0us;16423us;1us;16425us;151us;57us;0us;16424us;1us;17536us;69us;1998us;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;2031us;38us;2034us;39us;2036us;40us;2039us;108us;2035us;109us;104us;121us;735us;150us;2040us;18us;16435us;22us;74us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;69us;2013us;73us;317us;77us;2012us;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;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;1us;17540us;21us;1999us;0us;16430us;0us;16431us;6us;16434us;15us;2050us;16us;2052us;17us;2053us;21us;1982us;67us;1981us;83us;1980us;0us;16432us;0us;16433us;3us;16434us;21us;1982us;67us;1981us;83us;1980us;17us;16434us;21us;1982us;37us;16443us;38us;16443us;39us;16443us;40us;16443us;43us;16443us;44us;16443us;45us;16443us;67us;1981us;73us;16443us;83us;1980us;88us;16443us;101us;16443us;108us;16443us;109us;16443us;121us;16443us;150us;16443us;3us;17521us;21us;1982us;67us;1981us;83us;1980us;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;1982us;67us;1981us;83us;1980us;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;2031us;38us;2034us;39us;2036us;40us;2039us;108us;2035us;109us;104us;121us;735us;150us;2040us;3us;32768us;69us;2013us;77us;2012us;203us;98us;5us;32768us;22us;120us;46us;1922us;57us;2010us;136us;2011us;193us;1921us;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;17548us;110us;2002us;1us;17550us;118us;2003us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;2us;16714us;34us;2030us;160us;17575us;1us;32768us;77us;111us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;16448us;69us;114us;0us;16447us;80us;32768us;13us;1187us;22us;116us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;26us;16449us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;29us;32768us;15us;2050us;16us;2052us;17us;2053us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;1us;17534us;19us;1997us;0us;16450us;8us;16553us;46us;1922us;57us;2010us;73us;317us;88us;38us;101us;287us;136us;2011us;193us;1921us;203us;87us;3us;32768us;15us;2050us;16us;2052us;17us;2053us;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;2050us;16us;2052us;17us;2053us;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;589us;56us;591us;73us;317us;111us;590us;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;589us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;56us;591us;58us;16553us;66us;16553us;72us;16553us;73us;317us;88us;16553us;91us;16553us;92us;16553us;96us;16553us;106us;16553us;109us;16553us;111us;590us;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;17540us;21us;1999us;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;2050us;16us;2052us;17us;2053us;1us;16497us;87us;220us;0us;16458us;1us;16497us;87us;220us;0us;16459us;0us;16460us;0us;16461us;1us;32768us;120us;149us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;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;1075us;142us;154us;203us;1059us;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;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;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;1075us;142us;164us;203us;1059us;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;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16471us;0us;16472us;0us;16473us;0us;16474us;2us;17542us;21us;1987us;83us;1988us;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;593us;47us;195us;48us;352us;50us;432us;51us;353us;52us;354us;54us;190us;109us;193us;111us;592us;119us;200us;46us;32768us;14us;593us;46us;1922us;47us;195us;48us;352us;50us;432us;51us;353us;52us;354us;54us;190us;56us;580us;58us;672us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;569us;96us;1715us;106us;1864us;109us;193us;111us;592us;113us;1862us;119us;200us;120us;707us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;1us;17548us;110us;2002us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;2us;16714us;34us;2030us;160us;17575us;1us;32768us;77us;184us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;2us;16485us;26us;205us;87us;203us;1us;16448us;69us;114us;0us;16477us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;6us;16478us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;6us;16479us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;0us;16480us;1us;17550us;118us;2003us;0us;16481us;6us;16570us;37us;2031us;38us;2034us;48us;351us;50us;434us;108us;2035us;109us;196us;1us;17550us;118us;2003us;0us;16482us;1us;16553us;73us;317us;0us;16483us;1us;32768us;77us;201us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16484us;4us;32768us;22us;213us;92us;1927us;100us;1932us;193us;1921us;0us;16486us;4us;32768us;22us;213us;92us;1927us;100us;1932us;193us;1921us;2us;32768us;20us;207us;203us;208us;0us;16487us;0us;16488us;1us;16489us;97us;210us;5us;32768us;10us;1075us;92us;1927us;100us;1932us;193us;1921us;203us;1059us;0us;16490us;0us;16491us;3us;32768us;15us;2050us;16us;2052us;17us;2053us;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;1991us;20us;1992us;142us;1993us;0us;16496us;2us;32768us;10us;224us;203us;225us;0us;16498us;1us;32768us;10us;226us;0us;16499us;4us;32768us;10us;228us;21us;1982us;67us;1981us;83us;1980us;0us;16500us;1us;16501us;151us;57us;0us;16502us;1us;16504us;151us;57us;0us;16503us;1us;17536us;69us;1998us;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;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2031us;38us;2034us;39us;2036us;40us;2039us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;108us;2035us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;121us;735us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;137us;751us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;150us;2040us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;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;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;1us;17540us;21us;1999us;0us;16508us;0us;16509us;6us;32768us;15us;2050us;16us;2052us;17us;2053us;21us;1982us;67us;1981us;83us;1980us;0us;16510us;0us;16511us;0us;16512us;4us;16647us;43us;514us;44us;513us;45us;515us;203us;256us;87us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2031us;38us;2034us;39us;2036us;40us;2039us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;108us;2035us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;121us;735us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;137us;751us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;150us;2040us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;29us;16516us;21us;1982us;62us;1276us;63us;1262us;67us;1981us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;83us;1980us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;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;1982us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;67us;1981us;73us;317us;83us;1980us;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;1982us;67us;1981us;83us;1980us;3us;16532us;21us;1982us;67us;1981us;83us;1980us;6us;32768us;15us;2050us;16us;2052us;17us;2053us;21us;1982us;67us;1981us;83us;1980us;4us;32768us;21us;1982us;67us;1981us;83us;1980us;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;753us;37us;2031us;38us;2034us;39us;2036us;40us;2039us;41us;767us;108us;2035us;121us;735us;137us;751us;150us;2040us;162us;747us;0us;16526us;1us;16526us;127us;1088us;0us;16527us;80us;16527us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1093us;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;1922us;56us;2008us;136us;2009us;193us;1921us;0us;16531us;0us;16532us;2us;16552us;10us;1075us;203us;1059us;0us;16533us;0us;16534us;7us;32768us;10us;1075us;37us;2031us;38us;2034us;46us;1922us;108us;2035us;193us;1921us;203us;1059us;1us;16535us;76us;1924us;0us;16536us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;6us;16537us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;0us;16538us;4us;32768us;15us;2050us;16us;2052us;17us;2053us;76us;1924us;0us;16539us;1us;16540us;76us;1924us;6us;16553us;56us;2008us;73us;317us;88us;38us;101us;287us;136us;2009us;203us;263us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16541us;0us;16542us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16543us;0us;16544us;0us;16545us;0us;16546us;1us;16547us;76us;1924us;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;1075us;142us;308us;203us;1059us;0us;16548us;0us;16549us;0us;16550us;6us;16553us;19us;16599us;20us;16599us;22us;398us;73us;317us;142us;16599us;203us;404us;3us;32768us;19us;1991us;20us;1992us;142us;1993us;0us;16551us;0us;16552us;1us;16554us;73us;317us;0us;16555us;14us;32768us;10us;1075us;15us;2063us;37us;2032us;38us;2034us;39us;2037us;40us;2039us;46us;1922us;60us;2061us;94us;2062us;108us;2035us;150us;2040us;163us;348us;193us;1921us;203us;322us;2us;17542us;21us;1987us;83us;1988us;8us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;55us;320us;60us;2061us;94us;2062us;203us;1059us;1us;17540us;21us;1999us;0us;16556us;1us;16972us;55us;323us;1us;17540us;21us;1999us;0us;16557us;0us;16558us;0us;16559us;0us;16560us;9us;17541us;37us;2031us;38us;2034us;39us;2036us;40us;2039us;46us;1922us;108us;2035us;150us;2040us;163us;348us;193us;1921us;0us;16561us;3us;17573us;35us;2029us;36us;2028us;76us;1924us;30us;17242us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16562us;3us;32768us;22us;337us;46us;1922us;193us;1921us;3us;17573us;35us;2029us;36us;2028us;76us;1924us;30us;17242us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16563us;2us;32768us;46us;1922us;193us;1921us;4us;32768us;15us;2050us;16us;2052us;17us;2053us;76us;1924us;2us;17573us;35us;2029us;36us;2028us;30us;17242us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16564us;1us;32768us;77us;343us;0us;16565us;1us;32768us;77us;345us;0us;16566us;1us;17469us;77us;347us;0us;16567us;1us;32768us;77us;349us;0us;16568us;11us;16570us;30us;757us;33us;753us;37us;2031us;38us;2034us;41us;767us;48us;351us;50us;434us;108us;2035us;109us;477us;137us;751us;162us;747us;0us;16569us;0us;16571us;0us;16572us;0us;16573us;3us;16647us;43us;514us;44us;513us;45us;515us;1us;16715us;84us;625us;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;17573us;35us;2029us;36us;2028us;1us;16864us;92us;878us;1us;16661us;132us;530us;3us;32768us;10us;1075us;69us;368us;203us;1059us;6us;16553us;22us;371us;49us;589us;56us;591us;73us;317us;111us;590us;152us;384us;0us;16579us;0us;16580us;9us;16553us;15us;2050us;16us;2052us;17us;2053us;22us;394us;49us;589us;56us;591us;73us;317us;111us;590us;152us;384us;1us;17540us;21us;1999us;7us;16553us;10us;16599us;15us;16599us;16us;16599us;17us;16599us;73us;317us;87us;16599us;203us;404us;1us;16656us;87us;519us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;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;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;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;1075us;15us;2063us;37us;2059us;39us;2060us;60us;2061us;94us;2062us;142us;390us;203us;1059us;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;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16592us;0us;16593us;6us;16553us;10us;16599us;15us;16599us;16us;16599us;17us;16599us;73us;317us;203us;404us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;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;17542us;21us;1987us;83us;1988us;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;17548us;110us;2002us;0us;16601us;1us;17548us;110us;2002us;2us;32768us;20us;413us;203us;414us;0us;16602us;0us;16603us;1us;16604us;131us;416us;1us;17548us;110us;2002us;0us;16605us;1us;16553us;73us;317us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;17312us;77us;1658us;1us;32768us;69us;422us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16606us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;17312us;77us;1658us;6us;32768us;10us;1075us;21us;429us;26us;411us;69us;427us;87us;409us;203us;1059us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;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;593us;30us;757us;33us;753us;41us;767us;47us;350us;48us;352us;50us;432us;51us;353us;52us;354us;54us;522us;109us;477us;111us;592us;119us;465us;137us;751us;162us;747us;51us;32768us;14us;593us;30us;757us;33us;753us;41us;767us;46us;1922us;47us;350us;48us;352us;50us;432us;51us;353us;52us;354us;54us;522us;56us;580us;58us;672us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;569us;96us;1715us;106us;1864us;109us;477us;111us;592us;113us;1862us;119us;465us;120us;707us;122us;1863us;137us;751us;148us;1861us;162us;747us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;0us;16615us;0us;16616us;4us;17548us;10us;1075us;109us;486us;110us;2002us;203us;1059us;1us;17534us;19us;1997us;0us;16617us;0us;16618us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;7us;16654us;36us;1746us;46us;1922us;70us;1760us;87us;516us;91us;1916us;189us;1918us;193us;1921us;0us;16619us;0us;16620us;1us;17548us;110us;2002us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;2us;16714us;34us;2030us;160us;17575us;1us;32768us;77us;454us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;2us;16485us;26us;205us;87us;203us;1us;17534us;19us;1997us;0us;16621us;0us;16622us;1us;17534us;19us;1997us;0us;16623us;1us;17534us;19us;1997us;0us;16624us;1us;17534us;19us;1997us;0us;16625us;37us;32768us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;1us;16661us;132us;530us;9us;32768us;10us;1075us;15us;2063us;21us;472us;37us;2059us;39us;2060us;60us;2061us;69us;468us;94us;2062us;203us;1059us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;17534us;19us;1997us;0us;16626us;0us;16627us;0us;16628us;1us;17540us;21us;1999us;0us;16629us;1us;16553us;73us;317us;0us;16630us;1us;17550us;118us;2003us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;10us;1075us;193us;1921us;203us;1059us;3us;32768us;10us;1075us;77us;481us;203us;1059us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;16631us;0us;16632us;0us;16633us;0us;16634us;1us;17550us;118us;2003us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;10us;1075us;193us;1921us;203us;1059us;1us;16639us;77us;497us;9us;32768us;10us;1075us;15us;2063us;21us;495us;37us;2059us;39us;2060us;60us;2061us;69us;491us;94us;2062us;203us;1059us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;2us;16485us;26us;205us;87us;203us;0us;16635us;0us;16636us;0us;16637us;0us;16638us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;16640us;0us;16641us;1us;16910us;76us;501us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;0us;16642us;1us;32768us;76us;504us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;0us;16643us;0us;16644us;4us;32768us;66us;508us;92us;1927us;100us;1932us;193us;1921us;1us;32768us;76us;509us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;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;1991us;20us;1992us;142us;1993us;0us;16652us;6us;16553us;19us;16599us;20us;16599us;22us;398us;73us;317us;142us;16599us;203us;404us;3us;32768us;19us;1991us;20us;1992us;142us;1993us;0us;16655us;37us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;46us;1922us;56us;1851us;60us;2061us;66us;1845us;88us;1842us;91us;1916us;92us;1835us;94us;2062us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;33us;16665us;35us;2029us;36us;2028us;56us;17573us;71us;17573us;72us;17573us;92us;17573us;106us;17573us;122us;17573us;132us;534us;136us;17573us;148us;17573us;155us;17573us;166us;17573us;167us;17573us;168us;17573us;169us;17573us;170us;17573us;171us;17573us;172us;17573us;173us;17573us;174us;17573us;175us;17573us;176us;17573us;177us;17573us;178us;17573us;180us;17573us;181us;17573us;194us;17573us;195us;17573us;199us;17573us;200us;17573us;201us;17573us;202us;17573us;0us;16657us;30us;32768us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;16665us;132us;534us;0us;16658us;0us;16659us;0us;16660us;3us;32768us;10us;1075us;193us;1921us;203us;1059us;0us;16662us;0us;16663us;0us;16664us;2us;32768us;154us;536us;193us;1921us;0us;16666us;0us;16667us;1us;16553us;73us;317us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16668us;0us;16669us;0us;16670us;2us;17542us;21us;1987us;83us;1988us;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;17548us;47us;556us;48us;558us;51us;559us;110us;2002us;203us;553us;3us;17548us;109us;486us;110us;2002us;203us;552us;1us;17534us;19us;1997us;0us;16673us;1us;17534us;19us;1997us;0us;16674us;0us;16675us;1us;17548us;110us;2002us;1us;17534us;19us;1997us;0us;16676us;1us;32768us;48us;557us;0us;16677us;0us;16678us;0us;16679us;3us;16647us;43us;514us;44us;513us;45us;515us;36us;32768us;46us;1922us;56us;580us;58us;672us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;569us;96us;1715us;106us;1864us;113us;1862us;120us;707us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;2us;17362us;76us;1924us;155us;563us;1us;32768us;201us;564us;2us;32768us;10us;1075us;203us;1059us;0us;16680us;0us;16681us;0us;16682us;0us;16683us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;570us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1865us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;16842us;88us;572us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16684us;2us;16553us;73us;317us;203us;578us;5us;32768us;10us;1075us;60us;2041us;61us;2043us;196us;2044us;203us;1059us;0us;16685us;0us;16686us;3us;32768us;60us;2041us;61us;2043us;196us;2044us;0us;16687us;2us;32768us;72us;583us;92us;1852us;0us;16688us;0us;16689us;2us;16553us;73us;317us;203us;587us;3us;32768us;10us;1075us;65us;2045us;203us;1059us;0us;16690us;0us;16691us;1us;32768us;65us;2045us;0us;16692us;0us;16693us;0us;16694us;0us;16695us;0us;16696us;0us;16697us;7us;32768us;10us;1075us;46us;1922us;91us;1916us;92us;601us;189us;1918us;193us;1921us;203us;1059us;3us;16698us;34us;2030us;76us;1924us;160us;17575us;2us;32768us;46us;1922us;193us;1921us;1us;16699us;76us;1924us;0us;16700us;0us;16701us;0us;16702us;1us;16553us;73us;317us;4us;32768us;93us;2049us;94us;2046us;95us;2048us;97us;606us;0us;16703us;2us;16715us;84us;625us;97us;606us;1us;16710us;97us;607us;1us;16553us;73us;317us;2us;16553us;73us;317us;143us;618us;0us;16704us;0us;16705us;2us;32768us;91us;1916us;189us;1918us;1us;16706us;89us;612us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;16707us;89us;634us;1us;32768us;160us;615us;1us;16553us;73us;317us;1us;32768us;161us;617us;0us;16708us;0us;16709us;1us;32768us;160us;620us;3us;16553us;73us;317us;84us;16711us;161us;16711us;1us;16715us;84us;625us;1us;32768us;161us;623us;0us;16712us;0us;16713us;32us;32768us;46us;1922us;52us;637us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;652us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;16716us;131us;629us;1us;17309us;131us;629us;1us;17311us;131us;629us;32us;32768us;46us;1922us;52us;637us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;652us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16717us;0us;16718us;1us;17360us;89us;634us;1us;17361us;89us;634us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;16719us;76us;1868us;1us;16720us;76us;1868us;2us;32768us;91us;1916us;189us;1918us;1us;32768us;77us;639us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16721us;3us;17363us;77us;644us;79us;642us;89us;1735us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;4us;16722us;46us;17372us;70us;17372us;91us;17372us;193us;17372us;5us;32768us;56us;645us;92us;649us;148us;648us;152us;659us;193us;646us;0us;16723us;3us;16730us;34us;1874us;56us;647us;160us;1876us;0us;16724us;0us;16725us;1us;16553us;73us;317us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16726us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1865us;4us;32768us;93us;2049us;94us;2046us;95us;2048us;102us;663us;1us;32768us;77us;655us;1us;32768us;92us;656us;1us;16553us;73us;317us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16727us;2us;32768us;34us;1874us;160us;1876us;0us;16728us;0us;16729us;6us;16731us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;6us;16732us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;13us;16733us;10us;17352us;36us;1746us;46us;1922us;69us;17352us;70us;1760us;91us;1916us;96us;1712us;97us;17352us;98us;17352us;186us;1720us;189us;1918us;193us;1921us;203us;17352us;1us;16553us;73us;317us;0us;16734us;1us;32768us;58us;672us;1us;16553us;73us;317us;0us;16735us;2us;16736us;21us;1999us;58us;17540us;0us;16737us;1us;16739us;58us;672us;1us;16553us;73us;317us;0us;16738us;3us;16647us;43us;514us;44us;513us;45us;515us;6us;32768us;10us;1075us;92us;692us;100us;1932us;120us;683us;193us;1921us;203us;1059us;35us;16740us;46us;1922us;56us;580us;66us;1757us;69us;689us;72us;583us;77us;687us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;120us;680us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;0us;16741us;34us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;203us;1059us;0us;16742us;0us;16743us;34us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;203us;1059us;0us;16744us;0us;16745us;0us;16746us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16747us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;5us;16748us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;0us;16749us;29us;32768us;58us;1967us;62us;1949us;63us;1947us;69us;1951us;70us;695us;74us;1955us;78us;693us;82us;1959us;89us;1956us;90us;1957us;96us;1950us;102us;1952us;143us;1962us;145us;1958us;155us;1964us;158us;1961us;160us;1953us;161us;1954us;182us;1960us;183us;1948us;184us;1945us;185us;1944us;186us;1946us;187us;1939us;188us;1943us;189us;1942us;190us;1941us;191us;1940us;203us;1930us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16750us;1us;32768us;59us;696us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16751us;4us;17469us;21us;1999us;58us;17540us;69us;700us;120us;704us;0us;16752us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;6us;17540us;21us;1999us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;46us;16753us;10us;16758us;14us;16758us;15us;16758us;16us;16758us;17us;16758us;19us;16758us;20us;16758us;21us;16758us;30us;16758us;33us;16758us;37us;16758us;38us;16758us;39us;16758us;40us;16758us;41us;16758us;43us;16758us;44us;16758us;45us;16758us;47us;16758us;48us;16758us;50us;16758us;51us;16758us;52us;16758us;54us;16758us;60us;16758us;67us;16758us;73us;16758us;83us;16758us;87us;16758us;88us;16758us;93us;16758us;94us;16758us;95us;16758us;101us;16758us;108us;16758us;109us;16758us;111us;16758us;119us;16758us;121us;16758us;131us;16758us;137us;16758us;142us;16758us;150us;16758us;151us;16758us;162us;16758us;203us;16758us;0us;16754us;34us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;203us;1059us;0us;16755us;0us;16756us;32us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;0us;16757us;1us;16760us;96us;710us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16759us;1us;17469us;77us;713us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;7us;16761us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;98us;1698us;189us;1918us;193us;1921us;7us;16762us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;98us;1698us;189us;1918us;193us;1921us;0us;16763us;0us;16764us;0us;16765us;0us;16766us;2us;17542us;21us;1987us;83us;1988us;7us;16553us;10us;17541us;60us;17541us;61us;17541us;65us;17541us;73us;317us;196us;17541us;203us;17541us;0us;16767us;0us;16768us;1us;17550us;118us;2003us;0us;16769us;3us;16647us;43us;514us;44us;513us;45us;515us;1us;32768us;193us;1921us;3us;32768us;10us;1075us;77us;729us;203us;1059us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;16770us;0us;16771us;0us;16772us;1us;16656us;87us;519us;0us;16773us;1us;16553us;73us;317us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;10us;1075us;193us;1921us;203us;1059us;1us;16779us;69us;745us;0us;16774us;0us;16775us;1us;16776us;120us;742us;34us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;203us;1059us;0us;16777us;0us;16778us;2us;32768us;46us;1922us;193us;1921us;1us;16780us;76us;1924us;1us;17544us;103us;2001us;2us;16553us;73us;317us;203us;802us;0us;16781us;0us;16782us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16783us;1us;17544us;103us;2001us;2us;16553us;73us;317us;203us;802us;3us;32768us;10us;1075us;19us;765us;203us;1059us;0us;16784us;81us;32768us;13us;1187us;19us;760us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;10us;1075us;19us;765us;203us;1059us;0us;16785us;0us;16786us;0us;16787us;0us;16788us;0us;16789us;0us;16790us;0us;16791us;0us;16792us;1us;16553us;73us;317us;3us;16647us;43us;514us;44us;513us;45us;515us;1us;32768us;193us;1921us;2us;17573us;35us;2029us;36us;2028us;1us;32768us;92us;772us;4us;16553us;73us;317us;93us;16796us;94us;16796us;95us;16796us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16793us;1us;16794us;97us;777us;1us;16795us;97us;779us;1us;16553us;73us;317us;0us;16797us;1us;16553us;73us;317us;0us;16798us;3us;32768us;42us;791us;46us;1922us;193us;1921us;6us;16799us;35us;2029us;36us;2028us;70us;17573us;89us;790us;96us;789us;193us;1921us;0us;16800us;1us;16801us;76us;1924us;5us;16806us;35us;2029us;36us;2028us;70us;17573us;89us;790us;96us;789us;1us;32768us;70us;787us;1us;32768us;59us;788us;0us;16802us;0us;16803us;0us;16804us;1us;32768us;96us;793us;1us;16807us;96us;793us;0us;16805us;3us;32768us;42us;792us;46us;1922us;193us;1921us;1us;16810us;131us;797us;0us;16808us;2us;16553us;73us;317us;203us;802us;1us;16810us;131us;797us;0us;16809us;1us;17548us;110us;2002us;0us;16811us;0us;16812us;1us;17550us;118us;2003us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;17312us;77us;1658us;3us;32768us;10us;1075us;69us;807us;203us;1059us;81us;32768us;13us;1187us;22us;811us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;809us;0us;16813us;0us;16814us;0us;16815us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16816us;0us;16817us;0us;16818us;0us;16821us;1us;16819us;84us;819us;0us;16820us;2us;32768us;91us;1916us;189us;1918us;2us;32768us;69us;821us;131us;823us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16822us;2us;32768us;91us;1916us;189us;1918us;0us;16823us;0us;16824us;2us;32768us;56us;829us;77us;827us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16825us;0us;16826us;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;1us;16847us;186us;849us;1us;32768us;178us;850us;0us;16845us;1us;32768us;178us;852us;1us;16848us;186us;853us;1us;32768us;178us;854us;0us;16846us;0us;16849us;2us;32768us;62us;851us;178us;848us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16850us;0us;16851us;2us;32768us;92us;856us;178us;855us;0us;16852us;1us;16853us;34us;863us;1us;32768us;160us;1893us;0us;16854us;5us;16855us;58us;899us;78us;900us;89us;911us;97us;905us;132us;897us;0us;16856us;1us;32768us;193us;1921us;0us;16857us;1us;16860us;77us;871us;2us;16861us;77us;871us;97us;875us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;16858us;0us;16859us;3us;32768us;73us;317us;74us;867us;193us;1921us;3us;32768us;73us;317us;74us;867us;193us;1921us;0us;16862us;0us;16863us;8us;32768us;10us;1075us;73us;317us;74us;867us;93us;2049us;94us;2046us;95us;2048us;193us;1921us;203us;883us;5us;32768us;10us;1075us;93us;2049us;94us;2046us;95us;2048us;203us;1059us;0us;16865us;0us;16866us;0us;16867us;3us;16972us;93us;2049us;94us;2046us;95us;2048us;0us;16868us;0us;16869us;3us;16871us;78us;900us;89us;911us;97us;905us;1us;16872us;78us;900us;2us;16876us;78us;900us;89us;911us;2us;16877us;78us;900us;89us;911us;2us;16880us;78us;900us;89us;911us;1us;16882us;78us;900us;1us;16883us;78us;900us;6us;32768us;58us;899us;69us;1077us;78us;900us;89us;911us;97us;905us;132us;897us;6us;32768us;58us;899us;69us;1082us;78us;900us;89us;911us;97us;905us;132us;897us;6us;32768us;58us;899us;69us;1165us;78us;900us;89us;911us;97us;905us;132us;897us;6us;32768us;58us;899us;69us;1172us;78us;900us;89us;911us;97us;905us;132us;897us;36us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16870us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;16873us;97us;904us;0us;16874us;0us;16875us;44us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;44us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;0us;16878us;0us;16879us;44us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;0us;16881us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;2us;17542us;21us;1987us;83us;1988us;0us;16884us;3us;17541us;21us;1987us;83us;1988us;193us;1921us;0us;16885us;1us;32768us;193us;1921us;0us;16886us;3us;32768us;10us;1075us;69us;920us;203us;1059us;4us;17508us;10us;1075us;69us;920us;76us;1974us;203us;1059us;40us;32768us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;6us;16887us;58us;1000us;77us;1003us;78us;1007us;89us;1016us;97us;1010us;132us;998us;0us;16888us;0us;16889us;39us;16912us;34us;2030us;35us;932us;36us;934us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;939us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;160us;17575us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;37us;16890us;35us;927us;36us;929us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;939us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16891us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;939us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16892us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;939us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16893us;0us;16894us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;939us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16895us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;939us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16896us;31us;32768us;46us;1922us;56us;580us;66us;1845us;72us;583us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16897us;0us;16898us;64us;16926us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;58us;1967us;62us;1949us;63us;1947us;66us;500us;69us;1951us;70us;955us;71us;958us;73us;317us;74us;962us;81us;936us;82us;1959us;89us;1956us;90us;1957us;92us;969us;96us;1950us;97us;1013us;100us;1932us;102us;1952us;106us;967us;122us;966us;143us;1962us;145us;1958us;148us;968us;155us;1475us;158us;1961us;160us;1953us;161us;1954us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;182us;1960us;183us;1948us;184us;1945us;185us;1944us;186us;1946us;187us;1939us;188us;1943us;189us;1942us;190us;1941us;191us;1940us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;973us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16899us;0us;16900us;37us;16904us;35us;947us;36us;945us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16901us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16902us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16903us;0us;16905us;3us;32768us;46us;1922us;193us;1921us;203us;953us;3us;32768us;60us;2041us;61us;2043us;196us;2044us;0us;16906us;3us;32768us;60us;2041us;61us;2043us;196us;2044us;0us;16907us;38us;16949us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;32768us;59us;957us;0us;16908us;38us;16949us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;32768us;64us;960us;0us;16909us;1us;32768us;193us;1921us;1us;17493us;193us;1921us;0us;16911us;0us;16912us;0us;16913us;0us;16914us;0us;16915us;0us;16916us;64us;16926us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;58us;1967us;62us;1949us;63us;1947us;66us;500us;69us;1951us;70us;955us;71us;958us;73us;317us;74us;962us;81us;936us;82us;1959us;89us;1956us;90us;1957us;92us;969us;96us;1950us;97us;1013us;100us;1932us;102us;1952us;106us;967us;122us;966us;143us;1962us;145us;1958us;148us;968us;155us;1475us;158us;1961us;160us;1953us;161us;1954us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;182us;1960us;183us;1948us;184us;1945us;185us;1944us;186us;1946us;187us;1939us;188us;1943us;189us;1942us;190us;1941us;191us;1940us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;973us;5us;32768us;10us;1075us;93us;2049us;94us;2046us;95us;2048us;203us;1059us;0us;16917us;0us;16918us;3us;16972us;93us;2049us;94us;2046us;95us;2048us;2us;16919us;34us;17473us;160us;17473us;0us;16920us;1us;32768us;92us;977us;40us;32768us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;981us;6us;16929us;10us;1075us;93us;2049us;94us;2046us;95us;2048us;97us;1009us;203us;1059us;0us;16921us;0us;16922us;3us;16972us;93us;2049us;94us;2046us;95us;2048us;0us;16923us;0us;16924us;6us;16925us;58us;1000us;77us;1003us;78us;1007us;89us;1016us;97us;1010us;132us;998us;4us;16928us;77us;1003us;78us;1007us;89us;1016us;97us;1010us;3us;16933us;77us;1003us;78us;1007us;89us;1016us;2us;16934us;77us;1003us;78us;1007us;3us;16936us;77us;1003us;78us;1007us;89us;1016us;3us;16937us;77us;1003us;78us;1007us;89us;1016us;3us;16940us;77us;1003us;78us;1007us;89us;1016us;2us;16942us;77us;1003us;78us;1007us;6us;32768us;58us;1000us;77us;1003us;78us;1007us;89us;1016us;97us;1010us;132us;998us;2us;16943us;77us;1003us;78us;1007us;6us;16946us;58us;1000us;77us;1003us;78us;1007us;89us;1016us;97us;1010us;132us;998us;8us;17542us;21us;1987us;58us;1000us;77us;1003us;78us;1007us;83us;1988us;89us;1016us;97us;1010us;132us;998us;15us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;58us;1000us;60us;2061us;69us;1535us;77us;1003us;78us;1007us;89us;1016us;94us;2062us;97us;1010us;127us;1532us;132us;998us;203us;1063us;7us;17110us;58us;1000us;77us;1003us;78us;1007us;84us;1325us;89us;1016us;97us;1010us;132us;998us;36us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16927us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;16929us;97us;1009us;1us;16930us;89us;1015us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;16931us;0us;16932us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16935us;45us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;45us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;0us;16938us;0us;16939us;45us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;0us;16941us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;2us;17542us;21us;1987us;83us;1988us;0us;16944us;2us;17541us;46us;1922us;193us;1921us;0us;16945us;4us;32768us;10us;1075us;69us;1022us;76us;1924us;203us;1059us;40us;32768us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;0us;16947us;0us;16948us;0us;16950us;38us;16949us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16951us;82us;32768us;13us;1187us;15us;2050us;16us;2052us;17us;2053us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16952us;0us;16953us;0us;16954us;0us;16955us;82us;32768us;13us;1187us;15us;2050us;16us;2052us;17us;2053us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;15us;2050us;16us;2052us;17us;2053us;0us;16956us;0us;16957us;26us;16958us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;1us;16960us;18us;1040us;0us;16959us;0us;16961us;93us;16961us;14us;17303us;15us;17303us;16us;17303us;17us;17303us;18us;17303us;19us;17303us;21us;17303us;26us;17303us;27us;17303us;28us;17303us;30us;17303us;33us;17303us;37us;17303us;38us;17303us;39us;17303us;40us;17303us;41us;17303us;43us;17303us;44us;17303us;45us;17303us;47us;17303us;48us;17303us;50us;17303us;51us;17303us;52us;17303us;54us;17303us;58us;17303us;59us;17303us;60us;17303us;61us;17303us;62us;17303us;63us;17303us;64us;17303us;65us;17303us;67us;17303us;69us;17303us;73us;17303us;77us;17303us;78us;17303us;79us;17303us;80us;17303us;81us;17303us;82us;17303us;83us;17303us;84us;17303us;87us;17303us;88us;17303us;89us;17303us;90us;17303us;93us;17303us;94us;17303us;95us;17303us;96us;17303us;97us;17303us;98us;17303us;101us;17303us;102us;17303us;104us;17303us;105us;17303us;108us;17303us;109us;17303us;111us;17303us;119us;17303us;121us;17303us;127us;17303us;128us;17303us;129us;17303us;131us;17303us;137us;17303us;138us;17303us;139us;17303us;140us;17303us;141us;17303us;142us;17303us;143us;17303us;145us;17303us;150us;17303us;151us;17303us;156us;17303us;158us;17303us;160us;17303us;161us;17303us;162us;17303us;184us;17303us;185us;17303us;186us;17303us;188us;17303us;189us;17303us;190us;17303us;191us;17303us;196us;17303us;197us;17303us;198us;17303us;1us;16964us;77us;1044us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;16962us;0us;16963us;1us;32768us;10us;1048us;0us;16965us;30us;16968us;21us;1987us;28us;1054us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;83us;1988us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;104us;1052us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;79us;16967us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16966us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16969us;1us;32768us;22us;1055us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;15us;2050us;16us;2052us;17us;2053us;0us;16970us;82us;16971us;13us;1187us;21us;1094us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1093us;0us;16972us;2us;16972us;19us;2007us;138us;2006us;2us;16972us;19us;2007us;138us;2006us;2us;16972us;30us;2005us;137us;2004us;2us;16972us;19us;2007us;138us;2006us;2us;16972us;19us;2007us;138us;2006us;0us;16972us;1us;16972us;58us;1320us;1us;16972us;59us;1433us;1us;16972us;59us;1454us;1us;16972us;156us;1479us;1us;16972us;64us;1485us;3us;16972us;93us;2049us;94us;2046us;95us;2048us;3us;16972us;93us;2049us;94us;2046us;95us;2048us;3us;16972us;60us;2041us;61us;2043us;196us;2044us;1us;16972us;65us;2045us;0us;16973us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;32768us;127us;1079us;2us;16976us;31us;1081us;165us;1076us;0us;16974us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;10us;1075us;19us;765us;203us;1059us;1us;17540us;21us;1999us;2us;16976us;31us;1081us;165us;1076us;0us;16975us;1us;32768us;127us;1088us;80us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1090us;0us;16977us;0us;16978us;82us;32768us;13us;1187us;21us;1094us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1093us;0us;16979us;0us;16980us;81us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1096us;0us;16981us;0us;16982us;0us;16983us;0us;16984us;0us;16985us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;4us;32768us;10us;1075us;26us;1305us;87us;1303us;203us;1059us;0us;16986us;0us;16987us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;4us;32768us;10us;1075us;26us;1305us;87us;1303us;203us;1059us;0us;16988us;0us;16989us;82us;32768us;10us;1075us;13us;1187us;18us;1112us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;5us;32768us;10us;1075us;26us;1305us;87us;1303us;129us;1114us;203us;1059us;0us;16990us;0us;16991us;2us;16992us;26us;1305us;87us;1303us;0us;16993us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16994us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;30us;32768us;10us;1075us;28us;1332us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;104us;1330us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;203us;1059us;0us;16995us;0us;16996us;0us;16997us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16998us;68us;17000us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;159us;1164us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16999us;80us;32768us;13us;1187us;22us;1034us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17001us;69us;17003us;13us;1187us;22us;1034us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;159us;1164us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17002us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1064us;0us;17004us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1064us;0us;17005us;45us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1062us;10us;17540us;10us;1075us;15us;2063us;21us;1999us;30us;2005us;37us;2059us;39us;2060us;60us;2061us;94us;2062us;137us;2004us;203us;1059us;87us;32768us;10us;1075us;13us;1187us;15us;2063us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1060us;9us;32768us;10us;1075us;15us;2063us;19us;2007us;37us;2059us;39us;2060us;60us;2061us;94us;2062us;138us;2006us;203us;1059us;0us;17006us;0us;17007us;0us;17008us;0us;17009us;0us;17010us;1us;32768us;98us;1530us;0us;17011us;4us;32768us;10us;1075us;30us;2005us;137us;2004us;203us;1059us;82us;32768us;10us;1075us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1061us;4us;32768us;10us;1075us;19us;2007us;138us;2006us;203us;1059us;0us;17012us;0us;17013us;0us;17014us;0us;17015us;0us;17016us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;2us;32768us;19us;2007us;138us;2006us;0us;17017us;0us;17018us;0us;17019us;0us;17020us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;26us;17021us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;26us;17022us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;0us;17023us;0us;17024us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;32768us;127us;1167us;1us;17540us;21us;1999us;2us;16976us;31us;1081us;165us;1076us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17025us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;10us;1075us;19us;765us;203us;1059us;1us;17540us;21us;1999us;3us;16976us;31us;1081us;165us;1076us;203us;1178us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17026us;0us;17027us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;32768us;127us;1181us;1us;17540us;21us;1999us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17028us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;10us;1075us;19us;765us;203us;1059us;0us;17029us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;26us;17030us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17031us;26us;17038us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;20us;17041us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;20us;17043us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;9us;17045us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;20us;17047us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;18us;17049us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;96us;1278us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;18us;17051us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;96us;1278us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;9us;17053us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;9us;17055us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;9us;17057us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;9us;17059us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;9us;17061us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;9us;17063us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;9us;17065us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;1us;17067us;191us;1282us;8us;17069us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;191us;1282us;4us;17071us;96us;1278us;158us;1270us;186us;1280us;191us;1282us;4us;17073us;96us;1278us;158us;1270us;186us;1280us;191us;1282us;1us;17075us;191us;1282us;1us;17077us;191us;1282us;1us;17079us;191us;1282us;23us;17081us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;102us;1250us;128us;1244us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;24us;17083us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;30us;32768us;10us;1075us;30us;2005us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;137us;2004us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;203us;1059us;26us;17109us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;26us;17113us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;26us;17118us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;30us;32768us;10us;1075us;28us;1332us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;104us;1330us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;203us;1059us;24us;17122us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;24us;17124us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;24us;17127us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;26us;32768us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;24us;17129us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;29us;32768us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;93us;2049us;94us;2046us;95us;2048us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;26us;17233us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;28us;32768us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;105us;1537us;128us;1244us;139us;1538us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;26us;17236us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;27us;17563us;62us;1276us;63us;1262us;69us;1258us;77us;2016us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17032us;0us;17033us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17034us;0us;17035us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17036us;0us;17037us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;17085us;68us;1240us;80us;32768us;13us;1187us;22us;1034us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17039us;1us;17040us;97us;1341us;6us;17040us;10us;1075us;93us;2049us;94us;2046us;95us;2048us;97us;1341us;203us;1059us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17042us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17044us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17046us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17048us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17050us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17052us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17054us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17056us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17058us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17060us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17062us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17064us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17066us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17068us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17070us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17072us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17074us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17076us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17078us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17080us;76us;17082us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;79us;17500us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1287us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;79us;17501us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17084us;0us;17084us;81us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1294us;4us;32768us;10us;1075us;19us;2007us;138us;2006us;203us;1059us;0us;17086us;0us;17087us;2us;32768us;19us;2007us;138us;2006us;0us;17088us;0us;17089us;0us;17090us;0us;17091us;0us;17092us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17093us;40us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;58us;1311us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1314us;0us;17094us;41us;32768us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;58us;1311us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1065us;3us;32768us;10us;1075us;20us;1307us;203us;1059us;0us;17095us;0us;17096us;0us;17097us;0us;17098us;39us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1313us;0us;17099us;0us;17100us;0us;17101us;0us;17102us;3us;32768us;10us;1075us;98us;1326us;203us;1066us;3us;17103us;10us;1075us;58us;1318us;203us;1059us;40us;32768us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;0us;17104us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;17105us;0us;17106us;0us;17107us;0us;17108us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17111us;3us;17117us;27us;1336us;140us;1335us;141us;1338us;0us;17112us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17114us;82us;32768us;10us;1075us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17115us;0us;17116us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17119us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17120us;0us;17121us;87us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;97us;1343us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17123us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17125us;87us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;97us;1347us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17126us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17128us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17480us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17480us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17130us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17487us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17131us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17483us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17132us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17486us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17133us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17499us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17134us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17494us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17135us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17495us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17136us;31us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1835us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1383us;31us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1835us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1383us;2us;17573us;35us;2029us;36us;2028us;37us;17277us;14us;17280us;21us;17280us;26us;17280us;35us;2029us;36us;2028us;56us;17573us;71us;17573us;72us;17573us;87us;17280us;92us;17573us;106us;17573us;111us;17280us;122us;17573us;136us;17573us;148us;17573us;155us;17573us;166us;17573us;167us;17573us;168us;17573us;169us;17573us;170us;17573us;171us;17573us;172us;17573us;173us;17573us;174us;17573us;175us;17573us;176us;17573us;177us;17573us;178us;17573us;180us;17573us;181us;17573us;194us;17573us;195us;17573us;199us;17573us;200us;17573us;201us;17573us;202us;17573us;31us;32768us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1382us;31us;32768us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1382us;1us;17138us;76us;1380us;6us;17138us;14us;17279us;26us;17279us;76us;1380us;87us;17279us;111us;17279us;132us;534us;7us;17171us;10us;1075us;46us;1441us;70us;1450us;92us;1443us;100us;1932us;193us;1921us;203us;1059us;0us;17137us;0us;17139us;0us;17140us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17141us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17142us;41us;17143us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1395us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;44us;17143us;26us;1575us;46us;1427us;56us;1435us;66us;1398us;69us;1562us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;87us;1571us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1395us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;43us;32768us;10us;1075us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1395us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;44us;17253us;26us;1575us;46us;1427us;56us;1435us;66us;1398us;69us;1562us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;87us;1571us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1395us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17144us;101us;17145us;14us;17148us;15us;17148us;16us;17148us;17us;17148us;18us;17148us;19us;17148us;20us;17148us;21us;17148us;26us;17148us;27us;17148us;28us;17148us;30us;17148us;33us;17148us;34us;1408us;35us;1407us;36us;1406us;37us;17148us;38us;17148us;39us;17148us;40us;17148us;41us;17148us;43us;17148us;44us;17148us;45us;17148us;47us;17148us;48us;17148us;50us;17148us;51us;17148us;52us;17148us;54us;17148us;58us;17148us;59us;17148us;60us;17148us;61us;17148us;62us;17148us;63us;17148us;64us;17148us;65us;17148us;67us;17148us;68us;17148us;69us;17148us;73us;17148us;74us;1425us;76us;1417us;77us;17148us;78us;17148us;79us;17148us;80us;17148us;81us;17148us;82us;17148us;83us;17148us;84us;17148us;87us;17148us;88us;17148us;89us;17148us;90us;17148us;93us;17148us;94us;17148us;95us;17148us;96us;17148us;97us;17148us;98us;17148us;101us;17148us;102us;17148us;104us;17148us;105us;17148us;108us;17148us;109us;17148us;111us;17148us;119us;17148us;121us;17148us;127us;17148us;128us;17148us;129us;17148us;131us;17148us;132us;17148us;137us;17148us;138us;17148us;139us;17148us;140us;17148us;141us;17148us;142us;17148us;143us;17148us;145us;17148us;150us;17148us;151us;17148us;156us;17148us;158us;17148us;160us;17148us;161us;17148us;162us;17148us;184us;17148us;185us;17148us;186us;17148us;188us;17148us;189us;17148us;190us;17148us;191us;17148us;196us;17148us;197us;17148us;198us;17148us;5us;17145us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;5us;17146us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;5us;17147us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;1us;32768us;76us;1400us;2us;17254us;69us;1567us;76us;1400us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17149us;2us;17150us;34us;1408us;35us;1407us;1us;17151us;34us;1408us;5us;17153us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;5us;17428us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;32768us;160us;1876us;0us;17152us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;40us;17477us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;32768us;193us;1921us;1us;32768us;193us;1921us;0us;17154us;0us;17154us;0us;17155us;7us;17171us;10us;1075us;46us;1441us;70us;1450us;92us;1443us;100us;1932us;193us;1921us;203us;1059us;0us;17156us;1us;32768us;76us;1420us;7us;17171us;10us;1075us;46us;1441us;70us;1450us;92us;1443us;100us;1932us;193us;1921us;203us;1059us;0us;17157us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;3us;17493us;92us;1927us;100us;1932us;193us;1921us;0us;17158us;2us;32768us;92us;1300us;193us;1299us;0us;17159us;0us;17160us;0us;17161us;81us;17228us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1067us;3us;32768us;10us;1075us;59us;1431us;203us;1059us;0us;17162us;0us;17163us;0us;17164us;0us;17165us;2us;32768us;72us;1625us;92us;1436us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17166us;0us;17167us;0us;17168us;0us;17169us;0us;17170us;0us;17172us;95us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;58us;1967us;62us;1355us;63us;1947us;66us;1398us;69us;1951us;70us;1429us;71us;1481us;72us;1625us;74us;1423us;78us;1444us;82us;1959us;85us;1129us;86us;1131us;89us;1367us;90us;1370us;91us;1412us;92us;1489us;96us;1289us;98us;1189us;100us;1932us;102us;1952us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1286us;145us;1958us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1475us;158us;1364us;159us;1164us;160us;1953us;161us;1954us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;182us;1960us;183us;1361us;184us;1358us;185us;1944us;186us;1946us;187us;1411us;188us;1943us;189us;1352us;190us;1941us;191us;1940us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1930us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;1us;32768us;76us;1446us;1us;32768us;178us;1447us;0us;17173us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17174us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1068us;3us;32768us;10us;1075us;59us;1452us;203us;1059us;0us;17175us;0us;17176us;0us;17177us;0us;17178us;0us;17179us;0us;17180us;0us;17181us;0us;17182us;0us;17183us;0us;17184us;0us;17185us;0us;17186us;0us;17187us;0us;17188us;0us;17189us;81us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;142us;1473us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1471us;3us;32768us;10us;1075us;142us;1469us;203us;1059us;0us;17190us;0us;17191us;1us;32768us;142us;1472us;0us;17192us;0us;17193us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1069us;82us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;156us;1965us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1069us;3us;32768us;10us;1075us;156us;1477us;203us;1059us;0us;17194us;0us;17195us;0us;17196us;0us;17197us;81us;17230us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1070us;3us;32768us;10us;1075us;64us;1483us;203us;1059us;0us;17198us;0us;17199us;0us;17200us;0us;17201us;90us;32768us;10us;1075us;13us;1187us;15us;1499us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;1496us;39us;1497us;41us;767us;46us;1427us;56us;1435us;60us;1498us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;88us;1539us;89us;1366us;90us;1369us;91us;1413us;92us;1488us;93us;2049us;94us;2046us;95us;2048us;96us;1288us;97us;1501us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1350us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1071us;104us;32768us;10us;1075us;13us;1187us;15us;1499us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;1496us;39us;1497us;41us;767us;46us;1427us;56us;1435us;58us;1967us;60us;1498us;62us;1355us;63us;1947us;66us;1398us;69us;1951us;70us;1429us;71us;1481us;72us;1625us;74us;1423us;82us;1959us;85us;1129us;86us;1131us;88us;1539us;89us;1367us;90us;1370us;91us;1413us;92us;1488us;93us;2049us;94us;2046us;95us;2048us;96us;1289us;97us;1501us;98us;1189us;100us;1932us;102us;1952us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1286us;145us;1958us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1475us;158us;1364us;159us;1164us;160us;1953us;161us;1954us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;182us;1960us;183us;1361us;184us;1358us;185us;1944us;186us;1946us;187us;1411us;188us;1943us;189us;1351us;190us;1941us;191us;1940us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1072us;104us;32768us;10us;1075us;13us;1187us;15us;1499us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;1496us;39us;1497us;41us;767us;46us;1427us;56us;1435us;58us;1967us;60us;1498us;62us;1355us;63us;1947us;66us;1398us;69us;1951us;70us;1429us;71us;1481us;72us;1625us;74us;1423us;82us;1959us;85us;1129us;86us;1131us;88us;1539us;89us;1367us;90us;1370us;91us;1413us;92us;1488us;93us;2049us;94us;2046us;95us;2048us;96us;1289us;97us;1501us;98us;1189us;100us;1932us;102us;1952us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1286us;145us;1958us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1475us;158us;1364us;159us;1164us;160us;1953us;161us;1954us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;182us;1960us;183us;1361us;184us;1358us;185us;1944us;186us;1946us;187us;1411us;188us;1943us;189us;1351us;190us;1941us;191us;1940us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1072us;0us;17202us;9us;32768us;10us;1075us;15us;2057us;37us;2054us;39us;2055us;60us;2056us;93us;2049us;94us;2046us;95us;2048us;203us;1059us;0us;17203us;0us;17204us;0us;17205us;0us;17205us;0us;17206us;0us;17207us;0us;17208us;0us;17209us;0us;17210us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17211us;1us;32768us;77us;1504us;1us;32768us;92us;1505us;1us;16553us;73us;317us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17212us;0us;17213us;0us;17214us;0us;17215us;4us;17215us;93us;17218us;94us;17218us;95us;17218us;102us;17218us;4us;32768us;93us;2049us;94us;2046us;95us;2048us;102us;1515us;0us;17216us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;6us;17217us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;85us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;54us;1555us;56us;1435us;60us;2041us;61us;2043us;62us;1354us;66us;1399us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1373us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;196us;2044us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1073us;5us;32768us;10us;1075us;60us;2041us;61us;2043us;196us;2044us;203us;1059us;0us;17219us;0us;17220us;0us;17221us;0us;17222us;0us;17223us;0us;17224us;0us;17225us;0us;17226us;0us;17227us;0us;17229us;0us;17231us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17232us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17234us;0us;17235us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17237us;0us;17238us;1us;32768us;201us;2014us;3us;17244us;37us;2031us;38us;2034us;108us;2035us;0us;17241us;42us;17246us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;77us;1551us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1395us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;32768us;88us;1544us;0us;17239us;0us;17240us;0us;17243us;1us;32768us;92us;1548us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17245us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1553us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17247us;37us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;93us;2049us;94us;2046us;95us;2048us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1865us;0us;17248us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1835us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;2us;17573us;35us;2029us;36us;2028us;30us;17242us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17269us;2us;17261us;21us;1584us;83us;1585us;0us;17249us;0us;17250us;82us;32768us;10us;1075us;13us;1187us;22us;1034us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17269us;2us;17261us;21us;1584us;83us;1585us;0us;17251us;0us;17252us;80us;17255us;13us;1187us;22us;1034us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17269us;2us;17261us;21us;1584us;83us;1585us;0us;17256us;3us;32768us;46us;1922us;66us;1589us;193us;1921us;0us;17269us;2us;17261us;21us;1584us;83us;1585us;0us;17257us;5us;17261us;21us;1584us;46us;1922us;66us;1589us;83us;1585us;193us;1921us;1us;32768us;20us;1577us;0us;17258us;0us;17269us;2us;17261us;21us;1584us;83us;1585us;1us;32768us;20us;1581us;0us;17259us;0us;17260us;3us;17260us;46us;1922us;66us;1589us;193us;1921us;1us;17262us;83us;1587us;1us;17263us;21us;1586us;0us;17264us;0us;17265us;1us;17266us;76us;1924us;0us;17267us;0us;17268us;8us;17273us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;60us;2061us;69us;1592us;94us;2062us;203us;1059us;87us;17271us;10us;1075us;13us;1187us;15us;2063us;22us;1034us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17270us;0us;17272us;0us;17274us;3us;17540us;21us;1999us;26us;1606us;87us;1604us;1us;17540us;21us;1999us;3us;17287us;14us;593us;111us;592us;203us;1615us;0us;17275us;2us;32768us;14us;593us;111us;592us;0us;17276us;0us;17278us;0us;17281us;3us;16553us;22us;537us;73us;317us;203us;802us;0us;17283us;2us;16553us;73us;317us;203us;802us;1us;32768us;20us;1608us;0us;17284us;3us;17532us;19us;1994us;20us;1995us;142us;1996us;0us;17285us;3us;17287us;14us;593us;111us;592us;203us;1615us;0us;17286us;3us;17287us;14us;593us;111us;592us;203us;1615us;0us;17288us;3us;17287us;14us;593us;111us;592us;203us;1615us;0us;17289us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;8us;17282us;26us;1606us;36us;1746us;46us;1922us;70us;1760us;87us;1604us;91us;1916us;189us;1918us;193us;1921us;3us;17532us;19us;1994us;20us;1995us;142us;1996us;1us;17540us;21us;1999us;0us;17290us;1us;32768us;72us;1625us;0us;17291us;0us;17292us;43us;32768us;10us;1075us;46us;1427us;56us;1435us;65us;2045us;66us;1399us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1074us;3us;32768us;10us;1075us;65us;2045us;203us;1059us;0us;17293us;0us;17294us;0us;17295us;0us;17296us;0us;17297us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;32768us;98us;1634us;81us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1636us;0us;17298us;0us;17299us;36us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1647us;2us;32768us;98us;1639us;203us;1645us;82us;32768us;10us;1075us;13us;1187us;18us;1643us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;3us;32768us;10us;1075us;20us;1641us;203us;1059us;0us;17300us;0us;17301us;1us;32768us;20us;1644us;0us;17302us;1us;32768us;20us;1646us;0us;17304us;1us;32768us;20us;1648us;0us;17305us;40us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;58us;1311us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1314us;0us;17306us;40us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;58us;1311us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1314us;1us;32768us;20us;1653us;0us;17307us;1us;17308us;84us;1655us;32us;32768us;46us;1922us;52us;637us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;652us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;17310us;84us;1657us;32us;32768us;46us;1922us;52us;637us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;652us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;36us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17313us;0us;17314us;1us;17317us;98us;1662us;36us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17315us;0us;17316us;1us;17321us;96us;1666us;36us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1675us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17318us;0us;17319us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1675us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17320us;1us;17325us;96us;1672us;36us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1675us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17322us;0us;17323us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1675us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17324us;32us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;74us;1682us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;7us;17330us;36us;1746us;46us;1922us;70us;1760us;77us;1679us;91us;1916us;189us;1918us;193us;1921us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;6us;17326us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;0us;17327us;1us;32768us;193us;1921us;1us;32768us;77us;1684us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;6us;17328us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;0us;17329us;7us;17335us;36us;1746us;46us;1922us;70us;1760us;77us;1688us;91us;1916us;189us;1918us;193us;1921us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;6us;17331us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;0us;17332us;1us;32768us;193us;1921us;1us;32768us;77us;1693us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;6us;17333us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;0us;17334us;7us;17339us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;98us;1698us;189us;1918us;193us;1921us;7us;32768us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;98us;1698us;189us;1918us;193us;1921us;34us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;98us;1701us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17336us;0us;17337us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17338us;1us;17343us;98us;1704us;36us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;98us;1707us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17340us;0us;17341us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17342us;1us;32768us;10us;1710us;0us;17344us;8us;17352us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;96us;1712us;186us;1720us;189us;1918us;193us;1921us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17345us;0us;17346us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17347us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17348us;0us;17349us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17350us;0us;17351us;8us;17359us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;96us;1724us;186us;1729us;189us;1918us;193us;1921us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17353us;0us;17354us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17355us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17356us;0us;17357us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17358us;2us;17363us;79us;1755us;89us;1735us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;2us;17414us;76us;1868us;89us;1737us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;17362us;76us;1924us;0us;17363us;1us;17365us;189us;1742us;4us;17365us;34us;1874us;76us;1871us;160us;1876us;189us;1742us;3us;32768us;62us;860us;92us;856us;178us;855us;0us;17364us;9us;32768us;10us;1075us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;96us;1853us;189us;1918us;193us;1921us;203us;1059us;0us;17366us;1us;32768us;70us;1760us;0us;17367us;0us;17368us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1865us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;4us;32768us;46us;1922us;91us;1916us;189us;1918us;193us;1921us;0us;17369us;0us;17370us;0us;17371us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17372us;1us;17418us;79us;1758us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17373us;2us;32768us;59us;1761us;97us;1762us;0us;17374us;2us;32768us;59us;1763us;97us;1764us;0us;17375us;2us;32768us;59us;1765us;97us;1766us;0us;17376us;2us;32768us;59us;1767us;97us;1768us;0us;17377us;2us;32768us;59us;1769us;97us;1770us;0us;17378us;2us;32768us;59us;1771us;97us;1772us;0us;17379us;2us;32768us;59us;1773us;97us;1774us;0us;17380us;2us;32768us;59us;1775us;97us;1776us;0us;17381us;2us;32768us;59us;1777us;97us;1778us;0us;17382us;2us;32768us;59us;1779us;97us;1780us;0us;17383us;2us;32768us;59us;1781us;97us;1782us;0us;17384us;2us;32768us;59us;1783us;97us;1784us;0us;17385us;2us;32768us;59us;1785us;97us;1786us;0us;17386us;2us;32768us;59us;1787us;97us;1788us;0us;17387us;2us;32768us;59us;1789us;97us;1790us;0us;17388us;2us;32768us;59us;1791us;97us;1792us;0us;17389us;2us;32768us;59us;1793us;97us;1794us;0us;17390us;2us;32768us;59us;1795us;97us;1796us;0us;17391us;2us;32768us;59us;1797us;97us;1798us;0us;17392us;2us;32768us;59us;1799us;97us;1800us;0us;17393us;2us;32768us;59us;1801us;97us;1802us;0us;17394us;2us;32768us;59us;1803us;97us;1804us;0us;17395us;2us;32768us;59us;1805us;97us;1806us;0us;17396us;2us;32768us;59us;1807us;97us;1808us;0us;17397us;2us;32768us;59us;1809us;97us;1810us;0us;17398us;2us;32768us;59us;1811us;97us;1812us;0us;17399us;2us;32768us;59us;1813us;97us;1814us;0us;17400us;2us;32768us;59us;1815us;97us;1816us;0us;17401us;2us;32768us;59us;1817us;97us;1818us;0us;17402us;2us;32768us;59us;1819us;97us;1820us;0us;17403us;2us;32768us;59us;1821us;97us;1822us;0us;17404us;1us;32768us;59us;1823us;0us;17405us;1us;32768us;97us;1825us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17409us;1us;17406us;97us;1829us;4us;32768us;10us;1075us;97us;1829us;161us;1880us;203us;1059us;33us;17450us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17407us;0us;17408us;1us;17410us;189us;1833us;3us;32768us;62us;860us;92us;856us;178us;855us;0us;17411us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1865us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;4us;32768us;46us;1922us;91us;1916us;189us;1918us;193us;1921us;0us;17412us;1us;17413us;76us;1868us;1us;17414us;76us;1868us;0us;17415us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;17416us;76us;1868us;0us;17417us;0us;17418us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1865us;5us;32768us;10us;1075us;93us;2049us;94us;2046us;95us;2048us;203us;1059us;6us;17445us;10us;1075us;69us;1889us;93us;2049us;94us;2046us;95us;2048us;203us;1059us;0us;17419us;0us;17420us;1us;32768us;92us;1852us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;5us;32768us;10us;1075us;93us;2049us;94us;2046us;95us;2048us;203us;1059us;0us;17421us;0us;17422us;0us;17423us;0us;17424us;0us;17425us;0us;17426us;0us;17427us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17429us;0us;17430us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17431us;0us;17432us;2us;32768us;46us;1922us;193us;1921us;3us;17433us;34us;1874us;76us;1924us;160us;1876us;0us;17434us;7us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;60us;2061us;94us;2062us;203us;1059us;0us;17435us;0us;17436us;1us;32768us;160us;1876us;0us;17437us;36us;17450us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;161us;1886us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;1us;32768us;97us;1878us;40us;17450us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;46us;1922us;56us;580us;60us;2061us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;94us;2062us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17409us;0us;17438us;0us;17439us;0us;17440us;8us;17448us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;60us;2061us;94us;2062us;161us;1884us;203us;1059us;0us;17441us;0us;17442us;0us;17443us;0us;17444us;1us;17445us;69us;1889us;33us;17447us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17446us;0us;17448us;0us;17449us;8us;32768us;46us;1922us;66us;1896us;91us;1916us;92us;1900us;178us;1906us;186us;1915us;189us;1918us;193us;1921us;3us;32768us;96us;1913us;161us;1895us;186us;1914us;0us;17451us;1us;32768us;161us;1897us;0us;17452us;1us;17453us;76us;1924us;0us;17454us;7us;32768us;46us;1922us;91us;1916us;92us;1900us;178us;1906us;186us;1915us;189us;1918us;193us;1921us;5us;32768us;93us;2049us;94us;2046us;95us;2048us;96us;1913us;186us;1914us;0us;17455us;1us;17456us;189us;1904us;3us;32768us;62us;860us;92us;856us;178us;855us;0us;17457us;0us;17458us;6us;17459us;46us;1922us;91us;1916us;92us;1900us;178us;1906us;189us;1918us;193us;1921us;0us;17460us;0us;17461us;0us;17462us;0us;17463us;0us;17464us;7us;32768us;46us;1922us;91us;1916us;92us;1900us;178us;1906us;186us;1915us;189us;1918us;193us;1921us;7us;32768us;46us;1922us;91us;1916us;92us;1900us;178us;1906us;186us;1915us;189us;1918us;193us;1921us;7us;32768us;46us;1922us;91us;1916us;92us;1900us;178us;1906us;186us;1915us;189us;1918us;193us;1921us;1us;32768us;193us;1921us;0us;17465us;1us;32768us;193us;1921us;0us;17466us;81us;17466us;10us;17513us;15us;17513us;21us;17513us;28us;17513us;34us;17513us;35us;17513us;36us;17513us;37us;17513us;39us;17513us;46us;17513us;56us;17513us;60us;17513us;62us;17513us;63us;17513us;66us;17513us;68us;17513us;69us;17513us;70us;17513us;71us;17513us;72us;17513us;74us;17513us;76us;17513us;78us;17513us;79us;17513us;80us;17513us;81us;17513us;82us;17513us;83us;17513us;89us;17513us;90us;17513us;91us;17513us;92us;17513us;96us;17513us;97us;17513us;100us;17513us;104us;17513us;106us;17513us;122us;17513us;128us;17513us;136us;17513us;143us;17513us;145us;17513us;148us;17513us;149us;17513us;154us;17513us;155us;17513us;158us;17513us;160us;17513us;161us;17513us;166us;17513us;167us;17513us;168us;17513us;169us;17513us;170us;17513us;171us;17513us;172us;17513us;173us;17513us;174us;17513us;175us;17513us;176us;17513us;177us;17513us;178us;17513us;180us;17513us;181us;17513us;183us;17513us;184us;17513us;185us;17513us;186us;17513us;187us;17513us;188us;17513us;189us;17513us;190us;17513us;191us;17513us;193us;17513us;194us;17513us;195us;17513us;199us;17513us;200us;17513us;201us;17513us;202us;17513us;203us;17513us;0us;17467us;0us;17468us;0us;17469us;8us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;60us;2061us;94us;2062us;193us;1921us;203us;1059us;0us;17470us;0us;17471us;27us;32768us;58us;1967us;62us;1949us;63us;1947us;69us;1951us;74us;1955us;82us;1959us;89us;1956us;90us;1957us;96us;1950us;102us;1952us;143us;1962us;145us;1958us;155us;1964us;158us;1961us;160us;1953us;161us;1954us;182us;1960us;183us;1948us;184us;1945us;185us;1944us;186us;1946us;187us;1939us;188us;1943us;189us;1942us;190us;1941us;191us;1940us;203us;1930us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17472us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17473us;0us;17474us;1us;32768us;58us;1934us;5us;32768us;66us;1936us;93us;2049us;94us;2046us;95us;2048us;193us;1966us;0us;17475us;1us;32768us;58us;1937us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17476us;0us;17477us;0us;17478us;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;1us;17500us;143us;1963us;0us;17501us;1us;32768us;156us;1965us;0us;17502us;0us;17503us;1us;32768us;193us;1966us;0us;17504us;0us;17505us;0us;17506us;0us;17507us;1us;17508us;76us;1974us;0us;17509us;10us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;60us;2061us;92us;1927us;94us;2062us;100us;1932us;193us;1921us;203us;1059us;0us;17510us;0us;17511us;0us;17512us;0us;17513us;0us;17514us;0us;17515us;0us;17516us;0us;17517us;3us;17518us;21us;1982us;67us;1981us;83us;1980us;0us;17519us;3us;17521us;21us;1982us;67us;1981us;83us;1980us;0us;17520us;1us;17522us;83us;1989us;1us;17523us;21us;1990us;0us;17524us;0us;17525us;0us;17526us;0us;17527us;0us;17528us;0us;17529us;0us;17530us;0us;17531us;0us;17533us;0us;17535us;0us;17539us;0us;17541us;0us;17543us;0us;17547us;0us;17549us;0us;17551us;0us;17552us;0us;17553us;0us;17554us;0us;17555us;0us;17556us;0us;17557us;0us;17558us;0us;17559us;0us;17560us;0us;17561us;0us;17562us;1us;32768us;193us;1921us;0us;17564us;0us;17565us;81us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;197us;2018us;198us;2019us;199us;2023us;200us;2026us;201us;2014us;202us;847us;2us;32768us;197us;2018us;198us;2019us;0us;17566us;0us;17567us;81us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;197us;2018us;198us;2019us;199us;2023us;200us;2026us;201us;2014us;202us;847us;2us;32768us;197us;2018us;198us;2019us;0us;17568us;0us;17569us;0us;17570us;0us;17571us;0us;17572us;0us;17574us;3us;32768us;37us;2031us;38us;2034us;108us;2035us;3us;17597us;37us;2031us;38us;2034us;108us;2035us;0us;17576us;0us;17577us;0us;17578us;3us;32768us;39us;2036us;40us;2039us;150us;2040us;3us;17598us;39us;2036us;40us;2039us;150us;2040us;0us;17579us;0us;17580us;0us;17581us;3us;32768us;60us;2041us;61us;2043us;196us;2044us;0us;17582us;0us;17583us;0us;17584us;0us;17585us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17586us;0us;17587us;0us;17588us;3us;32768us;15us;2050us;16us;2052us;17us;2053us;0us;17589us;0us;17590us;0us;17591us;0us;17592us;0us;17593us;0us;17594us;0us;17595us;0us;17596us;0us;17597us;0us;17598us;0us;17599us;0us;17600us;0us;17601us;0us;17602us;|] -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;4348us;4354us;4355us;4356us;4360us;4361us;4364us;4365us;4366us;4369us;4373us;4374us;4375us;4377us;4378us;4379us;4380us;4381us;4382us;4383us;4391us;4395us;4398us;4400us;4401us;4402us;4403us;4405us;4410us;4411us;4414us;4416us;4418us;4421us;4422us;4423us;4426us;4428us;4459us;4461us;4463us;4465us;4467us;4468us;4469us;4471us;4475us;4477us;4479us;4480us;4481us;4514us;4516us;4518us;4520us;4553us;4554us;4555us;4557us;4559us;4590us;4592us;4594us;4597us;4599us;4633us;4634us;4638us;4672us;4677us;4683us;4684us;4688us;4689us;4690us;4692us;4696us;4697us;4732us;4737us;4739us;4741us;4743us;4747us;4748us;4751us;4752us;4753us;4760us;4792us;4799us;4813us;4815us;4816us;4818us;4820us;4821us;4824us;4825us;4827us;4829us;4830us;4834us;4841us;4877us;4878us;4913us;4914us;4915us;4950us;4951us;4952us;4953us;4988us;4989us;5030us;5036us;5037us;5067us;5071us;5072us;5074us;5078us;5079us;5084us;5085us;5126us;5133us;5180us;5181us;5216us;5217us;5218us;5251us;5252us;5254us;5286us;5287us;5289us;5321us;5329us;5337us;5338us;5339us;5340us;5341us;5344us;5352us;5353us;5354us;5356us;5357us;5361us;5363us;5367us;5403us;5404us;5405us;5406us;5408us;5409us;5411us;5415us;5419us;5421us;5422us;5423us;5425us;5460us;5461us;5462us;5465us;5467us;5469us;5472us;5473us;5474us;5555us;5556us;5558us;5561us;5565us;5566us;5648us;5652us;5653us;5654us;5655us;5656us;5657us;5658us;5659us;5660us;5662us;5666us;5668us;5671us;5673us;5678us;5682us;5683us;5685us;5687us;5689us;5690us;5692us;5693us;5697us;5704us;5705us;5707us;5713us;5715us;5717us;5718us;5719us;5720us;5722us;5724us;5725us;5729us;5731us;5732us;5735us;5737us;5738us;5740us;5741us;5742us;5744us;5782us;5784us;5788us;5870us;5871us;5872us;5873us;5953us;5959us;5960us;5961us;5962us;5963us;5965us;5966us;5969us;5972us;6053us;6054us;6057us;6058us;6059us;6062us;6096us;6097us;6098us;6099us;6100us;6101us;6102us;6103us;6104us;6105us;6106us;6107us;6108us;6109us;6110us;6111us;6112us;6113us;6114us;6115us;6116us;6118us;6120us;6121us;6123us;6125us;6127us;6128us;6129us;6132us;6136us;6137us;6138us;6141us;6142us;6144us;6146us;6147us;6153us;6154us;6156us;6157us;6159us;6162us;6198us;6199us;6200us;6204us;6208us;6209us;6210us;6219us;6225us;6226us;6227us;6228us;6232us;6233us;6234us;6238us;6240us;6243us;6246us;6249us;6251us;6253us;6260us;6267us;6274us;6281us;6318us;6319us;6357us;6395us;6397us;6398us;6399us;6444us;6489us;6490us;6491us;6536us;6537us;6575us;6613us;6616us;6617us;6621us;6622us;6624us;6625us;6629us;6634us;6675us;6682us;6683us;6684us;6724us;6762us;6763us;6799us;6800us;6836us;6837us;6838us;6874us;6875us;6911us;6912us;6944us;6945us;6946us;7011us;7015us;7016us;7017us;7055us;7056us;7092us;7093us;7129us;7130us;7131us;7135us;7139us;7140us;7144us;7145us;7184us;7186us;7187us;7226us;7228us;7229us;7231us;7233us;7234us;7235us;7236us;7237us;7238us;7239us;7304us;7310us;7311us;7312us;7316us;7319us;7320us;7322us;7363us;7370us;7371us;7372us;7376us;7377us;7378us;7385us;7390us;7394us;7397us;7401us;7405us;7409us;7412us;7419us;7422us;7429us;7438us;7454us;7462us;7499us;7500us;7539us;7541us;7543us;7579us;7580us;7581us;7620us;7659us;7660us;7706us;7752us;7753us;7754us;7800us;7801us;7840us;7879us;7882us;7883us;7886us;7887us;7892us;7933us;7934us;7935us;7936us;7975us;7976us;8059us;8065us;8066us;8067us;8068us;8069us;8152us;8156us;8157us;8158us;8185us;8187us;8188us;8189us;8283us;8285us;8321us;8322us;8323us;8325us;8326us;8357us;8437us;8438us;8518us;8519us;8521us;8601us;8605us;8606us;8689us;8690us;8693us;8696us;8699us;8702us;8705us;8706us;8708us;8710us;8712us;8714us;8716us;8720us;8724us;8728us;8730us;8731us;8769us;8850us;8852us;8855us;8856us;8894us;8975us;8979us;8981us;8984us;8985us;8987us;9068us;9069us;9070us;9153us;9154us;9155us;9237us;9238us;9239us;9240us;9241us;9242us;9322us;9327us;9328us;9329us;9409us;9414us;9415us;9416us;9499us;9505us;9506us;9507us;9510us;9511us;9592us;9593us;9675us;9706us;9707us;9708us;9709us;9789us;9790us;9859us;9860us;9941us;9942us;10012us;10013us;10095us;10096us;10178us;10179us;10225us;10236us;10324us;10334us;10335us;10336us;10337us;10338us;10339us;10341us;10342us;10347us;10430us;10435us;10436us;10437us;10438us;10439us;10440us;10521us;10524us;10525us;10526us;10527us;10528us;10610us;10637us;10719us;10746us;10747us;10748us;10786us;10867us;10869us;10871us;10874us;10955us;10956us;10994us;11075us;11079us;11081us;11085us;11166us;11167us;11168us;11248us;11250us;11252us;11333us;11334us;11415us;11419us;11420us;11500us;11527us;11609us;11610us;11637us;11658us;11679us;11689us;11710us;11729us;11748us;11758us;11768us;11778us;11788us;11798us;11808us;11818us;11820us;11829us;11834us;11839us;11841us;11843us;11845us;11869us;11894us;11925us;11952us;11979us;12006us;12037us;12062us;12087us;12112us;12139us;12164us;12194us;12221us;12250us;12277us;12305us;12341us;12342us;12343us;12379us;12380us;12381us;12417us;12418us;12419us;12499us;12501us;12582us;12583us;12585us;12592us;12679us;12680us;12767us;12768us;12855us;12856us;12943us;12944us;13031us;13032us;13119us;13120us;13207us;13208us;13295us;13296us;13383us;13384us;13471us;13472us;13559us;13560us;13647us;13648us;13735us;13736us;13823us;13824us;13911us;13912us;13999us;14000us;14087us;14088us;14175us;14176us;14263us;14264us;14351us;14352us;14429us;14509us;14589us;14669us;14670us;14671us;14753us;14758us;14759us;14760us;14763us;14764us;14765us;14766us;14767us;14768us;14848us;14852us;14853us;14894us;14895us;14937us;14941us;14942us;14943us;14944us;14945us;14985us;14986us;14987us;14988us;14989us;14993us;14997us;15038us;15039us;15078us;15079us;15080us;15081us;15082us;15162us;15244us;15245us;15249us;15250us;15332us;15333us;15416us;15417us;15418us;15498us;15579us;15580us;15660us;15661us;15662us;15750us;15751us;15838us;15839us;15927us;15928us;16015us;16016us;16067us;16118us;16169us;16220us;16221us;16272us;16323us;16324us;16375us;16426us;16427us;16478us;16529us;16530us;16581us;16632us;16633us;16684us;16735us;16736us;16787us;16838us;16839us;16871us;16903us;16906us;16944us;16976us;17008us;17010us;17017us;17025us;17026us;17027us;17028us;17079us;17080us;17131us;17132us;17174us;17219us;17263us;17308us;17309us;17411us;17417us;17458us;17464us;17470us;17472us;17475us;17516us;17517us;17520us;17522us;17528us;17534us;17575us;17616us;17618us;17619us;17660us;17701us;17703us;17705us;17706us;17707us;17708us;17716us;17717us;17719us;17727us;17728us;17732us;17736us;17737us;17740us;17741us;17742us;17743us;17825us;17829us;17830us;17831us;17832us;17833us;17836us;17916us;17917us;17918us;17919us;17920us;17921us;17922us;18018us;18022us;18024us;18026us;18027us;18031us;18032us;18114us;18118us;18119us;18120us;18121us;18122us;18123us;18124us;18125us;18126us;18127us;18128us;18129us;18130us;18131us;18132us;18133us;18215us;18219us;18220us;18221us;18223us;18224us;18225us;18307us;18390us;18394us;18395us;18396us;18397us;18398us;18480us;18484us;18485us;18486us;18487us;18488us;18579us;18684us;18789us;18790us;18800us;18801us;18802us;18803us;18804us;18805us;18806us;18807us;18808us;18809us;18889us;18890us;18892us;18894us;18896us;18900us;18980us;18981us;18982us;18983us;18984us;18989us;18994us;18995us;19027us;19034us;19120us;19126us;19127us;19128us;19129us;19130us;19131us;19132us;19133us;19134us;19135us;19136us;19137us;19219us;19220us;19307us;19308us;19309us;19389us;19469us;19470us;19471us;19473us;19477us;19478us;19521us;19523us;19524us;19525us;19526us;19528us;19562us;19566us;19567us;19601us;19602us;19640us;19641us;19672us;19675us;19706us;19707us;19710us;19711us;19712us;19795us;19796us;19799us;19800us;19801us;19882us;19883us;19886us;19887us;19891us;19892us;19895us;19896us;19902us;19904us;19905us;19906us;19909us;19911us;19912us;19913us;19917us;19919us;19921us;19922us;19923us;19925us;19926us;19927us;19936us;20024us;20025us;20026us;20027us;20031us;20033us;20037us;20038us;20041us;20042us;20043us;20044us;20048us;20049us;20052us;20054us;20055us;20059us;20060us;20064us;20065us;20069us;20070us;20074us;20075us;20107us;20116us;20120us;20122us;20123us;20125us;20126us;20127us;20171us;20175us;20176us;20177us;20178us;20179us;20180us;20216us;20218us;20300us;20301us;20302us;20339us;20342us;20425us;20429us;20430us;20431us;20433us;20434us;20436us;20437us;20439us;20440us;20481us;20482us;20523us;20525us;20526us;20528us;20561us;20563us;20596us;20633us;20634us;20635us;20637us;20674us;20675us;20676us;20678us;20715us;20716us;20717us;20752us;20753us;20755us;20792us;20793us;20794us;20829us;20830us;20863us;20871us;20905us;20912us;20913us;20915us;20917us;20951us;20958us;20959us;20967us;21001us;21008us;21009us;21011us;21013us;21047us;21054us;21055us;21063us;21071us;21106us;21107us;21108us;21140us;21141us;21143us;21180us;21181us;21182us;21216us;21217us;21219us;21220us;21229us;21265us;21266us;21267us;21301us;21302us;21338us;21339us;21340us;21376us;21377us;21378us;21387us;21423us;21424us;21425us;21459us;21460us;21496us;21497us;21498us;21532us;21533us;21536us;21567us;21570us;21601us;21603us;21604us;21606us;21611us;21615us;21616us;21626us;21627us;21629us;21630us;21631us;21666us;21670us;21675us;21676us;21677us;21678us;21712us;21713us;21715us;21749us;21750us;21753us;21754us;21757us;21758us;21761us;21762us;21765us;21766us;21769us;21770us;21773us;21774us;21777us;21778us;21781us;21782us;21785us;21786us;21789us;21790us;21793us;21794us;21797us;21798us;21801us;21802us;21805us;21806us;21809us;21810us;21813us;21814us;21817us;21818us;21821us;21822us;21825us;21826us;21829us;21830us;21833us;21834us;21837us;21838us;21841us;21842us;21845us;21846us;21849us;21850us;21853us;21854us;21857us;21858us;21861us;21862us;21865us;21866us;21869us;21870us;21873us;21874us;21876us;21877us;21879us;21913us;21914us;21916us;21921us;21955us;21956us;21957us;21959us;21963us;21964us;21999us;22003us;22008us;22009us;22011us;22013us;22014us;22045us;22047us;22048us;22049us;22084us;22090us;22097us;22098us;22099us;22101us;22135us;22171us;22177us;22178us;22179us;22180us;22181us;22182us;22183us;22184us;22225us;22226us;22227us;22231us;22232us;22233us;22236us;22240us;22241us;22249us;22250us;22251us;22253us;22254us;22291us;22293us;22334us;22335us;22336us;22337us;22338us;22347us;22348us;22349us;22350us;22351us;22353us;22387us;22388us;22389us;22390us;22399us;22403us;22404us;22406us;22407us;22409us;22410us;22418us;22424us;22425us;22427us;22431us;22432us;22433us;22440us;22441us;22442us;22443us;22444us;22445us;22453us;22461us;22469us;22471us;22472us;22474us;22475us;22557us;22558us;22559us;22560us;22569us;22570us;22571us;22599us;22603us;22604us;22608us;22609us;22610us;22612us;22618us;22619us;22621us;22625us;22626us;22627us;22628us;22629us;22630us;22631us;22632us;22633us;22634us;22635us;22636us;22637us;22638us;22639us;22640us;22641us;22642us;22643us;22644us;22645us;22646us;22647us;22648us;22649us;22651us;22652us;22654us;22655us;22656us;22658us;22659us;22660us;22661us;22662us;22664us;22665us;22676us;22677us;22678us;22679us;22680us;22681us;22682us;22683us;22684us;22688us;22689us;22693us;22694us;22696us;22698us;22699us;22700us;22701us;22702us;22703us;22704us;22705us;22706us;22707us;22708us;22709us;22710us;22711us;22712us;22713us;22714us;22715us;22716us;22717us;22718us;22719us;22720us;22721us;22722us;22723us;22724us;22725us;22727us;22728us;22729us;22811us;22814us;22815us;22816us;22898us;22901us;22902us;22903us;22904us;22905us;22906us;22907us;22911us;22915us;22916us;22917us;22918us;22922us;22926us;22927us;22928us;22929us;22933us;22934us;22935us;22936us;22937us;22941us;22942us;22943us;22944us;22948us;22949us;22950us;22951us;22952us;22953us;22954us;22955us;22956us;22957us;22958us;22959us;22960us;22961us;|] -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;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;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;4us;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;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;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;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;65535us;16688us;16689us;65535us;65535us;16690us;16691us;65535us;16692us;16693us;16694us;16695us;16696us;16697us;65535us;65535us;65535us;65535us;16700us;16701us;16702us;65535us;65535us;16703us;65535us;65535us;65535us;65535us;16704us;16705us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16708us;16709us;65535us;65535us;65535us;65535us;16712us;16713us;65535us;65535us;65535us;65535us;65535us;16717us;16718us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16721us;65535us;65535us;65535us;65535us;16723us;65535us;16724us;16725us;65535us;65535us;16726us;65535us;65535us;65535us;65535us;65535us;65535us;16727us;65535us;16728us;16729us;65535us;65535us;65535us;65535us;65535us;16734us;65535us;65535us;16735us;65535us;16737us;65535us;65535us;16738us;65535us;65535us;65535us;16741us;65535us;16742us;16743us;65535us;16744us;16745us;16746us;65535us;16747us;65535us;65535us;16749us;65535us;65535us;16750us;65535us;65535us;16751us;65535us;16752us;65535us;65535us;65535us;16754us;65535us;16755us;16756us;65535us;16757us;65535us;65535us;16759us;65535us;65535us;65535us;65535us;16763us;16764us;16765us;16766us;65535us;65535us;16767us;16768us;65535us;16769us;65535us;65535us;65535us;65535us;16770us;16771us;16772us;65535us;16773us;65535us;65535us;65535us;65535us;16774us;16775us;65535us;65535us;16777us;16778us;65535us;65535us;65535us;65535us;16781us;16782us;65535us;16783us;65535us;65535us;65535us;16784us;65535us;65535us;16785us;16786us;16787us;16788us;16789us;16790us;16791us;16792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16793us;65535us;65535us;65535us;16797us;65535us;16798us;65535us;65535us;16800us;65535us;65535us;65535us;65535us;16802us;16803us;16804us;65535us;65535us;16805us;65535us;65535us;16808us;65535us;65535us;16809us;65535us;16811us;16812us;65535us;65535us;65535us;65535us;65535us;16813us;16814us;16815us;65535us;65535us;16816us;16817us;16818us;65535us;65535us;16820us;65535us;65535us;65535us;16822us;65535us;16823us;16824us;65535us;65535us;16825us;16826us;16827us;16828us;16829us;16830us;16831us;16832us;16833us;16834us;16835us;16836us;16837us;16838us;16839us;16840us;16841us;16842us;16843us;16844us;65535us;65535us;16845us;65535us;65535us;65535us;16846us;16849us;65535us;65535us;16850us;16851us;65535us;16852us;65535us;65535us;16854us;65535us;16856us;65535us;16857us;65535us;65535us;65535us;16858us;16859us;65535us;65535us;16862us;16863us;65535us;65535us;16865us;16866us;16867us;65535us;16868us;16869us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16870us;65535us;65535us;65535us;65535us;16875us;65535us;65535us;16878us;16879us;65535us;16881us;65535us;65535us;65535us;16884us;65535us;16885us;65535us;16886us;65535us;65535us;65535us;65535us;16888us;16889us;65535us;65535us;16891us;65535us;16892us;65535us;16893us;16894us;65535us;16895us;65535us;16896us;65535us;16897us;16898us;65535us;65535us;16899us;16900us;65535us;16901us;65535us;16902us;65535us;16903us;16905us;65535us;65535us;16906us;65535us;16907us;65535us;65535us;16908us;65535us;65535us;16909us;65535us;65535us;16911us;16912us;16913us;16914us;16915us;16916us;65535us;65535us;16917us;16918us;65535us;65535us;16920us;65535us;65535us;65535us;16921us;16922us;65535us;16923us;16924us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16927us;65535us;65535us;65535us;65535us;16931us;16932us;65535us;65535us;16935us;65535us;65535us;16938us;16939us;65535us;16941us;65535us;65535us;65535us;16944us;65535us;16945us;65535us;65535us;16947us;16948us;16950us;65535us;16951us;65535us;65535us;16952us;16953us;16954us;16955us;65535us;65535us;16956us;16957us;65535us;65535us;16959us;16961us;65535us;65535us;65535us;16962us;16963us;65535us;16965us;65535us;65535us;16966us;65535us;16969us;65535us;65535us;65535us;16970us;65535us;16972us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16973us;65535us;65535us;65535us;65535us;16974us;65535us;65535us;65535us;65535us;65535us;16975us;65535us;65535us;16977us;16978us;65535us;16979us;16980us;65535us;16981us;16982us;16983us;16984us;16985us;65535us;65535us;16986us;16987us;65535us;65535us;16988us;16989us;65535us;65535us;16990us;16991us;65535us;16993us;65535us;16994us;65535us;65535us;16995us;16996us;16997us;65535us;65535us;65535us;65535us;65535us;17001us;65535us;17002us;65535us;17004us;65535us;17005us;65535us;65535us;65535us;65535us;17006us;17007us;17008us;17009us;17010us;65535us;17011us;65535us;65535us;65535us;17012us;17013us;17014us;17015us;17016us;65535us;65535us;17017us;17018us;17019us;65535us;65535us;65535us;65535us;65535us;17023us;17024us;65535us;65535us;65535us;65535us;65535us;65535us;17025us;65535us;65535us;65535us;65535us;65535us;65535us;17026us;17027us;65535us;65535us;65535us;65535us;17028us;65535us;65535us;17029us;65535us;65535us;65535us;17031us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17032us;17033us;65535us;17034us;17035us;65535us;17036us;17037us;65535us;65535us;65535us;17039us;65535us;65535us;65535us;17042us;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;65535us;65535us;65535us;17084us;65535us;65535us;65535us;17086us;17087us;65535us;17088us;17089us;17090us;17091us;17092us;65535us;65535us;17093us;65535us;17094us;65535us;65535us;17095us;17096us;17097us;17098us;65535us;17099us;17100us;17101us;17102us;65535us;65535us;65535us;17104us;65535us;17105us;17106us;17107us;17108us;65535us;65535us;17111us;65535us;17112us;65535us;17114us;65535us;17115us;17116us;65535us;65535us;17119us;65535us;17120us;17121us;65535us;17123us;65535us;17125us;65535us;17126us;65535us;17128us;65535us;65535us;65535us;65535us;17130us;65535us;65535us;17131us;65535us;65535us;17132us;65535us;65535us;17133us;65535us;65535us;17134us;65535us;65535us;17135us;65535us;65535us;17136us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17137us;17139us;17140us;65535us;17141us;65535us;17142us;65535us;65535us;65535us;65535us;17144us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17149us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17152us;65535us;65535us;65535us;65535us;17154us;65535us;17155us;65535us;17156us;65535us;65535us;17157us;65535us;65535us;17158us;65535us;17159us;17160us;17161us;65535us;65535us;17162us;17163us;17164us;17165us;65535us;65535us;17166us;17167us;17168us;17169us;17170us;17172us;65535us;65535us;65535us;65535us;17173us;65535us;17174us;65535us;65535us;17175us;17176us;17177us;17178us;17179us;17180us;17181us;17182us;17183us;17184us;17185us;17186us;17187us;17188us;17189us;65535us;65535us;17190us;17191us;65535us;17192us;17193us;65535us;65535us;65535us;17194us;17195us;17196us;17197us;65535us;65535us;17198us;17199us;17200us;17201us;65535us;65535us;65535us;17202us;65535us;17203us;17204us;17205us;65535us;17206us;17207us;17208us;17209us;17210us;65535us;17211us;65535us;65535us;65535us;65535us;65535us;17212us;17213us;17214us;17215us;65535us;65535us;17216us;65535us;65535us;65535us;65535us;17219us;17220us;17221us;17222us;17223us;17224us;17225us;17226us;17227us;17229us;17231us;65535us;17232us;65535us;17234us;17235us;65535us;65535us;17237us;17238us;65535us;65535us;65535us;65535us;65535us;17239us;17240us;17243us;65535us;65535us;65535us;17245us;65535us;17247us;65535us;17248us;65535us;65535us;65535us;65535us;65535us;17249us;17250us;65535us;65535us;65535us;17251us;17252us;65535us;65535us;65535us;17256us;65535us;65535us;65535us;17257us;65535us;65535us;17258us;65535us;65535us;65535us;17259us;17260us;65535us;65535us;65535us;17264us;17265us;65535us;17267us;17268us;65535us;65535us;17270us;17272us;17274us;65535us;65535us;65535us;17275us;65535us;17276us;17278us;17281us;65535us;17283us;65535us;65535us;17284us;65535us;17285us;65535us;17286us;65535us;17288us;65535us;17289us;65535us;65535us;65535us;65535us;17290us;65535us;17291us;17292us;65535us;65535us;17293us;17294us;17295us;17296us;17297us;65535us;65535us;65535us;17298us;17299us;65535us;65535us;65535us;65535us;17300us;17301us;65535us;17302us;65535us;17304us;65535us;17305us;65535us;17306us;65535us;65535us;17307us;65535us;65535us;65535us;65535us;65535us;17313us;17314us;65535us;65535us;17315us;17316us;65535us;65535us;17318us;17319us;65535us;17320us;65535us;65535us;17322us;17323us;65535us;17324us;65535us;65535us;65535us;65535us;17327us;65535us;65535us;65535us;65535us;17329us;65535us;65535us;65535us;17332us;65535us;65535us;65535us;65535us;17334us;65535us;65535us;65535us;17336us;17337us;65535us;17338us;65535us;65535us;17340us;17341us;65535us;17342us;65535us;17344us;65535us;65535us;17345us;17346us;65535us;17347us;65535us;17348us;17349us;65535us;17350us;17351us;65535us;65535us;17353us;17354us;65535us;17355us;65535us;17356us;17357us;65535us;17358us;65535us;65535us;65535us;65535us;65535us;17363us;65535us;65535us;65535us;17364us;65535us;17366us;65535us;17367us;17368us;65535us;65535us;65535us;17369us;17370us;17371us;65535us;17372us;65535us;65535us;17373us;65535us;17374us;65535us;17375us;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;65535us;65535us;65535us;65535us;65535us;17407us;17408us;65535us;65535us;17411us;65535us;65535us;65535us;17412us;65535us;65535us;17415us;65535us;65535us;17417us;17418us;65535us;65535us;65535us;17419us;17420us;65535us;65535us;65535us;65535us;17421us;17422us;17423us;17424us;17425us;17426us;17427us;65535us;17429us;17430us;65535us;17431us;17432us;65535us;65535us;17434us;65535us;17435us;17436us;65535us;17437us;65535us;65535us;65535us;65535us;17438us;17439us;17440us;65535us;17441us;17442us;17443us;17444us;65535us;65535us;17446us;17448us;17449us;65535us;65535us;17451us;65535us;17452us;65535us;17454us;65535us;65535us;17455us;65535us;65535us;17457us;17458us;65535us;17460us;17461us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17465us;65535us;17466us;65535us;17467us;17468us;17469us;65535us;17470us;17471us;65535us;65535us;17472us;65535us;17473us;17474us;65535us;65535us;17475us;65535us;65535us;17476us;17477us;17478us;17479us;17480us;17481us;17482us;17483us;17484us;17485us;17486us;17487us;17488us;17489us;17490us;17491us;17492us;17493us;17494us;17495us;17496us;17497us;17498us;17499us;65535us;17501us;65535us;17502us;17503us;65535us;17504us;17505us;17506us;17507us;65535us;17509us;65535us;17510us;17511us;17512us;17513us;17514us;17515us;17516us;17517us;65535us;17519us;65535us;17520us;65535us;65535us;17524us;17525us;17526us;17527us;17528us;17529us;17530us;17531us;17533us;17535us;17539us;17541us;17543us;17547us;17549us;17551us;17552us;17553us;17554us;17555us;17556us;17557us;17558us;17559us;17560us;17561us;17562us;65535us;17564us;17565us;65535us;65535us;17566us;17567us;65535us;65535us;17568us;17569us;17570us;17571us;17572us;17574us;65535us;65535us;17576us;17577us;17578us;65535us;65535us;17579us;17580us;17581us;65535us;17582us;17583us;17584us;17585us;65535us;17586us;17587us;17588us;65535us;17589us;17590us;17591us;17592us;17593us;17594us;17595us;17596us;17597us;17598us;17599us;17600us;17601us;17602us;|] +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_reductions = lazy [| -//# 2855 "pars.fs" +//# 2858 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParsedSigFile in Microsoft.FSharp.Core.Operators.box @@ -2861,7 +2864,7 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__startsignatureFile)); -//# 2864 "pars.fs" +//# 2867 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParsedImplFile in Microsoft.FSharp.Core.Operators.box @@ -2870,7 +2873,7 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__startimplementationFile)); -//# 2873 "pars.fs" +//# 2876 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParsedScriptInteraction in Microsoft.FSharp.Core.Operators.box @@ -2879,7 +2882,7 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__startinteraction)); -//# 2882 "pars.fs" +//# 2885 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box @@ -2888,7 +2891,7 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__starttypedSequentialExprEOF)); -//# 2891 "pars.fs" +//# 2894 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynType in Microsoft.FSharp.Core.Operators.box @@ -2897,7 +2900,7 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__starttypEOF)); -//# 2900 "pars.fs" +//# 2903 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveItemsTerminator in Microsoft.FSharp.Core.Operators.box @@ -2908,7 +2911,7 @@ let _fsyacc_reductions = lazy [| ) //# 388 "src/Compiler/pars.fsy" : ParsedScriptInteraction)); -//# 2911 "pars.fs" +//# 2914 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( @@ -2919,7 +2922,7 @@ let _fsyacc_reductions = lazy [| ) //# 391 "src/Compiler/pars.fsy" : ParsedScriptInteraction)); -//# 2922 "pars.fs" +//# 2925 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( @@ -2929,7 +2932,7 @@ let _fsyacc_reductions = lazy [| ) //# 395 "src/Compiler/pars.fsy" : ParsedScriptInteraction)); -//# 2932 "pars.fs" +//# 2935 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( @@ -2939,7 +2942,7 @@ let _fsyacc_reductions = lazy [| ) //# 399 "src/Compiler/pars.fsy" : 'gentype_interactiveTerminator)); -//# 2942 "pars.fs" +//# 2945 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box @@ -2950,7 +2953,7 @@ let _fsyacc_reductions = lazy [| ) //# 400 "src/Compiler/pars.fsy" : 'gentype_interactiveTerminator)); -//# 2953 "pars.fs" +//# 2956 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveTerminator in Microsoft.FSharp.Core.Operators.box @@ -2961,7 +2964,7 @@ let _fsyacc_reductions = lazy [| ) //# 414 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 2964 "pars.fs" +//# 2967 "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 @@ -2973,7 +2976,7 @@ let _fsyacc_reductions = lazy [| ) //# 417 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 2976 "pars.fs" +//# 2979 "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 @@ -2985,7 +2988,7 @@ let _fsyacc_reductions = lazy [| ) //# 420 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 2988 "pars.fs" +//# 2991 "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 @@ -2997,7 +3000,7 @@ let _fsyacc_reductions = lazy [| ) //# 423 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 3000 "pars.fs" +//# 3003 "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 @@ -3010,7 +3013,7 @@ let _fsyacc_reductions = lazy [| ) //# 426 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 3013 "pars.fs" +//# 3016 "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 @@ -3023,7 +3026,7 @@ let _fsyacc_reductions = lazy [| ) //# 429 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 3026 "pars.fs" +//# 3029 "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 @@ -3036,7 +3039,7 @@ let _fsyacc_reductions = lazy [| ) //# 432 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 3039 "pars.fs" +//# 3042 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefn in Microsoft.FSharp.Core.Operators.box @@ -3047,7 +3050,7 @@ let _fsyacc_reductions = lazy [| ) //# 438 "src/Compiler/pars.fsy" : 'gentype_interactiveDefns)); -//# 3050 "pars.fs" +//# 3053 "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 @@ -3059,7 +3062,7 @@ let _fsyacc_reductions = lazy [| ) //# 441 "src/Compiler/pars.fsy" : 'gentype_interactiveDefns)); -//# 3062 "pars.fs" +//# 3065 "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 @@ -3076,7 +3079,7 @@ let _fsyacc_reductions = lazy [| ) //# 447 "src/Compiler/pars.fsy" : 'gentype_interactiveExpr)); -//# 3079 "pars.fs" +//# 3082 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hashDirective in Microsoft.FSharp.Core.Operators.box @@ -3087,7 +3090,7 @@ let _fsyacc_reductions = lazy [| ) //# 456 "src/Compiler/pars.fsy" : 'gentype_interactiveHash)); -//# 3090 "pars.fs" +//# 3093 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveSeparator in Microsoft.FSharp.Core.Operators.box @@ -3098,7 +3101,7 @@ let _fsyacc_reductions = lazy [| ) //# 460 "src/Compiler/pars.fsy" : 'gentype_interactiveSeparators)); -//# 3101 "pars.fs" +//# 3104 "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 @@ -3110,7 +3113,7 @@ let _fsyacc_reductions = lazy [| ) //# 462 "src/Compiler/pars.fsy" : 'gentype_interactiveSeparators)); -//# 3113 "pars.fs" +//# 3116 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( @@ -3120,7 +3123,7 @@ let _fsyacc_reductions = lazy [| ) //# 466 "src/Compiler/pars.fsy" : 'gentype_interactiveSeparator)); -//# 3123 "pars.fs" +//# 3126 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( @@ -3130,7 +3133,7 @@ let _fsyacc_reductions = lazy [| ) //# 467 "src/Compiler/pars.fsy" : 'gentype_interactiveSeparator)); -//# 3133 "pars.fs" +//# 3136 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> string in let _3 = parseState.GetInput(3) :?> 'gentype_hashDirectiveArgs in @@ -3143,7 +3146,7 @@ let _fsyacc_reductions = lazy [| ) //# 476 "src/Compiler/pars.fsy" : 'gentype_hashDirective)); -//# 3146 "pars.fs" +//# 3149 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( @@ -3153,7 +3156,7 @@ let _fsyacc_reductions = lazy [| ) //# 483 "src/Compiler/pars.fsy" : 'gentype_hashDirectiveArgs)); -//# 3156 "pars.fs" +//# 3159 "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 @@ -3165,7 +3168,7 @@ let _fsyacc_reductions = lazy [| ) //# 486 "src/Compiler/pars.fsy" : 'gentype_hashDirectiveArgs)); -//# 3168 "pars.fs" +//# 3171 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_string in Microsoft.FSharp.Core.Operators.box @@ -3177,7 +3180,7 @@ let _fsyacc_reductions = lazy [| ) //# 492 "src/Compiler/pars.fsy" : 'gentype_hashDirectiveArg)); -//# 3180 "pars.fs" +//# 3183 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sourceIdentifier in Microsoft.FSharp.Core.Operators.box @@ -3189,7 +3192,7 @@ let _fsyacc_reductions = lazy [| ) //# 495 "src/Compiler/pars.fsy" : 'gentype_hashDirectiveArg)); -//# 3192 "pars.fs" +//# 3195 "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 @@ -3201,7 +3204,7 @@ let _fsyacc_reductions = lazy [| ) //# 505 "src/Compiler/pars.fsy" : ParsedSigFile)); -//# 3204 "pars.fs" +//# 3207 "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 @@ -3213,7 +3216,7 @@ let _fsyacc_reductions = lazy [| ) //# 508 "src/Compiler/pars.fsy" : ParsedSigFile)); -//# 3216 "pars.fs" +//# 3219 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box @@ -3225,7 +3228,7 @@ let _fsyacc_reductions = lazy [| ) //# 514 "src/Compiler/pars.fsy" : ParsedSigFile)); -//# 3228 "pars.fs" +//# 3231 "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 @@ -3243,7 +3246,7 @@ let _fsyacc_reductions = lazy [| ) //# 521 "src/Compiler/pars.fsy" : 'gentype_moduleIntro)); -//# 3246 "pars.fs" +//# 3249 "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 @@ -3260,7 +3263,7 @@ let _fsyacc_reductions = lazy [| ) //# 527 "src/Compiler/pars.fsy" : 'gentype_moduleIntro)); -//# 3263 "pars.fs" +//# 3266 "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 @@ -3278,7 +3281,7 @@ let _fsyacc_reductions = lazy [| ) //# 533 "src/Compiler/pars.fsy" : 'gentype_moduleIntro)); -//# 3281 "pars.fs" +//# 3284 "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 @@ -3291,7 +3294,7 @@ let _fsyacc_reductions = lazy [| ) //# 541 "src/Compiler/pars.fsy" : 'gentype_namespaceIntro)); -//# 3294 "pars.fs" +//# 3297 "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 @@ -3304,7 +3307,7 @@ let _fsyacc_reductions = lazy [| ) //# 545 "src/Compiler/pars.fsy" : 'gentype_namespaceIntro)); -//# 3307 "pars.fs" +//# 3310 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileModuleSpec in Microsoft.FSharp.Core.Operators.box @@ -3315,7 +3318,7 @@ let _fsyacc_reductions = lazy [| ) //# 552 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceSpecs)); -//# 3318 "pars.fs" +//# 3321 "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 @@ -3340,7 +3343,7 @@ let _fsyacc_reductions = lazy [| ) //# 555 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceSpecs)); -//# 3343 "pars.fs" +//# 3346 "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 @@ -3352,7 +3355,7 @@ let _fsyacc_reductions = lazy [| ) //# 573 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceSpecList)); -//# 3355 "pars.fs" +//# 3358 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceSpec in Microsoft.FSharp.Core.Operators.box @@ -3363,7 +3366,7 @@ let _fsyacc_reductions = lazy [| ) //# 576 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceSpecList)); -//# 3366 "pars.fs" +//# 3369 "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 @@ -3377,7 +3380,7 @@ let _fsyacc_reductions = lazy [| ) //# 580 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceSpec)); -//# 3380 "pars.fs" +//# 3383 "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 @@ -3401,7 +3404,7 @@ let _fsyacc_reductions = lazy [| ) //# 587 "src/Compiler/pars.fsy" : 'gentype_fileModuleSpec)); -//# 3404 "pars.fs" +//# 3407 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfnsPossiblyEmptyBlock in Microsoft.FSharp.Core.Operators.box @@ -3424,7 +3427,7 @@ let _fsyacc_reductions = lazy [| ) //# 600 "src/Compiler/pars.fsy" : 'gentype_fileModuleSpec)); -//# 3427 "pars.fs" +//# 3430 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfnsPossiblyEmpty in Microsoft.FSharp.Core.Operators.box @@ -3435,7 +3438,7 @@ let _fsyacc_reductions = lazy [| ) //# 617 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmptyBlock)); -//# 3438 "pars.fs" +//# 3441 "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 @@ -3448,7 +3451,7 @@ let _fsyacc_reductions = lazy [| ) //# 620 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmptyBlock)); -//# 3451 "pars.fs" +//# 3454 "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 @@ -3463,7 +3466,7 @@ let _fsyacc_reductions = lazy [| ) //# 623 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmptyBlock)); -//# 3466 "pars.fs" +//# 3469 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box @@ -3474,7 +3477,7 @@ let _fsyacc_reductions = lazy [| ) //# 629 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmptyBlock)); -//# 3477 "pars.fs" +//# 3480 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfns in Microsoft.FSharp.Core.Operators.box @@ -3485,7 +3488,7 @@ let _fsyacc_reductions = lazy [| ) //# 634 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmpty)); -//# 3488 "pars.fs" +//# 3491 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( @@ -3495,7 +3498,7 @@ let _fsyacc_reductions = lazy [| ) //# 637 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmpty)); -//# 3498 "pars.fs" +//# 3501 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( @@ -3505,7 +3508,7 @@ let _fsyacc_reductions = lazy [| ) //# 640 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmpty)); -//# 3508 "pars.fs" +//# 3511 "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 @@ -3518,7 +3521,7 @@ let _fsyacc_reductions = lazy [| ) //# 645 "src/Compiler/pars.fsy" : 'gentype_moduleSpfns)); -//# 3521 "pars.fs" +//# 3524 "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 @@ -3530,7 +3533,7 @@ let _fsyacc_reductions = lazy [| ) //# 648 "src/Compiler/pars.fsy" : 'gentype_moduleSpfns)); -//# 3533 "pars.fs" +//# 3536 "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 @@ -3542,7 +3545,7 @@ let _fsyacc_reductions = lazy [| ) //# 651 "src/Compiler/pars.fsy" : 'gentype_moduleSpfns)); -//# 3545 "pars.fs" +//# 3548 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hashDirective in Microsoft.FSharp.Core.Operators.box @@ -3553,7 +3556,7 @@ let _fsyacc_reductions = lazy [| ) //# 656 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3556 "pars.fs" +//# 3559 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_valSpfn in Microsoft.FSharp.Core.Operators.box @@ -3564,7 +3567,7 @@ let _fsyacc_reductions = lazy [| ) //# 659 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3567 "pars.fs" +//# 3570 "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 @@ -3590,7 +3593,7 @@ let _fsyacc_reductions = lazy [| ) //# 662 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3593 "pars.fs" +//# 3596 "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 @@ -3617,7 +3620,7 @@ let _fsyacc_reductions = lazy [| ) //# 676 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3620 "pars.fs" +//# 3623 "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 @@ -3638,7 +3641,7 @@ let _fsyacc_reductions = lazy [| ) //# 691 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3641 "pars.fs" +//# 3644 "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 @@ -3665,7 +3668,7 @@ let _fsyacc_reductions = lazy [| ) //# 702 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3668 "pars.fs" +//# 3671 "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 @@ -3684,7 +3687,7 @@ let _fsyacc_reductions = lazy [| ) //# 717 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3687 "pars.fs" +//# 3690 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_openDecl in Microsoft.FSharp.Core.Operators.box @@ -3695,7 +3698,7 @@ let _fsyacc_reductions = lazy [| ) //# 726 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3698 "pars.fs" +//# 3701 "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 @@ -3712,7 +3715,7 @@ let _fsyacc_reductions = lazy [| ( //# 730 "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), (_6), (_7), (_8), grabXmlDoc(parseState, _1, 1), (_9), (_11), (_12) + 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) if not (isNil attr2) then errorR(Deprecated(FSComp.SR.parsAttributesMustComeBeforeVal(), rhs parseState 4)) let m = rhs2 parseState 1 11 @@ -3729,7 +3732,7 @@ let _fsyacc_reductions = lazy [| ) //# 730 "src/Compiler/pars.fsy" : 'gentype_valSpfn)); -//# 3732 "pars.fs" +//# 3735 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( @@ -3739,7 +3742,7 @@ let _fsyacc_reductions = lazy [| ) //# 749 "src/Compiler/pars.fsy" : 'gentype_optLiteralValueSpfn)); -//# 3742 "pars.fs" +//# 3745 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box @@ -3751,7 +3754,7 @@ let _fsyacc_reductions = lazy [| ) //# 752 "src/Compiler/pars.fsy" : 'gentype_optLiteralValueSpfn)); -//# 3754 "pars.fs" +//# 3757 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> SynExpr in let _4 = parseState.GetInput(4) :?> 'gentype_oblockend in @@ -3765,7 +3768,7 @@ let _fsyacc_reductions = lazy [| ) //# 756 "src/Compiler/pars.fsy" : 'gentype_optLiteralValueSpfn)); -//# 3768 "pars.fs" +//# 3771 "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 @@ -3777,7 +3780,7 @@ let _fsyacc_reductions = lazy [| ) //# 765 "src/Compiler/pars.fsy" : 'gentype_moduleSpecBlock)); -//# 3780 "pars.fs" +//# 3783 "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 @@ -3791,7 +3794,7 @@ let _fsyacc_reductions = lazy [| ) //# 769 "src/Compiler/pars.fsy" : 'gentype_moduleSpecBlock)); -//# 3794 "pars.fs" +//# 3797 "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 @@ -3804,7 +3807,7 @@ let _fsyacc_reductions = lazy [| ) //# 774 "src/Compiler/pars.fsy" : 'gentype_moduleSpecBlock)); -//# 3807 "pars.fs" +//# 3810 "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 @@ -3830,7 +3833,7 @@ let _fsyacc_reductions = lazy [| ) //# 780 "src/Compiler/pars.fsy" : SynTypeDefnSig list)); -//# 3833 "pars.fs" +//# 3836 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( @@ -3840,7 +3843,7 @@ let _fsyacc_reductions = lazy [| ) //# 798 "src/Compiler/pars.fsy" : SynTypeDefnSig list)); -//# 3843 "pars.fs" +//# 3846 "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 @@ -3854,7 +3857,7 @@ let _fsyacc_reductions = lazy [| ) //# 804 "src/Compiler/pars.fsy" : 'gentype_tyconSpfn)); -//# 3857 "pars.fs" +//# 3860 "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 @@ -3878,7 +3881,7 @@ let _fsyacc_reductions = lazy [| ) //# 808 "src/Compiler/pars.fsy" : 'gentype_tyconSpfn)); -//# 3881 "pars.fs" +//# 3884 "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 @@ -3897,7 +3900,7 @@ let _fsyacc_reductions = lazy [| ) //# 834 "src/Compiler/pars.fsy" : 'gentype_tyconSpfnRhsBlock)); -//# 3900 "pars.fs" +//# 3903 "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 @@ -3912,7 +3915,7 @@ let _fsyacc_reductions = lazy [| ) //# 840 "src/Compiler/pars.fsy" : 'gentype_tyconSpfnRhsBlock)); -//# 3915 "pars.fs" +//# 3918 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypeDefnSimpleRepr in Microsoft.FSharp.Core.Operators.box @@ -3927,7 +3930,7 @@ let _fsyacc_reductions = lazy [| ) //# 849 "src/Compiler/pars.fsy" : 'gentype_tyconSpfnRhs)); -//# 3930 "pars.fs" +//# 3933 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tyconClassSpfn in Microsoft.FSharp.Core.Operators.box @@ -3951,7 +3954,7 @@ let _fsyacc_reductions = lazy [| ) //# 856 "src/Compiler/pars.fsy" : 'gentype_tyconSpfnRhs)); -//# 3954 "pars.fs" +//# 3957 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_topType in Microsoft.FSharp.Core.Operators.box @@ -3971,7 +3974,7 @@ let _fsyacc_reductions = lazy [| ) //# 874 "src/Compiler/pars.fsy" : 'gentype_tyconSpfnRhs)); -//# 3974 "pars.fs" +//# 3977 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classSpfnBlockKindUnspecified in Microsoft.FSharp.Core.Operators.box @@ -3983,7 +3986,7 @@ let _fsyacc_reductions = lazy [| ) //# 889 "src/Compiler/pars.fsy" : 'gentype_tyconClassSpfn)); -//# 3986 "pars.fs" +//# 3989 "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 @@ -3995,7 +3998,7 @@ let _fsyacc_reductions = lazy [| ) //# 893 "src/Compiler/pars.fsy" : 'gentype_tyconClassSpfn)); -//# 3998 "pars.fs" +//# 4001 "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 @@ -4009,7 +4012,7 @@ let _fsyacc_reductions = lazy [| ) //# 896 "src/Compiler/pars.fsy" : 'gentype_tyconClassSpfn)); -//# 4012 "pars.fs" +//# 4015 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in Microsoft.FSharp.Core.Operators.box @@ -4021,7 +4024,7 @@ let _fsyacc_reductions = lazy [| ) //# 900 "src/Compiler/pars.fsy" : 'gentype_tyconClassSpfn)); -//# 4024 "pars.fs" +//# 4027 "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 @@ -4033,7 +4036,7 @@ let _fsyacc_reductions = lazy [| ) //# 907 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlockKindUnspecified)); -//# 4036 "pars.fs" +//# 4039 "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 @@ -4046,7 +4049,7 @@ let _fsyacc_reductions = lazy [| ) //# 910 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlockKindUnspecified)); -//# 4049 "pars.fs" +//# 4052 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnBlock in Microsoft.FSharp.Core.Operators.box @@ -4057,7 +4060,7 @@ let _fsyacc_reductions = lazy [| ) //# 915 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlockKindUnspecified)); -//# 4060 "pars.fs" +//# 4063 "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 @@ -4069,7 +4072,7 @@ let _fsyacc_reductions = lazy [| ) //# 918 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlockKindUnspecified)); -//# 4072 "pars.fs" +//# 4075 "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 @@ -4081,7 +4084,7 @@ let _fsyacc_reductions = lazy [| ) //# 924 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlock)); -//# 4084 "pars.fs" +//# 4087 "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 @@ -4094,7 +4097,7 @@ let _fsyacc_reductions = lazy [| ) //# 927 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlock)); -//# 4097 "pars.fs" +//# 4100 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classSpfnMembers in Microsoft.FSharp.Core.Operators.box @@ -4105,7 +4108,7 @@ let _fsyacc_reductions = lazy [| ) //# 930 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlock)); -//# 4108 "pars.fs" +//# 4111 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classSpfnMembersAtLeastOne in Microsoft.FSharp.Core.Operators.box @@ -4116,7 +4119,7 @@ let _fsyacc_reductions = lazy [| ) //# 935 "src/Compiler/pars.fsy" : 'gentype_classSpfnMembers)); -//# 4119 "pars.fs" +//# 4122 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( @@ -4126,7 +4129,7 @@ let _fsyacc_reductions = lazy [| ) //# 938 "src/Compiler/pars.fsy" : 'gentype_classSpfnMembers)); -//# 4129 "pars.fs" +//# 4132 "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 @@ -4139,7 +4142,7 @@ let _fsyacc_reductions = lazy [| ) //# 944 "src/Compiler/pars.fsy" : 'gentype_classSpfnMembersAtLeastOne)); -//# 4142 "pars.fs" +//# 4145 "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 @@ -4179,7 +4182,7 @@ let _fsyacc_reductions = lazy [| ) //# 950 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4182 "pars.fs" +//# 4185 "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 @@ -4194,7 +4197,7 @@ let _fsyacc_reductions = lazy [| ) //# 974 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4197 "pars.fs" +//# 4200 "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 @@ -4208,7 +4211,7 @@ let _fsyacc_reductions = lazy [| ) //# 978 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4211 "pars.fs" +//# 4214 "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 @@ -4224,7 +4227,7 @@ let _fsyacc_reductions = lazy [| ) //# 982 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4227 "pars.fs" +//# 4230 "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 @@ -4233,16 +4236,17 @@ let _fsyacc_reductions = lazy [| ( ( //# 988 "src/Compiler/pars.fsy" - let mWhole = rhs2 parseState 1 4 - if Option.isSome _2 then errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) + if Option.isSome _2 then + errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) + let mStart = rhs parseState 1 let mVal = rhs parseState 3 - let (SynField(xmlDoc = xmlDoc)) as field = _4 _1 false mWhole (Some(SynLeadingKeyword.Val mVal)) - let mWhole = unionRangeWithXmlDoc xmlDoc mWhole - SynMemberSig.ValField(field, mWhole) + let leadingKeyword = Some(SynLeadingKeyword.Val mVal) + let (SynField(xmlDoc = xmlDoc; range = range)) as field = _4 _1 None mStart leadingKeyword + SynMemberSig.ValField(field, range) ) //# 988 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4245 "pars.fs" +//# 4249 "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 @@ -4250,18 +4254,19 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 996 "src/Compiler/pars.fsy" - let mWhole = rhs2 parseState 1 5 - if Option.isSome _2 then errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) +//# 997 "src/Compiler/pars.fsy" + if Option.isSome _2 then + errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) + let mStart = rhs parseState 1 let mStatic = rhs parseState 3 let mVal = rhs parseState 4 - let (SynField(xmlDoc = xmlDoc)) as field = _5 _1 true mWhole (Some(SynLeadingKeyword.StaticVal(mStatic, mVal))) - let mWhole = unionRangeWithXmlDoc xmlDoc mWhole - SynMemberSig.ValField(field, mWhole) + let leadingKeyword = Some(SynLeadingKeyword.StaticVal(mStatic, mVal)) + let (SynField(xmlDoc = xmlDoc; range = range)) as field = _5 _1 (Some mStatic) mStart leadingKeyword + SynMemberSig.ValField(field, range) ) -//# 996 "src/Compiler/pars.fsy" +//# 997 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4264 "pars.fs" +//# 4269 "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 @@ -4270,14 +4275,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1005 "src/Compiler/pars.fsy" +//# 1007 "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) ) -//# 1005 "src/Compiler/pars.fsy" +//# 1007 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4280 "pars.fs" +//# 4285 "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 @@ -4285,7 +4290,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1010 "src/Compiler/pars.fsy" +//# 1012 "src/Compiler/pars.fsy" let vis, doc, (ty, valSynInfo) = _2, grabXmlDoc(parseState, _1, 1), _5 let mNew = rhs parseState 3 let m = unionRanges (rhs parseState 1) ty.Range |> unionRangeWithXmlDoc doc @@ -4294,62 +4299,62 @@ let _fsyacc_reductions = lazy [| let valSpfn = SynValSig (_1, (SynIdent(mkSynId (rhs parseState 3) "new", None)), noInferredTypars, ty, valSynInfo, isInline, false, doc, vis, None, m, trivia) SynMemberSig.Member(valSpfn, CtorMemberFlags, m, SynMemberSigMemberTrivia.Zero) ) -//# 1010 "src/Compiler/pars.fsy" +//# 1012 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4299 "pars.fs" +//# 4304 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1022 "src/Compiler/pars.fsy" +//# 1024 "src/Compiler/pars.fsy" None, (SynMemberKind.Member, None) ) -//# 1022 "src/Compiler/pars.fsy" +//# 1024 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSet)); -//# 4309 "pars.fs" +//# 4314 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classMemberSpfnGetSetElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 1025 "src/Compiler/pars.fsy" +//# 1027 "src/Compiler/pars.fsy" let mWith = rhs parseState 1 Some mWith, _2 ) -//# 1025 "src/Compiler/pars.fsy" +//# 1027 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSet)); -//# 4321 "pars.fs" +//# 4326 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classMemberSpfnGetSetElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 1029 "src/Compiler/pars.fsy" +//# 1031 "src/Compiler/pars.fsy" let mWith = rhs parseState 1 Some mWith, _2 ) -//# 1029 "src/Compiler/pars.fsy" +//# 1031 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSet)); -//# 4333 "pars.fs" +//# 4338 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classMemberSpfnGetSetElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 1033 "src/Compiler/pars.fsy" +//# 1035 "src/Compiler/pars.fsy" let mWith = rhs parseState 1 reportParseErrorAt mWith (FSComp.SR.parsUnmatchedWith()) Some mWith, _2 ) -//# 1033 "src/Compiler/pars.fsy" +//# 1035 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSet)); -//# 4346 "pars.fs" +//# 4351 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_nameop in Microsoft.FSharp.Core.Operators.box ( ( -//# 1041 "src/Compiler/pars.fsy" +//# 1043 "src/Compiler/pars.fsy" (let (SynIdent(id:Ident, _)) = _1 if id.idText = "get" then SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange) @@ -4358,16 +4363,16 @@ let _fsyacc_reductions = lazy [| else raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired())) ) -//# 1041 "src/Compiler/pars.fsy" +//# 1043 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSetElements)); -//# 4363 "pars.fs" +//# 4368 "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 Microsoft.FSharp.Core.Operators.box ( ( -//# 1050 "src/Compiler/pars.fsy" +//# 1052 "src/Compiler/pars.fsy" let (SynIdent(id, _)) = _1 let (SynIdent(id2, _)) = _3 if not ((id.idText = "get" && id2.idText = "set") || @@ -4378,16 +4383,16 @@ let _fsyacc_reductions = lazy [| else SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, id.idRange)) ) -//# 1050 "src/Compiler/pars.fsy" +//# 1052 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSetElements)); -//# 4383 "pars.fs" +//# 4388 "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 Microsoft.FSharp.Core.Operators.box ( ( -//# 1062 "src/Compiler/pars.fsy" +//# 1064 "src/Compiler/pars.fsy" (let (SynIdent(id:Ident, _)) = _1 if id.idText = "get" then SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange) @@ -4396,134 +4401,134 @@ let _fsyacc_reductions = lazy [| else raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired())) ) -//# 1062 "src/Compiler/pars.fsy" +//# 1064 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSetElements)); -//# 4401 "pars.fs" +//# 4406 "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 ( ( -//# 1071 "src/Compiler/pars.fsy" +//# 1073 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIdentifierExpected()) SynMemberKind.Member, None ) -//# 1071 "src/Compiler/pars.fsy" +//# 1073 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSetElements)); -//# 4414 "pars.fs" +//# 4419 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_memberFlags in Microsoft.FSharp.Core.Operators.box ( ( -//# 1075 "src/Compiler/pars.fsy" +//# 1077 "src/Compiler/pars.fsy" _1 ) -//# 1075 "src/Compiler/pars.fsy" +//# 1077 "src/Compiler/pars.fsy" : 'gentype_memberSpecFlags)); -//# 4425 "pars.fs" +//# 4430 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_abstractMemberFlags in Microsoft.FSharp.Core.Operators.box ( ( -//# 1076 "src/Compiler/pars.fsy" +//# 1078 "src/Compiler/pars.fsy" _1 ) -//# 1076 "src/Compiler/pars.fsy" +//# 1078 "src/Compiler/pars.fsy" : 'gentype_memberSpecFlags)); -//# 4436 "pars.fs" +//# 4441 "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 ( ( -//# 1082 "src/Compiler/pars.fsy" +//# 1084 "src/Compiler/pars.fsy" let mWithKwd, members = _2 SynExceptionSig(_1, mWithKwd, members, lhs parseState) ) -//# 1082 "src/Compiler/pars.fsy" +//# 1084 "src/Compiler/pars.fsy" : 'gentype_exconSpfn)); -//# 4449 "pars.fs" +//# 4454 "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 ( ( -//# 1089 "src/Compiler/pars.fsy" +//# 1091 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 (Some mWithKwd), _2 ) -//# 1089 "src/Compiler/pars.fsy" +//# 1091 "src/Compiler/pars.fsy" : 'gentype_opt_classSpfn)); -//# 4462 "pars.fs" +//# 4467 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1093 "src/Compiler/pars.fsy" +//# 1095 "src/Compiler/pars.fsy" None, [] ) -//# 1093 "src/Compiler/pars.fsy" +//# 1095 "src/Compiler/pars.fsy" : 'gentype_opt_classSpfn)); -//# 4472 "pars.fs" +//# 4477 "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 ( ( -//# 1102 "src/Compiler/pars.fsy" +//# 1104 "src/Compiler/pars.fsy" checkEndOfFileError _2; _1 ) -//# 1102 "src/Compiler/pars.fsy" +//# 1104 "src/Compiler/pars.fsy" : ParsedImplFile)); -//# 4484 "pars.fs" +//# 4489 "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 ( ( -//# 1105 "src/Compiler/pars.fsy" +//# 1107 "src/Compiler/pars.fsy" _1 ) -//# 1105 "src/Compiler/pars.fsy" +//# 1107 "src/Compiler/pars.fsy" : ParsedImplFile)); -//# 4496 "pars.fs" +//# 4501 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 1111 "src/Compiler/pars.fsy" +//# 1113 "src/Compiler/pars.fsy" let emptyImplFileFrag = ParsedImplFileFragment.AnonModule([], rhs parseState 1) ParsedImplFile ([], [emptyImplFileFrag]) ) -//# 1111 "src/Compiler/pars.fsy" +//# 1113 "src/Compiler/pars.fsy" : ParsedImplFile)); -//# 4508 "pars.fs" +//# 4513 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileModuleImpl in Microsoft.FSharp.Core.Operators.box ( ( -//# 1118 "src/Compiler/pars.fsy" +//# 1120 "src/Compiler/pars.fsy" ParsedImplFile ([], [ (_1 (None, false, [], PreXmlDoc.Empty)) ]) ) -//# 1118 "src/Compiler/pars.fsy" +//# 1120 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceImpls)); -//# 4519 "pars.fs" +//# 4524 "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 ( ( -//# 1121 "src/Compiler/pars.fsy" +//# 1123 "src/Compiler/pars.fsy" // If there are namespaces, the first fileModuleImpl may only contain # directives let decls = match (_1 (None, false, [], PreXmlDoc.Empty)) with @@ -4539,32 +4544,32 @@ let _fsyacc_reductions = lazy [| []) ParsedImplFile (decls, _2) ) -//# 1121 "src/Compiler/pars.fsy" +//# 1123 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceImpls)); -//# 4544 "pars.fs" +//# 4549 "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 ( ( -//# 1140 "src/Compiler/pars.fsy" +//# 1142 "src/Compiler/pars.fsy" _1 :: _2 ) -//# 1140 "src/Compiler/pars.fsy" +//# 1142 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceImplList)); -//# 4556 "pars.fs" +//# 4561 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceImpl in Microsoft.FSharp.Core.Operators.box ( ( -//# 1143 "src/Compiler/pars.fsy" +//# 1145 "src/Compiler/pars.fsy" [_1] ) -//# 1143 "src/Compiler/pars.fsy" +//# 1145 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceImplList)); -//# 4567 "pars.fs" +//# 4572 "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 @@ -4572,13 +4577,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1149 "src/Compiler/pars.fsy" +//# 1151 "src/Compiler/pars.fsy" let mNamespace, isRec, path, xml = _1 _3 (Some mNamespace, isRec, path, xml) ) -//# 1149 "src/Compiler/pars.fsy" +//# 1151 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceImpl)); -//# 4581 "pars.fs" +//# 4586 "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 @@ -4587,7 +4592,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1156 "src/Compiler/pars.fsy" +//# 1158 "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) @@ -4600,15 +4605,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))) ) -//# 1156 "src/Compiler/pars.fsy" +//# 1158 "src/Compiler/pars.fsy" : 'gentype_fileModuleImpl)); -//# 4605 "pars.fs" +//# 4610 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynModuleDecl list in Microsoft.FSharp.Core.Operators.box ( ( -//# 1169 "src/Compiler/pars.fsy" +//# 1171 "src/Compiler/pars.fsy" let m = (rhs parseState 1) (fun (mNamespaceOpt, isRec, path, xml) -> match path, mNamespaceOpt with @@ -4623,9 +4628,9 @@ let _fsyacc_reductions = lazy [| | Some mNamespace -> { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Namespace mNamespace } ParsedImplFileFragment.NamespaceFragment(path, isRec, SynModuleOrNamespaceKind.DeclaredNamespace, _1, PreXmlDoc.Empty, [], m, trivia)) ) -//# 1169 "src/Compiler/pars.fsy" +//# 1171 "src/Compiler/pars.fsy" : 'gentype_fileModuleImpl)); -//# 4628 "pars.fs" +//# 4633 "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 @@ -4633,69 +4638,69 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1187 "src/Compiler/pars.fsy" +//# 1189 "src/Compiler/pars.fsy" _2 ) -//# 1187 "src/Compiler/pars.fsy" +//# 1189 "src/Compiler/pars.fsy" : SynModuleDecl list)); -//# 4641 "pars.fs" +//# 4646 "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 ( ( -//# 1190 "src/Compiler/pars.fsy" +//# 1192 "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 ) -//# 1190 "src/Compiler/pars.fsy" +//# 1192 "src/Compiler/pars.fsy" : SynModuleDecl list)); -//# 4655 "pars.fs" +//# 4660 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 1195 "src/Compiler/pars.fsy" +//# 1197 "src/Compiler/pars.fsy" [] ) -//# 1195 "src/Compiler/pars.fsy" +//# 1197 "src/Compiler/pars.fsy" : SynModuleDecl list)); -//# 4666 "pars.fs" +//# 4671 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnsOrExprPossiblyEmpty in Microsoft.FSharp.Core.Operators.box ( ( -//# 1198 "src/Compiler/pars.fsy" +//# 1200 "src/Compiler/pars.fsy" _1 ) -//# 1198 "src/Compiler/pars.fsy" +//# 1200 "src/Compiler/pars.fsy" : SynModuleDecl list)); -//# 4677 "pars.fs" +//# 4682 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnsOrExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 1204 "src/Compiler/pars.fsy" +//# 1206 "src/Compiler/pars.fsy" _1 ) -//# 1204 "src/Compiler/pars.fsy" +//# 1206 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExprPossiblyEmpty)); -//# 4688 "pars.fs" +//# 4693 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1207 "src/Compiler/pars.fsy" +//# 1209 "src/Compiler/pars.fsy" [] ) -//# 1207 "src/Compiler/pars.fsy" +//# 1209 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExprPossiblyEmpty)); -//# 4698 "pars.fs" +//# 4703 "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 @@ -4705,16 +4710,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1214 "src/Compiler/pars.fsy" +//# 1216 "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 ) -//# 1214 "src/Compiler/pars.fsy" +//# 1216 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExpr)); -//# 4717 "pars.fs" +//# 4722 "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 @@ -4723,16 +4728,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1221 "src/Compiler/pars.fsy" +//# 1223 "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 ] ) -//# 1221 "src/Compiler/pars.fsy" +//# 1223 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExpr)); -//# 4735 "pars.fs" +//# 4740 "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 @@ -4740,50 +4745,50 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1228 "src/Compiler/pars.fsy" +//# 1230 "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 ] ) -//# 1228 "src/Compiler/pars.fsy" +//# 1230 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExpr)); -//# 4752 "pars.fs" +//# 4757 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefns in Microsoft.FSharp.Core.Operators.box ( ( -//# 1235 "src/Compiler/pars.fsy" +//# 1237 "src/Compiler/pars.fsy" _1 ) -//# 1235 "src/Compiler/pars.fsy" +//# 1237 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExpr)); -//# 4763 "pars.fs" +//# 4768 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in Microsoft.FSharp.Core.Operators.box ( ( -//# 1238 "src/Compiler/pars.fsy" +//# 1240 "src/Compiler/pars.fsy" if not (isNil _1) then [ SynModuleDecl.Attributes(_1, rangeOfNonNilAttrs _1) ] else [] ) -//# 1238 "src/Compiler/pars.fsy" +//# 1240 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExpr)); -//# 4774 "pars.fs" +//# 4779 "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 ( ( -//# 1244 "src/Compiler/pars.fsy" +//# 1246 "src/Compiler/pars.fsy" _1 @ _2 ) -//# 1244 "src/Compiler/pars.fsy" +//# 1246 "src/Compiler/pars.fsy" : 'gentype_moduleDefns)); -//# 4786 "pars.fs" +//# 4791 "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 @@ -4791,69 +4796,69 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1247 "src/Compiler/pars.fsy" +//# 1249 "src/Compiler/pars.fsy" _1 @ _3 ) -//# 1247 "src/Compiler/pars.fsy" +//# 1249 "src/Compiler/pars.fsy" : 'gentype_moduleDefns)); -//# 4799 "pars.fs" +//# 4804 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnOrDirective in Microsoft.FSharp.Core.Operators.box ( ( -//# 1250 "src/Compiler/pars.fsy" +//# 1252 "src/Compiler/pars.fsy" _1 ) -//# 1250 "src/Compiler/pars.fsy" +//# 1252 "src/Compiler/pars.fsy" : 'gentype_moduleDefns)); -//# 4810 "pars.fs" +//# 4815 "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 ( ( -//# 1253 "src/Compiler/pars.fsy" +//# 1255 "src/Compiler/pars.fsy" _1 ) -//# 1253 "src/Compiler/pars.fsy" +//# 1255 "src/Compiler/pars.fsy" : 'gentype_moduleDefns)); -//# 4822 "pars.fs" +//# 4827 "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 ( ( -//# 1256 "src/Compiler/pars.fsy" +//# 1258 "src/Compiler/pars.fsy" _3 ) -//# 1256 "src/Compiler/pars.fsy" +//# 1258 "src/Compiler/pars.fsy" : 'gentype_moduleDefns)); -//# 4834 "pars.fs" +//# 4839 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefn in Microsoft.FSharp.Core.Operators.box ( ( -//# 1262 "src/Compiler/pars.fsy" +//# 1264 "src/Compiler/pars.fsy" _1 ) -//# 1262 "src/Compiler/pars.fsy" +//# 1264 "src/Compiler/pars.fsy" : 'gentype_moduleDefnOrDirective)); -//# 4845 "pars.fs" +//# 4850 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hashDirective in Microsoft.FSharp.Core.Operators.box ( ( -//# 1265 "src/Compiler/pars.fsy" +//# 1267 "src/Compiler/pars.fsy" [ SynModuleDecl.HashDirective(_1, rhs2 parseState 1 1) ] ) -//# 1265 "src/Compiler/pars.fsy" +//# 1267 "src/Compiler/pars.fsy" : 'gentype_moduleDefnOrDirective)); -//# 4856 "pars.fs" +//# 4861 "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 @@ -4861,15 +4866,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1274 "src/Compiler/pars.fsy" +//# 1276 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) parseState.ResetSynArgNameGenerator() let (BindingSetPreAttrs(_, _, _, _, mWhole)) = _3 mkDefnBindings (mWhole, _3, _1, _2, mWhole) ) -//# 1274 "src/Compiler/pars.fsy" +//# 1276 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4872 "pars.fs" +//# 4877 "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 @@ -4877,15 +4882,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1281 "src/Compiler/pars.fsy" +//# 1283 "src/Compiler/pars.fsy" let hwlb, m, _ = _3 if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) parseState.ResetSynArgNameGenerator() mkDefnBindings (m, hwlb, _1, _2, m) ) -//# 1281 "src/Compiler/pars.fsy" +//# 1283 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4888 "pars.fs" +//# 4893 "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 @@ -4893,14 +4898,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1288 "src/Compiler/pars.fsy" +//# 1290 "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) ) -//# 1288 "src/Compiler/pars.fsy" +//# 1290 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4903 "pars.fs" +//# 4908 "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 @@ -4910,7 +4915,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1294 "src/Compiler/pars.fsy" +//# 1296 "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) @@ -4922,9 +4927,9 @@ let _fsyacc_reductions = lazy [| let types = tc :: _5 [ SynModuleDecl.Types(types, (rhs parseState 3, types) ||> unionRangeWithListBy (fun t -> t.Range)) ] ) -//# 1294 "src/Compiler/pars.fsy" +//# 1296 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4927 "pars.fs" +//# 4932 "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 @@ -4932,7 +4937,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1307 "src/Compiler/pars.fsy" +//# 1309 "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) @@ -4941,9 +4946,9 @@ let _fsyacc_reductions = lazy [| let synExnDefn = SynExceptionDefn(SynExceptionDefnRepr(_1@cas, a, b, xmlDoc, d, defnReprRange), withKeyword, e, mWhole) [ SynModuleDecl.Exception(synExnDefn, mWhole) ] ) -//# 1307 "src/Compiler/pars.fsy" +//# 1309 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4946 "pars.fs" +//# 4951 "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 @@ -4952,7 +4957,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1317 "src/Compiler/pars.fsy" +//# 1319 "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) @@ -4979,9 +4984,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) ] ) -//# 1317 "src/Compiler/pars.fsy" +//# 1319 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4984 "pars.fs" +//# 4989 "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 @@ -4989,7 +4994,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1345 "src/Compiler/pars.fsy" +//# 1347 "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 @@ -4997,140 +5002,140 @@ let _fsyacc_reductions = lazy [| let trivia: SynModuleDeclNestedModuleTrivia = { ModuleKeyword = Some mModule; EqualsRange = None } [ SynModuleDecl.NestedModule(info, isRec, [], false, mWhole, trivia) ] ) -//# 1345 "src/Compiler/pars.fsy" +//# 1347 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 5002 "pars.fs" +//# 5007 "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 ( ( -//# 1354 "src/Compiler/pars.fsy" +//# 1356 "src/Compiler/pars.fsy" errorR(Error(FSComp.SR.parsAttributeOnIncompleteCode(), rhs parseState 1)) [ SynModuleDecl.Attributes(_1, rhs parseState 1) ] ) -//# 1354 "src/Compiler/pars.fsy" +//# 1356 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 5015 "pars.fs" +//# 5020 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_openDecl in Microsoft.FSharp.Core.Operators.box ( ( -//# 1359 "src/Compiler/pars.fsy" +//# 1361 "src/Compiler/pars.fsy" [ SynModuleDecl.Open _1 ] ) -//# 1359 "src/Compiler/pars.fsy" +//# 1361 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 5026 "pars.fs" +//# 5031 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 1363 "src/Compiler/pars.fsy" +//# 1365 "src/Compiler/pars.fsy" let mOpen = rhs parseState 1 let mPath = _2.Range SynOpenDeclTarget.ModuleOrNamespace(_2, mPath), unionRanges mOpen mPath ) -//# 1363 "src/Compiler/pars.fsy" +//# 1365 "src/Compiler/pars.fsy" : 'gentype_openDecl)); -//# 5039 "pars.fs" +//# 5044 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 1368 "src/Compiler/pars.fsy" +//# 1370 "src/Compiler/pars.fsy" let mOpen = rhs parseState 1 SynOpenDeclTarget.ModuleOrNamespace(SynLongIdent([], [], []), mOpen.EndRange), mOpen ) -//# 1368 "src/Compiler/pars.fsy" +//# 1370 "src/Compiler/pars.fsy" : 'gentype_openDecl)); -//# 5051 "pars.fs" +//# 5056 "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 Microsoft.FSharp.Core.Operators.box ( ( -//# 1372 "src/Compiler/pars.fsy" +//# 1374 "src/Compiler/pars.fsy" let mOpen = rhs parseState 1 let mPath = _3.Range SynOpenDeclTarget.Type(_3, mPath), unionRanges mOpen mPath ) -//# 1372 "src/Compiler/pars.fsy" +//# 1374 "src/Compiler/pars.fsy" : 'gentype_openDecl)); -//# 5065 "pars.fs" +//# 5070 "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 ( ( -//# 1377 "src/Compiler/pars.fsy" +//# 1379 "src/Compiler/pars.fsy" let m = rhs2 parseState 1 2 SynOpenDeclTarget.ModuleOrNamespace(SynLongIdent([], [], []), m.EndRange), m ) -//# 1377 "src/Compiler/pars.fsy" +//# 1379 "src/Compiler/pars.fsy" : 'gentype_openDecl)); -//# 5078 "pars.fs" +//# 5083 "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 ( ( -//# 1385 "src/Compiler/pars.fsy" +//# 1387 "src/Compiler/pars.fsy" _2 ) -//# 1385 "src/Compiler/pars.fsy" +//# 1387 "src/Compiler/pars.fsy" : 'gentype_namedModuleAbbrevBlock)); -//# 5090 "pars.fs" +//# 5095 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 1388 "src/Compiler/pars.fsy" +//# 1390 "src/Compiler/pars.fsy" _1 ) -//# 1388 "src/Compiler/pars.fsy" +//# 1390 "src/Compiler/pars.fsy" : 'gentype_namedModuleAbbrevBlock)); -//# 5101 "pars.fs" +//# 5106 "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 ( ( -//# 1394 "src/Compiler/pars.fsy" +//# 1396 "src/Compiler/pars.fsy" Choice2Of2 _2 ) -//# 1394 "src/Compiler/pars.fsy" +//# 1396 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 5113 "pars.fs" +//# 5118 "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 ( ( -//# 1397 "src/Compiler/pars.fsy" +//# 1399 "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 ) -//# 1397 "src/Compiler/pars.fsy" +//# 1399 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 5126 "pars.fs" +//# 5131 "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 ( ( -//# 1401 "src/Compiler/pars.fsy" +//# 1403 "src/Compiler/pars.fsy" // There is an ambiguity here // In particular, consider the following two: // @@ -5155,70 +5160,70 @@ let _fsyacc_reductions = lazy [| Choice2Of2 (_2, None) ) -//# 1401 "src/Compiler/pars.fsy" +//# 1403 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 5160 "pars.fs" +//# 5165 "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 ( ( -//# 1427 "src/Compiler/pars.fsy" +//# 1429 "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) ) -//# 1427 "src/Compiler/pars.fsy" +//# 1429 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 5174 "pars.fs" +//# 5179 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 1432 "src/Compiler/pars.fsy" +//# 1434 "src/Compiler/pars.fsy" let mEnd = rhs parseState 3 Choice2Of2 ([], Some mEnd) ) -//# 1432 "src/Compiler/pars.fsy" +//# 1434 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 5186 "pars.fs" +//# 5191 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_wrappedNamedModuleDefn in Microsoft.FSharp.Core.Operators.box ( ( -//# 1436 "src/Compiler/pars.fsy" +//# 1438 "src/Compiler/pars.fsy" Choice2Of2 _1 ) -//# 1436 "src/Compiler/pars.fsy" +//# 1438 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 5197 "pars.fs" +//# 5202 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 1439 "src/Compiler/pars.fsy" +//# 1441 "src/Compiler/pars.fsy" Choice1Of2 _1.LongIdent ) -//# 1439 "src/Compiler/pars.fsy" +//# 1441 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 5208 "pars.fs" +//# 5213 "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 ( ( -//# 1445 "src/Compiler/pars.fsy" +//# 1447 "src/Compiler/pars.fsy" let mEnd = rhs parseState 3 _2, Some mEnd ) -//# 1445 "src/Compiler/pars.fsy" +//# 1447 "src/Compiler/pars.fsy" : 'gentype_wrappedNamedModuleDefn)); -//# 5221 "pars.fs" +//# 5226 "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 @@ -5226,82 +5231,82 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1449 "src/Compiler/pars.fsy" +//# 1451 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBeginOrStruct()) _2, None ) -//# 1449 "src/Compiler/pars.fsy" +//# 1451 "src/Compiler/pars.fsy" : 'gentype_wrappedNamedModuleDefn)); -//# 5235 "pars.fs" +//# 5240 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_structOrBegin in Microsoft.FSharp.Core.Operators.box ( ( -//# 1453 "src/Compiler/pars.fsy" +//# 1455 "src/Compiler/pars.fsy" let mEnd = rhs parseState 3 [], Some mEnd ) -//# 1453 "src/Compiler/pars.fsy" +//# 1455 "src/Compiler/pars.fsy" : 'gentype_wrappedNamedModuleDefn)); -//# 5247 "pars.fs" +//# 5252 "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 ( ( -//# 1459 "src/Compiler/pars.fsy" +//# 1461 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 mWithKwd, _2 ) -//# 1459 "src/Compiler/pars.fsy" +//# 1461 "src/Compiler/pars.fsy" : range * SynMemberDefns)); -//# 5260 "pars.fs" +//# 5265 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributes in Microsoft.FSharp.Core.Operators.box ( ( -//# 1466 "src/Compiler/pars.fsy" +//# 1468 "src/Compiler/pars.fsy" _1 ) -//# 1466 "src/Compiler/pars.fsy" +//# 1468 "src/Compiler/pars.fsy" : 'gentype_opt_attributes)); -//# 5271 "pars.fs" +//# 5276 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1469 "src/Compiler/pars.fsy" +//# 1471 "src/Compiler/pars.fsy" [] ) -//# 1469 "src/Compiler/pars.fsy" +//# 1471 "src/Compiler/pars.fsy" : 'gentype_opt_attributes)); -//# 5281 "pars.fs" +//# 5286 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributeList in Microsoft.FSharp.Core.Operators.box ( ( -//# 1474 "src/Compiler/pars.fsy" +//# 1476 "src/Compiler/pars.fsy" _1 ) -//# 1474 "src/Compiler/pars.fsy" +//# 1476 "src/Compiler/pars.fsy" : 'gentype_attributes)); -//# 5292 "pars.fs" +//# 5297 "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 ( ( -//# 1477 "src/Compiler/pars.fsy" +//# 1479 "src/Compiler/pars.fsy" _1 @ _2 ) -//# 1477 "src/Compiler/pars.fsy" +//# 1479 "src/Compiler/pars.fsy" : 'gentype_attributes)); -//# 5304 "pars.fs" +//# 5309 "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 @@ -5309,23 +5314,23 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1483 "src/Compiler/pars.fsy" +//# 1485 "src/Compiler/pars.fsy" mkAttributeList _2 (rhs2 parseState 1 4) ) -//# 1483 "src/Compiler/pars.fsy" +//# 1485 "src/Compiler/pars.fsy" : 'gentype_attributeList)); -//# 5317 "pars.fs" +//# 5322 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _4 = parseState.GetInput(4) :?> 'gentype_opt_OBLOCKSEP in Microsoft.FSharp.Core.Operators.box ( ( -//# 1486 "src/Compiler/pars.fsy" +//# 1488 "src/Compiler/pars.fsy" mkAttributeList [] (rhs2 parseState 1 3) ) -//# 1486 "src/Compiler/pars.fsy" +//# 1488 "src/Compiler/pars.fsy" : 'gentype_attributeList)); -//# 5328 "pars.fs" +//# 5333 "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 @@ -5333,36 +5338,36 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1489 "src/Compiler/pars.fsy" +//# 1491 "src/Compiler/pars.fsy" if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedLBrackLess()) mkAttributeList _2 (rhs2 parseState 1 2) ) -//# 1489 "src/Compiler/pars.fsy" +//# 1491 "src/Compiler/pars.fsy" : 'gentype_attributeList)); -//# 5342 "pars.fs" +//# 5347 "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 ( ( -//# 1493 "src/Compiler/pars.fsy" +//# 1495 "src/Compiler/pars.fsy" if not _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedLBrackLess()) mkAttributeList [] (rhs parseState 1) ) -//# 1493 "src/Compiler/pars.fsy" +//# 1495 "src/Compiler/pars.fsy" : 'gentype_attributeList)); -//# 5354 "pars.fs" +//# 5359 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attribute in Microsoft.FSharp.Core.Operators.box ( ( -//# 1500 "src/Compiler/pars.fsy" +//# 1502 "src/Compiler/pars.fsy" [_1] ) -//# 1500 "src/Compiler/pars.fsy" +//# 1502 "src/Compiler/pars.fsy" : 'gentype_attributeListElements)); -//# 5365 "pars.fs" +//# 5370 "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 @@ -5370,12 +5375,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1503 "src/Compiler/pars.fsy" +//# 1505 "src/Compiler/pars.fsy" _1 @ [_3] ) -//# 1503 "src/Compiler/pars.fsy" +//# 1505 "src/Compiler/pars.fsy" : 'gentype_attributeListElements)); -//# 5378 "pars.fs" +//# 5383 "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 @@ -5383,14 +5388,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1510 "src/Compiler/pars.fsy" +//# 1512 "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) ) -//# 1510 "src/Compiler/pars.fsy" +//# 1512 "src/Compiler/pars.fsy" : 'gentype_attribute)); -//# 5393 "pars.fs" +//# 5398 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributeTarget in let _2 = parseState.GetInput(2) :?> SynLongIdent in @@ -5399,15 +5404,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1516 "src/Compiler/pars.fsy" +//# 1518 "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) ) -//# 1516 "src/Compiler/pars.fsy" +//# 1518 "src/Compiler/pars.fsy" : 'gentype_attribute)); -//# 5410 "pars.fs" +//# 5415 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributeTarget in let _3 = parseState.GetInput(3) :?> SynLongIdent in @@ -5417,117 +5422,117 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1523 "src/Compiler/pars.fsy" +//# 1525 "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) ) -//# 1523 "src/Compiler/pars.fsy" +//# 1525 "src/Compiler/pars.fsy" : 'gentype_attribute)); -//# 5428 "pars.fs" +//# 5433 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleKeyword in Microsoft.FSharp.Core.Operators.box ( ( -//# 1532 "src/Compiler/pars.fsy" +//# 1534 "src/Compiler/pars.fsy" Some(ident("module", (rhs parseState 1))) ) -//# 1532 "src/Compiler/pars.fsy" +//# 1534 "src/Compiler/pars.fsy" : 'gentype_attributeTarget)); -//# 5439 "pars.fs" +//# 5444 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeKeyword in Microsoft.FSharp.Core.Operators.box ( ( -//# 1535 "src/Compiler/pars.fsy" +//# 1537 "src/Compiler/pars.fsy" Some(ident("type", (rhs parseState 1))) ) -//# 1535 "src/Compiler/pars.fsy" +//# 1537 "src/Compiler/pars.fsy" : 'gentype_attributeTarget)); -//# 5450 "pars.fs" +//# 5455 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 1537 "src/Compiler/pars.fsy" +//# 1539 "src/Compiler/pars.fsy" Some(_1) ) -//# 1537 "src/Compiler/pars.fsy" +//# 1539 "src/Compiler/pars.fsy" : 'gentype_attributeTarget)); -//# 5461 "pars.fs" +//# 5466 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 1541 "src/Compiler/pars.fsy" +//# 1543 "src/Compiler/pars.fsy" if _1 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSyntaxError()) Some(ident("return", (rhs parseState 1))) ) -//# 1541 "src/Compiler/pars.fsy" +//# 1543 "src/Compiler/pars.fsy" : 'gentype_attributeTarget)); -//# 5473 "pars.fs" +//# 5478 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1547 "src/Compiler/pars.fsy" +//# 1549 "src/Compiler/pars.fsy" let mStatic = rhs parseState 1 let mMember = rhs parseState 2 StaticMemberFlags, SynLeadingKeyword.StaticMember(mStatic, mMember) ) -//# 1547 "src/Compiler/pars.fsy" +//# 1549 "src/Compiler/pars.fsy" : 'gentype_memberFlags)); -//# 5485 "pars.fs" +//# 5490 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1552 "src/Compiler/pars.fsy" +//# 1554 "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) ) -//# 1552 "src/Compiler/pars.fsy" +//# 1554 "src/Compiler/pars.fsy" : 'gentype_memberFlags)); -//# 5497 "pars.fs" +//# 5502 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1557 "src/Compiler/pars.fsy" +//# 1559 "src/Compiler/pars.fsy" let mMember = rhs parseState 1 NonVirtualMemberFlags, SynLeadingKeyword.Member mMember ) -//# 1557 "src/Compiler/pars.fsy" +//# 1559 "src/Compiler/pars.fsy" : 'gentype_memberFlags)); -//# 5508 "pars.fs" +//# 5513 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1561 "src/Compiler/pars.fsy" +//# 1563 "src/Compiler/pars.fsy" let mOverride = rhs parseState 1 OverrideMemberFlags, SynLeadingKeyword.Override mOverride ) -//# 1561 "src/Compiler/pars.fsy" +//# 1563 "src/Compiler/pars.fsy" : 'gentype_memberFlags)); -//# 5519 "pars.fs" +//# 5524 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1565 "src/Compiler/pars.fsy" +//# 1567 "src/Compiler/pars.fsy" let mDefault = rhs parseState 1 OverrideMemberFlags, SynLeadingKeyword.Default mDefault ) -//# 1565 "src/Compiler/pars.fsy" +//# 1567 "src/Compiler/pars.fsy" : 'gentype_memberFlags)); -//# 5530 "pars.fs" +//# 5535 "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 @@ -5535,22 +5540,22 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1571 "src/Compiler/pars.fsy" +//# 1573 "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) ) -//# 1571 "src/Compiler/pars.fsy" +//# 1573 "src/Compiler/pars.fsy" : 'gentype_typeNameInfo)); -//# 5546 "pars.fs" +//# 5551 "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 ( ( -//# 1579 "src/Compiler/pars.fsy" +//# 1581 "src/Compiler/pars.fsy" let xmlDoc = grabXmlDoc(parseState, [], 1) let tyconDefn = let leadingKeyword = SynTypeDefnLeadingKeyword.And(rhs parseState 1) @@ -5567,48 +5572,48 @@ let _fsyacc_reductions = lazy [| SynTypeDefn(componentInfo, typeRepr, members, implicitConstructor, range, trivia) tyconDefn :: _3 ) -//# 1579 "src/Compiler/pars.fsy" +//# 1581 "src/Compiler/pars.fsy" : 'gentype_tyconDefnList)); -//# 5572 "pars.fs" +//# 5577 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1596 "src/Compiler/pars.fsy" +//# 1598 "src/Compiler/pars.fsy" [] ) -//# 1596 "src/Compiler/pars.fsy" +//# 1598 "src/Compiler/pars.fsy" : 'gentype_tyconDefnList)); -//# 5582 "pars.fs" +//# 5587 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in Microsoft.FSharp.Core.Operators.box ( ( -//# 1601 "src/Compiler/pars.fsy" +//# 1603 "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) ) -//# 1601 "src/Compiler/pars.fsy" +//# 1603 "src/Compiler/pars.fsy" : 'gentype_tyconDefn)); -//# 5595 "pars.fs" +//# 5600 "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 ( ( -//# 1606 "src/Compiler/pars.fsy" +//# 1608 "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) ) -//# 1606 "src/Compiler/pars.fsy" +//# 1608 "src/Compiler/pars.fsy" : 'gentype_tyconDefn)); -//# 5611 "pars.fs" +//# 5616 "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 @@ -5620,7 +5625,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1613 "src/Compiler/pars.fsy" +//# 1615 "src/Compiler/pars.fsy" let vis, spats, az = _3, _5, _6 let nameRange = rhs parseState 1 let (tcDefRepr, mWith, members) = _8 nameRange @@ -5660,9 +5665,9 @@ let _fsyacc_reductions = lazy [| let trivia: SynTypeDefnTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = Some mEquals; WithKeyword = mWith } SynTypeDefn(_1, tcDefRepr, members, memberCtorPattern, mWhole, trivia) ) -//# 1613 "src/Compiler/pars.fsy" +//# 1615 "src/Compiler/pars.fsy" : 'gentype_tyconDefn)); -//# 5665 "pars.fs" +//# 5670 "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 @@ -5674,7 +5679,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1664 "src/Compiler/pars.fsy" +//# 1666 "src/Compiler/pars.fsy" let vis, spats, az = _3, _5, _6 let (SynComponentInfo(longId = lid)) = _1 // Gets the XML doc comments prior to the implicit constructor @@ -5702,9 +5707,9 @@ let _fsyacc_reductions = lazy [| let trivia = { SynTypeDefnTrivia.Zero with LeadingKeyword = leadingKeyword } SynTypeDefn(_1, SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None(mName), mName), members, None, mWhole, trivia) ) -//# 1664 "src/Compiler/pars.fsy" +//# 1666 "src/Compiler/pars.fsy" : 'gentype_tyconDefn)); -//# 5707 "pars.fs" +//# 5712 "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 @@ -5715,7 +5720,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1708 "src/Compiler/pars.fsy" +//# 1710 "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)) @@ -5724,9 +5729,9 @@ let _fsyacc_reductions = lazy [| let mWith = Option.orElse mWith2 mWith tcDefRepr, mWith, members) ) -//# 1708 "src/Compiler/pars.fsy" +//# 1710 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhsBlock)); -//# 5729 "pars.fs" +//# 5734 "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 @@ -5736,7 +5741,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1717 "src/Compiler/pars.fsy" +//# 1719 "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)) @@ -5744,55 +5749,55 @@ let _fsyacc_reductions = lazy [| let tcDefRepr, members = _2 nameRange (checkForMultipleAugmentations m (_4 @ optClassDefn) []) tcDefRepr, mWith, members) ) -//# 1717 "src/Compiler/pars.fsy" +//# 1719 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhsBlock)); -//# 5749 "pars.fs" +//# 5754 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 1725 "src/Compiler/pars.fsy" +//# 1727 "src/Compiler/pars.fsy" fun mName -> SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None mName, mName), None, [] ) -//# 1725 "src/Compiler/pars.fsy" +//# 1727 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhsBlock)); -//# 5761 "pars.fs" +//# 5766 "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 ( ( -//# 1729 "src/Compiler/pars.fsy" +//# 1731 "src/Compiler/pars.fsy" let m = rhs parseState 1 let mWith, optClassDefn = _2 (fun nameRange -> let tcDefRepr, members = _1 nameRange optClassDefn tcDefRepr, mWith, members) ) -//# 1729 "src/Compiler/pars.fsy" +//# 1731 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhsBlock)); -//# 5777 "pars.fs" +//# 5782 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypeDefnSimpleRepr in Microsoft.FSharp.Core.Operators.box ( ( -//# 1741 "src/Compiler/pars.fsy" +//# 1743 "src/Compiler/pars.fsy" let m = _1.Range (fun nameRange augmentation -> SynTypeDefnRepr.Simple(_1, m), augmentation) ) -//# 1741 "src/Compiler/pars.fsy" +//# 1743 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhs)); -//# 5789 "pars.fs" +//# 5794 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tyconClassDefn in Microsoft.FSharp.Core.Operators.box ( ( -//# 1746 "src/Compiler/pars.fsy" +//# 1748 "src/Compiler/pars.fsy" let needsCheck, (kind, decls), mopt = _1 let m = match mopt with | None -> (lhs parseState).StartRange // create a zero-width range @@ -5802,15 +5807,15 @@ let _fsyacc_reductions = lazy [| reportParseErrorAt nameRange (FSComp.SR.parsEmptyTypeDefinition()) SynTypeDefnRepr.ObjectModel(kind, decls, m), augmentation) ) -//# 1746 "src/Compiler/pars.fsy" +//# 1748 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhs)); -//# 5807 "pars.fs" +//# 5812 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_topType in Microsoft.FSharp.Core.Operators.box ( ( -//# 1757 "src/Compiler/pars.fsy" +//# 1759 "src/Compiler/pars.fsy" let m = lhs parseState let ty, arity = _3 (fun nameRange augmentation -> @@ -5820,33 +5825,33 @@ let _fsyacc_reductions = lazy [| if not (isNil augmentation) then raiseParseErrorAt m (FSComp.SR.parsAugmentationsIllegalOnDelegateType()) SynTypeDefnRepr.ObjectModel(SynTypeDefnKind.Delegate(ty, arity), [invoke], m), []) ) -//# 1757 "src/Compiler/pars.fsy" +//# 1759 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhs)); -//# 5825 "pars.fs" +//# 5830 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classDefnBlockKindUnspecified in Microsoft.FSharp.Core.Operators.box ( ( -//# 1770 "src/Compiler/pars.fsy" +//# 1772 "src/Compiler/pars.fsy" let needsCheck, decls, mopt = _1 needsCheck, (SynTypeDefnKind.Unspecified, decls), mopt ) -//# 1770 "src/Compiler/pars.fsy" +//# 1772 "src/Compiler/pars.fsy" : 'gentype_tyconClassDefn)); -//# 5837 "pars.fs" +//# 5842 "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 ( ( -//# 1774 "src/Compiler/pars.fsy" +//# 1776 "src/Compiler/pars.fsy" false, (_1, _2), Some(rhs2 parseState 1 3) ) -//# 1774 "src/Compiler/pars.fsy" +//# 1776 "src/Compiler/pars.fsy" : 'gentype_tyconClassDefn)); -//# 5849 "pars.fs" +//# 5854 "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 @@ -5854,33 +5859,33 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1777 "src/Compiler/pars.fsy" +//# 1779 "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) ) -//# 1777 "src/Compiler/pars.fsy" +//# 1779 "src/Compiler/pars.fsy" : 'gentype_tyconClassDefn)); -//# 5864 "pars.fs" +//# 5869 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in Microsoft.FSharp.Core.Operators.box ( ( -//# 1782 "src/Compiler/pars.fsy" +//# 1784 "src/Compiler/pars.fsy" // silent recovery false, (_1, []), Some(rhs2 parseState 1 3) ) -//# 1782 "src/Compiler/pars.fsy" +//# 1784 "src/Compiler/pars.fsy" : 'gentype_tyconClassDefn)); -//# 5876 "pars.fs" +//# 5881 "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 ( ( -//# 1789 "src/Compiler/pars.fsy" +//# 1791 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition()) let mopt = match _2 with @@ -5888,93 +5893,93 @@ let _fsyacc_reductions = lazy [| | _ -> None false, _2, mopt ) -//# 1789 "src/Compiler/pars.fsy" +//# 1791 "src/Compiler/pars.fsy" : 'gentype_classDefnBlockKindUnspecified)); -//# 5893 "pars.fs" +//# 5898 "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 ( ( -//# 1797 "src/Compiler/pars.fsy" +//# 1799 "src/Compiler/pars.fsy" let mopt = match _2 with | _ :: _ -> Some((rhs parseState 1, _2) ||> unionRangeWithListBy (fun (d: SynMemberDefn) -> d.Range)) | _ -> None true, _2, mopt ) -//# 1797 "src/Compiler/pars.fsy" +//# 1799 "src/Compiler/pars.fsy" : 'gentype_classDefnBlockKindUnspecified)); -//# 5909 "pars.fs" +//# 5914 "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 ( ( -//# 1807 "src/Compiler/pars.fsy" +//# 1809 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition()) _2 ) -//# 1807 "src/Compiler/pars.fsy" +//# 1809 "src/Compiler/pars.fsy" : 'gentype_classDefnBlock)); -//# 5922 "pars.fs" +//# 5927 "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 ( ( -//# 1811 "src/Compiler/pars.fsy" +//# 1813 "src/Compiler/pars.fsy" _2 ) -//# 1811 "src/Compiler/pars.fsy" +//# 1813 "src/Compiler/pars.fsy" : 'gentype_classDefnBlock)); -//# 5934 "pars.fs" +//# 5939 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMembers in Microsoft.FSharp.Core.Operators.box ( ( -//# 1814 "src/Compiler/pars.fsy" +//# 1816 "src/Compiler/pars.fsy" _1 ) -//# 1814 "src/Compiler/pars.fsy" +//# 1816 "src/Compiler/pars.fsy" : 'gentype_classDefnBlock)); -//# 5945 "pars.fs" +//# 5950 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMembersAtLeastOne in Microsoft.FSharp.Core.Operators.box ( ( -//# 1820 "src/Compiler/pars.fsy" +//# 1822 "src/Compiler/pars.fsy" _1 ) -//# 1820 "src/Compiler/pars.fsy" +//# 1822 "src/Compiler/pars.fsy" : 'gentype_classDefnMembers)); -//# 5956 "pars.fs" +//# 5961 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembers in Microsoft.FSharp.Core.Operators.box ( ( -//# 1824 "src/Compiler/pars.fsy" +//# 1826 "src/Compiler/pars.fsy" _2 ) -//# 1824 "src/Compiler/pars.fsy" +//# 1826 "src/Compiler/pars.fsy" : 'gentype_classDefnMembers)); -//# 5967 "pars.fs" +//# 5972 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1827 "src/Compiler/pars.fsy" +//# 1829 "src/Compiler/pars.fsy" [] ) -//# 1827 "src/Compiler/pars.fsy" +//# 1829 "src/Compiler/pars.fsy" : 'gentype_classDefnMembers)); -//# 5977 "pars.fs" +//# 5982 "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 @@ -5982,7 +5987,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1833 "src/Compiler/pars.fsy" +//# 1835 "src/Compiler/pars.fsy" match _1, _3 with | [ SynMemberDefn.Interface(members=Some []; range=m) ], nextMember :: _ -> let strictIndentation = parseState.LexBuffer.SupportsFeature LanguageFeature.StrictIndentation @@ -5991,70 +5996,70 @@ let _fsyacc_reductions = lazy [| | _ -> () _1 @ _3 ) -//# 1833 "src/Compiler/pars.fsy" +//# 1835 "src/Compiler/pars.fsy" : 'gentype_classDefnMembersAtLeastOne)); -//# 5996 "pars.fs" +//# 6001 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMemberGetSetElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 1845 "src/Compiler/pars.fsy" +//# 1847 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 mWithKwd, _2 ) -//# 1845 "src/Compiler/pars.fsy" +//# 1847 "src/Compiler/pars.fsy" : 'gentype_classDefnMemberGetSet)); -//# 6008 "pars.fs" +//# 6013 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMemberGetSetElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 1849 "src/Compiler/pars.fsy" +//# 1851 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 mWithKwd, _2 ) -//# 1849 "src/Compiler/pars.fsy" +//# 1851 "src/Compiler/pars.fsy" : 'gentype_classDefnMemberGetSet)); -//# 6020 "pars.fs" +//# 6025 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMemberGetSetElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 1853 "src/Compiler/pars.fsy" +//# 1855 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedWith()) mWithKwd, _2 ) -//# 1853 "src/Compiler/pars.fsy" +//# 1855 "src/Compiler/pars.fsy" : 'gentype_classDefnMemberGetSet)); -//# 6033 "pars.fs" +//# 6038 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMemberGetSetElement in Microsoft.FSharp.Core.Operators.box ( ( -//# 1860 "src/Compiler/pars.fsy" +//# 1862 "src/Compiler/pars.fsy" [_1], None ) -//# 1860 "src/Compiler/pars.fsy" +//# 1862 "src/Compiler/pars.fsy" : 'gentype_classDefnMemberGetSetElements)); -//# 6044 "pars.fs" +//# 6049 "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 ( ( -//# 1863 "src/Compiler/pars.fsy" +//# 1865 "src/Compiler/pars.fsy" let mAnd = rhs parseState 2 [_1;_3], Some mAnd ) -//# 1863 "src/Compiler/pars.fsy" +//# 1865 "src/Compiler/pars.fsy" : 'gentype_classDefnMemberGetSetElements)); -//# 6057 "pars.fs" +//# 6062 "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 @@ -6064,14 +6069,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1868 "src/Compiler/pars.fsy" +//# 1870 "src/Compiler/pars.fsy" let mEquals = rhs parseState 5 let mRhs = (_6: SynExpr).Range (_1, _2, _3, _4, Some mEquals, _6, mRhs) ) -//# 1868 "src/Compiler/pars.fsy" +//# 1870 "src/Compiler/pars.fsy" : 'gentype_classDefnMemberGetSetElement)); -//# 6074 "pars.fs" +//# 6079 "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 @@ -6080,7 +6085,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1877 "src/Compiler/pars.fsy" +//# 1879 "src/Compiler/pars.fsy" let mRhs = _5.Range let optReturnType = _3 let mEquals = rhs parseState 4 @@ -6095,9 +6100,9 @@ let _fsyacc_reductions = lazy [| let memberRange = unionRanges rangeStart mRhs |> unionRangeWithXmlDoc xmlDoc [ SynMemberDefn.Member(binding, memberRange) ]) ) -//# 1877 "src/Compiler/pars.fsy" +//# 1879 "src/Compiler/pars.fsy" : 'gentype_memberCore)); -//# 6100 "pars.fs" +//# 6105 "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 @@ -6105,7 +6110,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1892 "src/Compiler/pars.fsy" +//# 1894 "src/Compiler/pars.fsy" let optReturnType = _3 let bindingPat, mBindLhs = _2 let mEnd = @@ -6124,9 +6129,9 @@ let _fsyacc_reductions = lazy [| let memberRange = unionRanges rangeStart mEnd |> unionRangeWithXmlDoc xmlDoc [ SynMemberDefn.Member (binding, memberRange) ] ) -//# 1892 "src/Compiler/pars.fsy" +//# 1894 "src/Compiler/pars.fsy" : 'gentype_memberCore)); -//# 6129 "pars.fs" +//# 6134 "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 @@ -6135,7 +6140,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1912 "src/Compiler/pars.fsy" +//# 1914 "src/Compiler/pars.fsy" let optReturnType = _3 let bindingPat, mBindLhs = _2 let mEnd = @@ -6153,9 +6158,9 @@ let _fsyacc_reductions = lazy [| let memberRange = unionRanges rangeStart mEnd |> unionRangeWithXmlDoc xmlDoc [ SynMemberDefn.Member (binding, memberRange) ] ) -//# 1912 "src/Compiler/pars.fsy" +//# 1914 "src/Compiler/pars.fsy" : 'gentype_memberCore)); -//# 6158 "pars.fs" +//# 6163 "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 @@ -6164,7 +6169,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1932 "src/Compiler/pars.fsy" +//# 1934 "src/Compiler/pars.fsy" let mWith, (classDefnMemberGetSetElements, mAnd) = _4 let mWhole = (rhs parseState 2, classDefnMemberGetSetElements) ||> unionRangeWithListBy (fun (_, _, _, _, _, _, m2) -> m2) let propertyNameBindingPat, _ = _2 @@ -6179,37 +6184,37 @@ let _fsyacc_reductions = lazy [| propertyNameBindingPat optPropertyType ) -//# 1932 "src/Compiler/pars.fsy" +//# 1934 "src/Compiler/pars.fsy" : 'gentype_memberCore)); -//# 6184 "pars.fs" +//# 6189 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1949 "src/Compiler/pars.fsy" +//# 1951 "src/Compiler/pars.fsy" let mAbstract = rhs parseState 1 AbstractMemberFlags true, SynLeadingKeyword.Abstract mAbstract ) -//# 1949 "src/Compiler/pars.fsy" +//# 1951 "src/Compiler/pars.fsy" : 'gentype_abstractMemberFlags)); -//# 6195 "pars.fs" +//# 6200 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1953 "src/Compiler/pars.fsy" +//# 1955 "src/Compiler/pars.fsy" let mAbstract = rhs parseState 1 let mMember = rhs parseState 2 AbstractMemberFlags true, SynLeadingKeyword.AbstractMember(mAbstract, mMember) ) -//# 1953 "src/Compiler/pars.fsy" +//# 1955 "src/Compiler/pars.fsy" : 'gentype_abstractMemberFlags)); -//# 6207 "pars.fs" +//# 6212 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1958 "src/Compiler/pars.fsy" +//# 1960 "src/Compiler/pars.fsy" let mWhole = rhs2 parseState 1 2 parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.InterfacesWithAbstractStaticMembers mWhole if parseState.LexBuffer.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers then @@ -6218,14 +6223,14 @@ let _fsyacc_reductions = lazy [| let mAbstract = rhs parseState 2 AbstractMemberFlags false, SynLeadingKeyword.StaticAbstract(mStatic, mAbstract) ) -//# 1958 "src/Compiler/pars.fsy" +//# 1960 "src/Compiler/pars.fsy" : 'gentype_abstractMemberFlags)); -//# 6223 "pars.fs" +//# 6228 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1967 "src/Compiler/pars.fsy" +//# 1969 "src/Compiler/pars.fsy" let mWhole = rhs2 parseState 1 2 parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.InterfacesWithAbstractStaticMembers mWhole if parseState.LexBuffer.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers then @@ -6235,9 +6240,9 @@ let _fsyacc_reductions = lazy [| let mMember = rhs parseState 3 AbstractMemberFlags false, SynLeadingKeyword.StaticAbstractMember(mStatic, mAbstract, mMember) ) -//# 1967 "src/Compiler/pars.fsy" +//# 1969 "src/Compiler/pars.fsy" : 'gentype_abstractMemberFlags)); -//# 6240 "pars.fs" +//# 6245 "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 @@ -6245,13 +6250,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1979 "src/Compiler/pars.fsy" +//# 1981 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) [mkClassMemberLocalBindings(false, None, _1, _2, _3)] ) -//# 1979 "src/Compiler/pars.fsy" +//# 1981 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6254 "pars.fs" +//# 6259 "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 @@ -6259,13 +6264,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1983 "src/Compiler/pars.fsy" +//# 1985 "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)] ) -//# 1983 "src/Compiler/pars.fsy" +//# 1985 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6268 "pars.fs" +//# 6273 "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 @@ -6275,16 +6280,19 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1987 "src/Compiler/pars.fsy" +//# 1989 "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 + match flags with + | _, SynLeadingKeyword.Static(mStatic) -> errorR (Error (FSComp.SR.parsStaticMemberImcompleteSyntax (), mStatic)) + | _ -> () _4 _2 flags _1 rangeStart ) -//# 1987 "src/Compiler/pars.fsy" +//# 1989 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6287 "pars.fs" +//# 6295 "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 @@ -6293,7 +6301,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1994 "src/Compiler/pars.fsy" +//# 1999 "src/Compiler/pars.fsy" let rangeStart = rhs parseState 1 if Option.isSome _2 then errorR (Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) @@ -6312,9 +6320,9 @@ let _fsyacc_reductions = lazy [| (_2, (Option.isSome _2), false, mWhole, DebugPointAtBinding.NoneAtInvisible, None, expr, mEnd, [], _1, flags, trivia) [SynMemberDefn.Member(binding, mWhole)] ) -//# 1994 "src/Compiler/pars.fsy" +//# 1999 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6317 "pars.fs" +//# 6325 "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 @@ -6324,7 +6332,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2014 "src/Compiler/pars.fsy" +//# 2019 "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 = @@ -6333,9 +6341,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) ] ) -//# 2014 "src/Compiler/pars.fsy" +//# 2019 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6338 "pars.fs" +//# 6346 "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 @@ -6344,16 +6352,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2023 "src/Compiler/pars.fsy" +//# 2028 "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) ] ) -//# 2023 "src/Compiler/pars.fsy" +//# 2028 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6356 "pars.fs" +//# 6364 "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 @@ -6367,7 +6375,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2030 "src/Compiler/pars.fsy" +//# 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 @@ -6385,9 +6393,9 @@ let _fsyacc_reductions = lazy [| let trivia: SynMemberDefnAbstractSlotTrivia = { GetSetKeywords = getSetRangeOpt } [ SynMemberDefn.AbstractSlot(valSpfn, mkFlags (getSetAdjuster arity), mWhole, trivia) ] ) -//# 2030 "src/Compiler/pars.fsy" +//# 2035 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6390 "pars.fs" +//# 6398 "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 @@ -6395,14 +6403,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2048 "src/Compiler/pars.fsy" +//# 2053 "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 ] ) -//# 2048 "src/Compiler/pars.fsy" +//# 2053 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6405 "pars.fs" +//# 6413 "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 @@ -6411,14 +6419,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2053 "src/Compiler/pars.fsy" +//# 2058 "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 ) -//# 2053 "src/Compiler/pars.fsy" +//# 2058 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6421 "pars.fs" +//# 6429 "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 @@ -6427,15 +6435,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2058 "src/Compiler/pars.fsy" +//# 2063 "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) ) -//# 2058 "src/Compiler/pars.fsy" +//# 2063 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6438 "pars.fs" +//# 6446 "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 @@ -6445,16 +6453,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2064 "src/Compiler/pars.fsy" +//# 2069 "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 ) -//# 2064 "src/Compiler/pars.fsy" +//# 2069 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6457 "pars.fs" +//# 6465 "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 @@ -6465,14 +6473,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2071 "src/Compiler/pars.fsy" +//# 2076 "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) let m = unionRanges mWholeBindLhs _7.Range |> unionRangeWithXmlDoc xmlDoc let mEquals = rhs parseState 6 let expr = _7 - let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat _4], SynInfo.unnamedRetVal), Option.bind snd _5, None) + let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat _4], SynInfo.unnamedRetVal), Option.bind snd _5) let vis = _2 let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [_4], vis, rhs parseState 3) // Check that 'SynPatForConstructorDecl' matches this correctly @@ -6480,9 +6488,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) ] ) -//# 2071 "src/Compiler/pars.fsy" +//# 2076 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6485 "pars.fs" +//# 6493 "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 @@ -6492,7 +6500,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2086 "src/Compiler/pars.fsy" +//# 2091 "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) @@ -6500,15 +6508,15 @@ let _fsyacc_reductions = lazy [| let xmlDoc = grabXmlDoc (parseState, _1, 1) let m = unionRanges (rhs parseState 1) mEnd |> unionRangeWithXmlDoc xmlDoc let expr = arbExpr ("new1", mEnd.EndRange) - let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat _4], SynInfo.unnamedRetVal), Option.bind snd _5, None) + let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat _4], SynInfo.unnamedRetVal), Option.bind snd _5) let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [_4], _2, rhs parseState 3) assert (match declPat with SynPatForConstructorDecl _ -> true | _ -> false) 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) ] ) -//# 2086 "src/Compiler/pars.fsy" +//# 2091 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6511 "pars.fs" +//# 6519 "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 @@ -6517,7 +6525,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2100 "src/Compiler/pars.fsy" +//# 2105 "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) @@ -6525,15 +6533,15 @@ let _fsyacc_reductions = lazy [| let xmlDoc = grabXmlDoc (parseState, _1, 1) let m = unionRanges (rhs parseState 1) mEnd |> unionRangeWithXmlDoc xmlDoc let expr = arbExpr ("new2", mEnd.EndRange) - let valSynData = SynValData(Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat _4], SynInfo.unnamedRetVal), Option.bind snd _5, None) + let valSynData = SynValData(Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat _4], SynInfo.unnamedRetVal), Option.bind snd _5) let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [_4], _2, rhs parseState 3) assert (match declPat with SynPatForConstructorDecl _ -> true | _ -> false) 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) ] ) -//# 2100 "src/Compiler/pars.fsy" +//# 2105 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6536 "pars.fs" +//# 6544 "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 @@ -6542,21 +6550,21 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2114 "src/Compiler/pars.fsy" +//# 2119 "src/Compiler/pars.fsy" let m = rhs2 parseState 1 3 let mNew = rhs parseState 3 let xmlDoc = grabXmlDoc (parseState, _1, 1) let pat = patFromParseError (SynPat.Wild(mNew.EndRange)) let expr = arbExpr ("new3", mNew.EndRange) - let valSynData = SynValData(Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat pat], SynInfo.unnamedRetVal), None, None) + let valSynData = SynValData(Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat pat], SynInfo.unnamedRetVal), None) let vis = _2 let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [pat], vis, rhs parseState 3) 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) ] ) -//# 2114 "src/Compiler/pars.fsy" +//# 2119 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6559 "pars.fs" +//# 6567 "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 @@ -6565,14 +6573,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2126 "src/Compiler/pars.fsy" +//# 2131 "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) ] ) -//# 2126 "src/Compiler/pars.fsy" +//# 2131 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6575 "pars.fs" +//# 6583 "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 @@ -6581,16 +6589,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2134 "src/Compiler/pars.fsy" +//# 2139 "src/Compiler/pars.fsy" let mVal = rhs parseState 1 - let mRhs = rhs2 parseState 4 6 fun rangeStart attribs mStaticOpt -> - let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) - [ mkValField mVal mRhs _2 _3 _4 _6 xmlDoc rangeStart attribs mStaticOpt ] + [ mkValField parseState mVal _2 _3 (Some _4) (Some _6) rangeStart attribs mStaticOpt ] ) -//# 2134 "src/Compiler/pars.fsy" +//# 2139 "src/Compiler/pars.fsy" : 'gentype_valDefnDecl)); -//# 6593 "pars.fs" +//# 6599 "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 @@ -6599,18 +6605,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2141 "src/Compiler/pars.fsy" +//# 2144 "src/Compiler/pars.fsy" let mVal = rhs parseState 1 - let mRhs = rhs2 parseState 4 6 let mColon = rhs parseState 5 let ty = SynType.FromParseError(mColon.EndRange) fun rangeStart attribs mStaticOpt -> - let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) - [ mkValField mVal mRhs _2 _3 _4 ty xmlDoc rangeStart attribs mStaticOpt ] + [ mkValField parseState mVal _2 _3 (Some _4) (Some ty) rangeStart attribs mStaticOpt ] ) -//# 2141 "src/Compiler/pars.fsy" +//# 2144 "src/Compiler/pars.fsy" : 'gentype_valDefnDecl)); -//# 6613 "pars.fs" +//# 6617 "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 @@ -6619,18 +6623,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2150 "src/Compiler/pars.fsy" +//# 2151 "src/Compiler/pars.fsy" let mVal = rhs parseState 1 - let mRhs = rhs2 parseState 4 6 - let mColon = rhs parseState 5 - let ty = SynType.FromParseError(mColon.EndRange) + let ty = SynType.FromParseError(_4.idRange.EndRange) fun rangeStart attribs mStaticOpt -> - let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) - [ mkValField mVal mRhs _2 _3 _4 ty xmlDoc rangeStart attribs mStaticOpt ] + [ mkValField parseState mVal _2 _3 (Some _4) (Some ty) rangeStart attribs mStaticOpt ] ) -//# 2150 "src/Compiler/pars.fsy" +//# 2151 "src/Compiler/pars.fsy" : 'gentype_valDefnDecl)); -//# 6633 "pars.fs" +//# 6634 "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 @@ -6638,19 +6639,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2159 "src/Compiler/pars.fsy" +//# 2157 "src/Compiler/pars.fsy" let mVal = rhs parseState 1 - let mRhs = rhs2 parseState 4 6 - let id = mkSynId mVal.EndRange "" - let mColon = rhs parseState 5 - let ty = SynType.FromParseError(mColon.EndRange) fun rangeStart attribs mStaticOpt -> - let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) - [ mkValField mVal mRhs _2 _3 id ty xmlDoc rangeStart attribs mStaticOpt ] + [ mkValField parseState mVal _2 _3 None None rangeStart attribs mStaticOpt ] ) -//# 2159 "src/Compiler/pars.fsy" +//# 2157 "src/Compiler/pars.fsy" : 'gentype_valDefnDecl)); -//# 6653 "pars.fs" +//# 6649 "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 @@ -6661,18 +6657,18 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2172 "src/Compiler/pars.fsy" +//# 2165 "src/Compiler/pars.fsy" let mVal = rhs parseState 1 let mEquals = rhs parseState 6 - if _2 then + if Option.isSome _2 then errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) fun attribs flags rangeStart -> let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) [ mkAutoPropDefn mVal _3 _4 _5 (Some mEquals) _7 _8 xmlDoc attribs flags rangeStart ] ) -//# 2172 "src/Compiler/pars.fsy" +//# 2165 "src/Compiler/pars.fsy" : 'gentype_autoPropsDefnDecl)); -//# 6675 "pars.fs" +//# 6671 "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 @@ -6682,22 +6678,22 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2181 "src/Compiler/pars.fsy" +//# 2174 "src/Compiler/pars.fsy" let mVal = rhs parseState 1 let mEnd = match _5 with | Some t -> t.Range | _ -> _4.idRange let expr = arbExpr ("autoProp1", mEnd.EndRange) - if _2 then + if Option.isSome _2 then 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 ] ) -//# 2181 "src/Compiler/pars.fsy" +//# 2174 "src/Compiler/pars.fsy" : 'gentype_autoPropsDefnDecl)); -//# 6700 "pars.fs" +//# 6696 "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 @@ -6706,22 +6702,22 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2194 "src/Compiler/pars.fsy" +//# 2187 "src/Compiler/pars.fsy" let mVal = rhs parseState 1 let mEnd = match _5 with | Some t -> t.Range | _ -> _4.idRange let expr = arbExpr ("autoProp2", mEnd.EndRange) - if _2 then + if Option.isSome _2 then 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 ] ) -//# 2194 "src/Compiler/pars.fsy" +//# 2187 "src/Compiler/pars.fsy" : 'gentype_autoPropsDefnDecl)); -//# 6724 "pars.fs" +//# 6720 "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 @@ -6729,246 +6725,246 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2207 "src/Compiler/pars.fsy" +//# 2200 "src/Compiler/pars.fsy" let mVal = rhs parseState 1 let id = mkSynId mVal.EndRange "" let expr = arbExpr ("autoProp3", mVal.EndRange) - if _2 then + if Option.isSome _2 then 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 ] ) -//# 2207 "src/Compiler/pars.fsy" +//# 2200 "src/Compiler/pars.fsy" : 'gentype_autoPropsDefnDecl)); -//# 6744 "pars.fs" +//# 6740 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2219 "src/Compiler/pars.fsy" +//# 2212 "src/Compiler/pars.fsy" None ) -//# 2219 "src/Compiler/pars.fsy" +//# 2212 "src/Compiler/pars.fsy" : 'gentype_opt_typ)); -//# 6754 "pars.fs" +//# 6750 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2222 "src/Compiler/pars.fsy" +//# 2215 "src/Compiler/pars.fsy" Some _2 ) -//# 2222 "src/Compiler/pars.fsy" +//# 2215 "src/Compiler/pars.fsy" : 'gentype_opt_typ)); -//# 6765 "pars.fs" +//# 6761 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 2225 "src/Compiler/pars.fsy" +//# 2218 "src/Compiler/pars.fsy" let mColon = rhs parseState 1 let ty = SynType.FromParseError(mColon.EndRange) Some ty ) -//# 2225 "src/Compiler/pars.fsy" +//# 2218 "src/Compiler/pars.fsy" : 'gentype_opt_typ)); -//# 6778 "pars.fs" +//# 6774 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 2232 "src/Compiler/pars.fsy" +//# 2225 "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 ) -//# 2232 "src/Compiler/pars.fsy" +//# 2225 "src/Compiler/pars.fsy" : 'gentype_atomicPatternLongIdent)); -//# 6793 "pars.fs" +//# 6789 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 2240 "src/Compiler/pars.fsy" +//# 2233 "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 ) -//# 2240 "src/Compiler/pars.fsy" +//# 2233 "src/Compiler/pars.fsy" : 'gentype_atomicPatternLongIdent)); -//# 6806 "pars.fs" +//# 6802 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 2245 "src/Compiler/pars.fsy" +//# 2238 "src/Compiler/pars.fsy" (None, _1) ) -//# 2245 "src/Compiler/pars.fsy" +//# 2238 "src/Compiler/pars.fsy" : 'gentype_atomicPatternLongIdent)); -//# 6817 "pars.fs" +//# 6813 "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 ( ( -//# 2248 "src/Compiler/pars.fsy" +//# 2241 "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 ) -//# 2248 "src/Compiler/pars.fsy" +//# 2241 "src/Compiler/pars.fsy" : 'gentype_atomicPatternLongIdent)); -//# 6833 "pars.fs" +//# 6829 "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 ( ( -//# 2256 "src/Compiler/pars.fsy" +//# 2249 "src/Compiler/pars.fsy" (Some(_1), _2) ) -//# 2256 "src/Compiler/pars.fsy" +//# 2249 "src/Compiler/pars.fsy" : 'gentype_atomicPatternLongIdent)); -//# 6845 "pars.fs" +//# 6841 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2261 "src/Compiler/pars.fsy" +//# 2254 "src/Compiler/pars.fsy" None ) -//# 2261 "src/Compiler/pars.fsy" +//# 2254 "src/Compiler/pars.fsy" : 'gentype_opt_access)); -//# 6855 "pars.fs" +//# 6851 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_access in Microsoft.FSharp.Core.Operators.box ( ( -//# 2264 "src/Compiler/pars.fsy" +//# 2257 "src/Compiler/pars.fsy" Some(_1) ) -//# 2264 "src/Compiler/pars.fsy" +//# 2257 "src/Compiler/pars.fsy" : 'gentype_opt_access)); -//# 6866 "pars.fs" +//# 6862 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2269 "src/Compiler/pars.fsy" +//# 2262 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynAccess.Private m ) -//# 2269 "src/Compiler/pars.fsy" +//# 2262 "src/Compiler/pars.fsy" : 'gentype_access)); -//# 6877 "pars.fs" +//# 6873 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2273 "src/Compiler/pars.fsy" +//# 2266 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynAccess.Public m ) -//# 2273 "src/Compiler/pars.fsy" +//# 2266 "src/Compiler/pars.fsy" : 'gentype_access)); -//# 6888 "pars.fs" +//# 6884 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2277 "src/Compiler/pars.fsy" +//# 2270 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynAccess.Internal m ) -//# 2277 "src/Compiler/pars.fsy" +//# 2270 "src/Compiler/pars.fsy" : 'gentype_access)); -//# 6899 "pars.fs" +//# 6895 "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 ( ( -//# 2283 "src/Compiler/pars.fsy" +//# 2276 "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) ) -//# 2283 "src/Compiler/pars.fsy" +//# 2276 "src/Compiler/pars.fsy" : 'gentype_opt_interfaceImplDefn)); -//# 6914 "pars.fs" +//# 6910 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2289 "src/Compiler/pars.fsy" +//# 2282 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 Some(mWithKwd, [], mWithKwd) ) -//# 2289 "src/Compiler/pars.fsy" +//# 2282 "src/Compiler/pars.fsy" : 'gentype_opt_interfaceImplDefn)); -//# 6925 "pars.fs" +//# 6921 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2293 "src/Compiler/pars.fsy" +//# 2286 "src/Compiler/pars.fsy" None ) -//# 2293 "src/Compiler/pars.fsy" +//# 2286 "src/Compiler/pars.fsy" : 'gentype_opt_interfaceImplDefn)); -//# 6935 "pars.fs" +//# 6931 "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 ( ( -//# 2298 "src/Compiler/pars.fsy" +//# 2291 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 (Some mWithKwd), _2 ) -//# 2298 "src/Compiler/pars.fsy" +//# 2291 "src/Compiler/pars.fsy" : 'gentype_opt_classDefn)); -//# 6948 "pars.fs" +//# 6944 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2302 "src/Compiler/pars.fsy" +//# 2295 "src/Compiler/pars.fsy" None, [] ) -//# 2302 "src/Compiler/pars.fsy" +//# 2295 "src/Compiler/pars.fsy" : 'gentype_opt_classDefn)); -//# 6958 "pars.fs" +//# 6954 "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 ( ( -//# 2308 "src/Compiler/pars.fsy" +//# 2301 "src/Compiler/pars.fsy" let mDecl = unionRanges (rhs parseState 1) _2.Range SynMemberDefn.Inherit(_2, _3, mDecl) ) -//# 2308 "src/Compiler/pars.fsy" +//# 2301 "src/Compiler/pars.fsy" : 'gentype_inheritsDefn)); -//# 6971 "pars.fs" +//# 6967 "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 @@ -6977,150 +6973,150 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2312 "src/Compiler/pars.fsy" +//# 2305 "src/Compiler/pars.fsy" let mDecl = unionRanges (rhs parseState 1) _4.Range SynMemberDefn.ImplicitInherit(_2, _4, _5, mDecl) ) -//# 2312 "src/Compiler/pars.fsy" +//# 2305 "src/Compiler/pars.fsy" : 'gentype_inheritsDefn)); -//# 6986 "pars.fs" +//# 6982 "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 ( ( -//# 2316 "src/Compiler/pars.fsy" +//# 2309 "src/Compiler/pars.fsy" let mDecl = (rhs parseState 1) if not _2 then errorR (Error(FSComp.SR.parsTypeNameCannotBeEmpty (), mDecl)) SynMemberDefn.Inherit(SynType.LongIdent(SynLongIdent([], [], [])), None, mDecl) ) -//# 2316 "src/Compiler/pars.fsy" +//# 2309 "src/Compiler/pars.fsy" : 'gentype_inheritsDefn)); -//# 6999 "pars.fs" +//# 6995 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_asSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 2322 "src/Compiler/pars.fsy" +//# 2315 "src/Compiler/pars.fsy" Some(_1) ) -//# 2322 "src/Compiler/pars.fsy" +//# 2315 "src/Compiler/pars.fsy" : 'gentype_optAsSpec)); -//# 7010 "pars.fs" +//# 7006 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2325 "src/Compiler/pars.fsy" +//# 2318 "src/Compiler/pars.fsy" None ) -//# 2325 "src/Compiler/pars.fsy" +//# 2318 "src/Compiler/pars.fsy" : 'gentype_optAsSpec)); -//# 7020 "pars.fs" +//# 7016 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 2329 "src/Compiler/pars.fsy" +//# 2322 "src/Compiler/pars.fsy" rhs parseState 1, Some _2 ) -//# 2329 "src/Compiler/pars.fsy" +//# 2322 "src/Compiler/pars.fsy" : 'gentype_asSpec)); -//# 7031 "pars.fs" +//# 7027 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 2332 "src/Compiler/pars.fsy" +//# 2325 "src/Compiler/pars.fsy" rhs parseState 1, None ) -//# 2332 "src/Compiler/pars.fsy" +//# 2325 "src/Compiler/pars.fsy" : 'gentype_asSpec)); -//# 7042 "pars.fs" +//# 7038 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_baseSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 2336 "src/Compiler/pars.fsy" +//# 2329 "src/Compiler/pars.fsy" Some(_1) ) -//# 2336 "src/Compiler/pars.fsy" +//# 2329 "src/Compiler/pars.fsy" : 'gentype_optBaseSpec)); -//# 7053 "pars.fs" +//# 7049 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2339 "src/Compiler/pars.fsy" +//# 2332 "src/Compiler/pars.fsy" None ) -//# 2339 "src/Compiler/pars.fsy" +//# 2332 "src/Compiler/pars.fsy" : 'gentype_optBaseSpec)); -//# 7063 "pars.fs" +//# 7059 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 2343 "src/Compiler/pars.fsy" +//# 2336 "src/Compiler/pars.fsy" if (_2).idText <> "base" then errorR(Error(FSComp.SR.parsInheritDeclarationsCannotHaveAsBindings(), rhs2 parseState 1 2)) ident("base", rhs parseState 2) ) -//# 2343 "src/Compiler/pars.fsy" +//# 2336 "src/Compiler/pars.fsy" : 'gentype_baseSpec)); -//# 7076 "pars.fs" +//# 7072 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2348 "src/Compiler/pars.fsy" +//# 2341 "src/Compiler/pars.fsy" errorR(Error(FSComp.SR.parsInheritDeclarationsCannotHaveAsBindings(), rhs2 parseState 1 2)) ident("base", rhs parseState 2) ) -//# 2348 "src/Compiler/pars.fsy" +//# 2341 "src/Compiler/pars.fsy" : 'gentype_baseSpec)); -//# 7087 "pars.fs" +//# 7083 "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 ( ( -//# 2355 "src/Compiler/pars.fsy" +//# 2348 "src/Compiler/pars.fsy" _2 ) -//# 2355 "src/Compiler/pars.fsy" +//# 2348 "src/Compiler/pars.fsy" : 'gentype_objectImplementationBlock)); -//# 7099 "pars.fs" +//# 7095 "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 ( ( -//# 2358 "src/Compiler/pars.fsy" +//# 2351 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileObjectMembers()) _2 ) -//# 2358 "src/Compiler/pars.fsy" +//# 2351 "src/Compiler/pars.fsy" : 'gentype_objectImplementationBlock)); -//# 7112 "pars.fs" +//# 7108 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_objectImplementationMembers in Microsoft.FSharp.Core.Operators.box ( ( -//# 2362 "src/Compiler/pars.fsy" +//# 2355 "src/Compiler/pars.fsy" _1 ) -//# 2362 "src/Compiler/pars.fsy" +//# 2355 "src/Compiler/pars.fsy" : 'gentype_objectImplementationBlock)); -//# 7123 "pars.fs" +//# 7119 "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 @@ -7128,24 +7124,24 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2368 "src/Compiler/pars.fsy" +//# 2361 "src/Compiler/pars.fsy" _1 @ _3 ) -//# 2368 "src/Compiler/pars.fsy" +//# 2361 "src/Compiler/pars.fsy" : 'gentype_objectImplementationMembers)); -//# 7136 "pars.fs" +//# 7132 "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 ( ( -//# 2371 "src/Compiler/pars.fsy" +//# 2364 "src/Compiler/pars.fsy" _1 ) -//# 2371 "src/Compiler/pars.fsy" +//# 2364 "src/Compiler/pars.fsy" : 'gentype_objectImplementationMembers)); -//# 7148 "pars.fs" +//# 7144 "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 @@ -7154,13 +7150,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2377 "src/Compiler/pars.fsy" +//# 2370 "src/Compiler/pars.fsy" let rangeStart = rhs parseState 1 _3 None _2 _1 rangeStart ) -//# 2377 "src/Compiler/pars.fsy" +//# 2370 "src/Compiler/pars.fsy" : 'gentype_objectImplementationMember)); -//# 7163 "pars.fs" +//# 7159 "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 @@ -7169,25 +7165,25 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2381 "src/Compiler/pars.fsy" +//# 2374 "src/Compiler/pars.fsy" let rangeStart = rhs parseState 1 _3 _1 _2 rangeStart ) -//# 2381 "src/Compiler/pars.fsy" +//# 2374 "src/Compiler/pars.fsy" : 'gentype_objectImplementationMember)); -//# 7178 "pars.fs" +//# 7174 "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 Microsoft.FSharp.Core.Operators.box ( ( -//# 2385 "src/Compiler/pars.fsy" +//# 2378 "src/Compiler/pars.fsy" [] ) -//# 2385 "src/Compiler/pars.fsy" +//# 2378 "src/Compiler/pars.fsy" : 'gentype_objectImplementationMember)); -//# 7190 "pars.fs" +//# 7186 "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 @@ -7195,46 +7191,46 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2388 "src/Compiler/pars.fsy" +//# 2381 "src/Compiler/pars.fsy" [] ) -//# 2388 "src/Compiler/pars.fsy" +//# 2381 "src/Compiler/pars.fsy" : 'gentype_objectImplementationMember)); -//# 7203 "pars.fs" +//# 7199 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2393 "src/Compiler/pars.fsy" +//# 2386 "src/Compiler/pars.fsy" let mStatic = rhs parseState 1 let mMember = rhs parseState 2 ImplementStaticMemberFlags, (SynLeadingKeyword.StaticMember(mStatic, mMember)) ) -//# 2393 "src/Compiler/pars.fsy" +//# 2386 "src/Compiler/pars.fsy" : 'gentype_staticMemberOrMemberOrOverride)); -//# 7215 "pars.fs" +//# 7211 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2397 "src/Compiler/pars.fsy" +//# 2390 "src/Compiler/pars.fsy" let mMember = rhs parseState 1 OverrideMemberFlags, (SynLeadingKeyword.Member mMember) ) -//# 2397 "src/Compiler/pars.fsy" +//# 2390 "src/Compiler/pars.fsy" : 'gentype_staticMemberOrMemberOrOverride)); -//# 7226 "pars.fs" +//# 7222 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2400 "src/Compiler/pars.fsy" +//# 2393 "src/Compiler/pars.fsy" let mOverride = rhs parseState 1 OverrideMemberFlags, (SynLeadingKeyword.Override mOverride) ) -//# 2400 "src/Compiler/pars.fsy" +//# 2393 "src/Compiler/pars.fsy" : 'gentype_staticMemberOrMemberOrOverride)); -//# 7237 "pars.fs" +//# 7233 "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 @@ -7245,13 +7241,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2409 "src/Compiler/pars.fsy" +//# 2402 "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) ) -//# 2409 "src/Compiler/pars.fsy" +//# 2402 "src/Compiler/pars.fsy" : SynTypeDefnSimpleRepr)); -//# 7254 "pars.fs" +//# 7250 "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 @@ -7259,14 +7255,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2414 "src/Compiler/pars.fsy" +//# 2407 "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) ) -//# 2414 "src/Compiler/pars.fsy" +//# 2407 "src/Compiler/pars.fsy" : SynTypeDefnSimpleRepr)); -//# 7269 "pars.fs" +//# 7265 "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 @@ -7274,7 +7270,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2420 "src/Compiler/pars.fsy" +//# 2413 "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 @@ -7291,9 +7287,9 @@ let _fsyacc_reductions = lazy [| _3 |> List.choose (function Choice2Of2 data -> Some(data) | Choice1Of2 _ -> failwith "huh?"), mWhole) ) -//# 2420 "src/Compiler/pars.fsy" +//# 2413 "src/Compiler/pars.fsy" : SynTypeDefnSimpleRepr)); -//# 7296 "pars.fs" +//# 7292 "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 @@ -7301,13 +7297,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2438 "src/Compiler/pars.fsy" +//# 2431 "src/Compiler/pars.fsy" if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(), rhs parseState 1)) SynTypeDefnSimpleRepr.Record(_2, _3, lhs parseState) ) -//# 2438 "src/Compiler/pars.fsy" +//# 2431 "src/Compiler/pars.fsy" : SynTypeDefnSimpleRepr)); -//# 7310 "pars.fs" +//# 7306 "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 @@ -7316,7 +7312,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2443 "src/Compiler/pars.fsy" +//# 2436 "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 @@ -7325,9 +7321,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) ) -//# 2443 "src/Compiler/pars.fsy" +//# 2436 "src/Compiler/pars.fsy" : SynTypeDefnSimpleRepr)); -//# 7330 "pars.fs" +//# 7326 "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 @@ -7335,12 +7331,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2455 "src/Compiler/pars.fsy" +//# 2448 "src/Compiler/pars.fsy" _2 ) -//# 2455 "src/Compiler/pars.fsy" +//# 2448 "src/Compiler/pars.fsy" : 'gentype_braceFieldDeclList)); -//# 7343 "pars.fs" +//# 7339 "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 @@ -7348,145 +7344,158 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2458 "src/Compiler/pars.fsy" +//# 2451 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace()) _2 ) -//# 2458 "src/Compiler/pars.fsy" +//# 2451 "src/Compiler/pars.fsy" : 'gentype_braceFieldDeclList)); -//# 7357 "pars.fs" +//# 7353 "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 ( ( -//# 2462 "src/Compiler/pars.fsy" +//# 2455 "src/Compiler/pars.fsy" + [] + ) +//# 2455 "src/Compiler/pars.fsy" + : 'gentype_braceFieldDeclList)); +//# 7365 "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)) [] ) -//# 2462 "src/Compiler/pars.fsy" +//# 2458 "src/Compiler/pars.fsy" : 'gentype_braceFieldDeclList)); -//# 7369 "pars.fs" +//# 7378 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_braceBarFieldDeclListCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 2466 "src/Compiler/pars.fsy" +//# 2463 "src/Compiler/pars.fsy" _2, true ) -//# 2466 "src/Compiler/pars.fsy" +//# 2463 "src/Compiler/pars.fsy" : 'gentype_anonRecdType)); -//# 7380 "pars.fs" +//# 7389 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_braceBarFieldDeclListCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 2468 "src/Compiler/pars.fsy" +//# 2465 "src/Compiler/pars.fsy" _1, false ) -//# 2468 "src/Compiler/pars.fsy" +//# 2465 "src/Compiler/pars.fsy" : 'gentype_anonRecdType)); -//# 7391 "pars.fs" +//# 7400 "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 ( ( -//# 2473 "src/Compiler/pars.fsy" +//# 2470 "src/Compiler/pars.fsy" _2 ) -//# 2473 "src/Compiler/pars.fsy" +//# 2470 "src/Compiler/pars.fsy" : 'gentype_braceBarFieldDeclListCore)); -//# 7403 "pars.fs" +//# 7412 "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 ( ( -//# 2476 "src/Compiler/pars.fsy" +//# 2473 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar()) _2 ) -//# 2476 "src/Compiler/pars.fsy" +//# 2473 "src/Compiler/pars.fsy" : 'gentype_braceBarFieldDeclListCore)); -//# 7416 "pars.fs" +//# 7425 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_bar_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 2480 "src/Compiler/pars.fsy" +//# 2477 "src/Compiler/pars.fsy" [] ) -//# 2480 "src/Compiler/pars.fsy" +//# 2477 "src/Compiler/pars.fsy" : 'gentype_braceBarFieldDeclListCore)); -//# 7427 "pars.fs" +//# 7436 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2484 "src/Compiler/pars.fsy" +//# 2481 "src/Compiler/pars.fsy" SynTypeDefnKind.Class ) -//# 2484 "src/Compiler/pars.fsy" +//# 2481 "src/Compiler/pars.fsy" : 'gentype_classOrInterfaceOrStruct)); -//# 7437 "pars.fs" +//# 7446 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2487 "src/Compiler/pars.fsy" +//# 2484 "src/Compiler/pars.fsy" SynTypeDefnKind.Interface ) -//# 2487 "src/Compiler/pars.fsy" +//# 2484 "src/Compiler/pars.fsy" : 'gentype_classOrInterfaceOrStruct)); -//# 7447 "pars.fs" +//# 7456 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2490 "src/Compiler/pars.fsy" +//# 2487 "src/Compiler/pars.fsy" SynTypeDefnKind.Struct ) -//# 2490 "src/Compiler/pars.fsy" +//# 2487 "src/Compiler/pars.fsy" : 'gentype_classOrInterfaceOrStruct)); -//# 7457 "pars.fs" +//# 7466 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2493 "src/Compiler/pars.fsy" +//# 2490 "src/Compiler/pars.fsy" ) -//# 2493 "src/Compiler/pars.fsy" +//# 2490 "src/Compiler/pars.fsy" : 'gentype_interfaceMember)); -//# 7467 "pars.fs" +//# 7476 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2494 "src/Compiler/pars.fsy" +//# 2491 "src/Compiler/pars.fsy" ) -//# 2494 "src/Compiler/pars.fsy" +//# 2491 "src/Compiler/pars.fsy" : 'gentype_interfaceMember)); -//# 7477 "pars.fs" +//# 7486 "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 ( ( -//# 2498 "src/Compiler/pars.fsy" +//# 2495 "src/Compiler/pars.fsy" None, _2.LongIdent, false, _1 ) -//# 2498 "src/Compiler/pars.fsy" +//# 2495 "src/Compiler/pars.fsy" : 'gentype_tyconNameAndTyparDecls)); -//# 7489 "pars.fs" +//# 7498 "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 @@ -7494,12 +7503,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2501 "src/Compiler/pars.fsy" +//# 2498 "src/Compiler/pars.fsy" Some _2, _3.LongIdent, false, _1 ) -//# 2501 "src/Compiler/pars.fsy" +//# 2498 "src/Compiler/pars.fsy" : 'gentype_tyconNameAndTyparDecls)); -//# 7502 "pars.fs" +//# 7511 "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 @@ -7507,82 +7516,82 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2504 "src/Compiler/pars.fsy" +//# 2501 "src/Compiler/pars.fsy" Some _3, _2.LongIdent, true, _1 ) -//# 2504 "src/Compiler/pars.fsy" +//# 2501 "src/Compiler/pars.fsy" : 'gentype_tyconNameAndTyparDecls)); -//# 7515 "pars.fs" +//# 7524 "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 ( ( -//# 2507 "src/Compiler/pars.fsy" +//# 2504 "src/Compiler/pars.fsy" None, [], false, _1 ) -//# 2507 "src/Compiler/pars.fsy" +//# 2504 "src/Compiler/pars.fsy" : 'gentype_tyconNameAndTyparDecls)); -//# 7527 "pars.fs" +//# 7536 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 2511 "src/Compiler/pars.fsy" +//# 2508 "src/Compiler/pars.fsy" SynTyparDecls.SinglePrefix(SynTyparDecl([], _1, [], SynTyparDeclTrivia.Zero), rhs parseState 1) ) -//# 2511 "src/Compiler/pars.fsy" +//# 2508 "src/Compiler/pars.fsy" : 'gentype_prefixTyparDecls)); -//# 7538 "pars.fs" +//# 7547 "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 ( ( -//# 2514 "src/Compiler/pars.fsy" +//# 2511 "src/Compiler/pars.fsy" SynTyparDecls.PrefixList(List.rev _2, rhs2 parseState 1 3) ) -//# 2514 "src/Compiler/pars.fsy" +//# 2511 "src/Compiler/pars.fsy" : 'gentype_prefixTyparDecls)); -//# 7550 "pars.fs" +//# 7559 "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 ( ( -//# 2517 "src/Compiler/pars.fsy" +//# 2514 "src/Compiler/pars.fsy" _3 :: _1 ) -//# 2517 "src/Compiler/pars.fsy" +//# 2514 "src/Compiler/pars.fsy" : 'gentype_typarDeclList)); -//# 7562 "pars.fs" +//# 7571 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typarDecl in Microsoft.FSharp.Core.Operators.box ( ( -//# 2518 "src/Compiler/pars.fsy" +//# 2515 "src/Compiler/pars.fsy" [_1] ) -//# 2518 "src/Compiler/pars.fsy" +//# 2515 "src/Compiler/pars.fsy" : 'gentype_typarDeclList)); -//# 7573 "pars.fs" +//# 7582 "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 ( ( -//# 2522 "src/Compiler/pars.fsy" +//# 2519 "src/Compiler/pars.fsy" SynTyparDecl(_1, _2, [], SynTyparDeclTrivia.Zero) ) -//# 2522 "src/Compiler/pars.fsy" +//# 2519 "src/Compiler/pars.fsy" : 'gentype_typarDecl)); -//# 7585 "pars.fs" +//# 7594 "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 @@ -7590,14 +7599,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2525 "src/Compiler/pars.fsy" +//# 2522 "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 }) ) -//# 2525 "src/Compiler/pars.fsy" +//# 2522 "src/Compiler/pars.fsy" : 'gentype_typarDecl)); -//# 7600 "pars.fs" +//# 7609 "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 @@ -7607,46 +7616,46 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2533 "src/Compiler/pars.fsy" +//# 2530 "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) ) -//# 2533 "src/Compiler/pars.fsy" +//# 2530 "src/Compiler/pars.fsy" : 'gentype_postfixTyparDecls)); -//# 7617 "pars.fs" +//# 7626 "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" +//# 2538 "src/Compiler/pars.fsy" (List.rev _1, true) ) -//# 2541 "src/Compiler/pars.fsy" +//# 2538 "src/Compiler/pars.fsy" : 'gentype_explicitValTyparDeclsCore)); -//# 7628 "pars.fs" +//# 7637 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typarDeclList in Microsoft.FSharp.Core.Operators.box ( ( -//# 2544 "src/Compiler/pars.fsy" +//# 2541 "src/Compiler/pars.fsy" (List.rev _1, false) ) -//# 2544 "src/Compiler/pars.fsy" +//# 2541 "src/Compiler/pars.fsy" : 'gentype_explicitValTyparDeclsCore)); -//# 7639 "pars.fs" +//# 7648 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2547 "src/Compiler/pars.fsy" +//# 2544 "src/Compiler/pars.fsy" ([], false) ) -//# 2547 "src/Compiler/pars.fsy" +//# 2544 "src/Compiler/pars.fsy" : 'gentype_explicitValTyparDeclsCore)); -//# 7649 "pars.fs" +//# 7658 "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 @@ -7656,171 +7665,171 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2551 "src/Compiler/pars.fsy" +//# 2548 "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) ) -//# 2551 "src/Compiler/pars.fsy" +//# 2548 "src/Compiler/pars.fsy" : 'gentype_explicitValTyparDecls)); -//# 7668 "pars.fs" +//# 7677 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_explicitValTyparDecls in Microsoft.FSharp.Core.Operators.box ( ( -//# 2559 "src/Compiler/pars.fsy" +//# 2556 "src/Compiler/pars.fsy" _1 ) -//# 2559 "src/Compiler/pars.fsy" +//# 2556 "src/Compiler/pars.fsy" : 'gentype_opt_explicitValTyparDecls)); -//# 7679 "pars.fs" +//# 7688 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2561 "src/Compiler/pars.fsy" +//# 2558 "src/Compiler/pars.fsy" SynValTyparDecls(None, true) ) -//# 2561 "src/Compiler/pars.fsy" +//# 2558 "src/Compiler/pars.fsy" : 'gentype_opt_explicitValTyparDecls)); -//# 7689 "pars.fs" +//# 7698 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2567 "src/Compiler/pars.fsy" +//# 2564 "src/Compiler/pars.fsy" [] ) -//# 2567 "src/Compiler/pars.fsy" +//# 2564 "src/Compiler/pars.fsy" : 'gentype_opt_typeConstraints)); -//# 7699 "pars.fs" +//# 7708 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typeConstraints in Microsoft.FSharp.Core.Operators.box ( ( -//# 2570 "src/Compiler/pars.fsy" +//# 2567 "src/Compiler/pars.fsy" List.rev _2 ) -//# 2570 "src/Compiler/pars.fsy" +//# 2567 "src/Compiler/pars.fsy" : 'gentype_opt_typeConstraints)); -//# 7710 "pars.fs" +//# 7719 "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 ( ( -//# 2576 "src/Compiler/pars.fsy" +//# 2573 "src/Compiler/pars.fsy" _3 :: _1 ) -//# 2576 "src/Compiler/pars.fsy" +//# 2573 "src/Compiler/pars.fsy" : 'gentype_typeConstraints)); -//# 7722 "pars.fs" +//# 7731 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeConstraint in Microsoft.FSharp.Core.Operators.box ( ( -//# 2579 "src/Compiler/pars.fsy" +//# 2576 "src/Compiler/pars.fsy" [_1] ) -//# 2579 "src/Compiler/pars.fsy" +//# 2576 "src/Compiler/pars.fsy" : 'gentype_typeConstraints)); -//# 7733 "pars.fs" +//# 7742 "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 ( ( -//# 2585 "src/Compiler/pars.fsy" +//# 2582 "src/Compiler/pars.fsy" let constraints, mAmpersands = _1 match _3 with | SynType.HashConstraint _ -> () | ty -> errorR(Error(FSComp.SR.parsConstraintIntersectionSyntaxUsedWithNonFlexibleType(), ty.Range)) (_3 :: constraints), (rhs parseState 2 :: mAmpersands) ) -//# 2585 "src/Compiler/pars.fsy" +//# 2582 "src/Compiler/pars.fsy" : 'gentype_intersectionConstraints)); -//# 7749 "pars.fs" +//# 7758 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2594 "src/Compiler/pars.fsy" +//# 2591 "src/Compiler/pars.fsy" match _1 with | SynType.HashConstraint _ -> () | ty -> errorR(Error(FSComp.SR.parsConstraintIntersectionSyntaxUsedWithNonFlexibleType(), ty.Range)) [ _1 ], [] ) -//# 2594 "src/Compiler/pars.fsy" +//# 2591 "src/Compiler/pars.fsy" : 'gentype_intersectionConstraints)); -//# 7763 "pars.fs" +//# 7772 "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 ( ( -//# 2604 "src/Compiler/pars.fsy" +//# 2601 "src/Compiler/pars.fsy" if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyError (lhs parseState) SynTypeConstraint.WhereTyparDefaultsToType(_2, _4, lhs parseState) ) -//# 2604 "src/Compiler/pars.fsy" +//# 2601 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7776 "pars.fs" +//# 7785 "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 ( ( -//# 2608 "src/Compiler/pars.fsy" +//# 2605 "src/Compiler/pars.fsy" SynTypeConstraint.WhereTyparSubtypeOfType(_1, _3, lhs parseState) ) -//# 2608 "src/Compiler/pars.fsy" +//# 2605 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7788 "pars.fs" +//# 7797 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 2611 "src/Compiler/pars.fsy" +//# 2608 "src/Compiler/pars.fsy" SynTypeConstraint.WhereTyparIsValueType(_1, lhs parseState) ) -//# 2611 "src/Compiler/pars.fsy" +//# 2608 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7799 "pars.fs" +//# 7808 "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 ( ( -//# 2614 "src/Compiler/pars.fsy" +//# 2611 "src/Compiler/pars.fsy" if _3 <> "not" then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(_3)) SynTypeConstraint.WhereTyparIsReferenceType(_1, lhs parseState) ) -//# 2614 "src/Compiler/pars.fsy" +//# 2611 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7812 "pars.fs" +//# 7821 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 2618 "src/Compiler/pars.fsy" +//# 2615 "src/Compiler/pars.fsy" SynTypeConstraint.WhereTyparSupportsNull(_1, lhs parseState) ) -//# 2618 "src/Compiler/pars.fsy" +//# 2615 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7823 "pars.fs" +//# 7832 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in let _4 = parseState.GetInput(4) :?> 'gentype_classMemberSpfn in @@ -7828,13 +7837,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2621 "src/Compiler/pars.fsy" +//# 2618 "src/Compiler/pars.fsy" let tp = _1 SynTypeConstraint.WhereTyparSupportsMember(SynType.Var(tp, tp.Range), _4, lhs parseState) ) -//# 2621 "src/Compiler/pars.fsy" +//# 2618 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7837 "pars.fs" +//# 7846 "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 @@ -7843,27 +7852,27 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2625 "src/Compiler/pars.fsy" +//# 2622 "src/Compiler/pars.fsy" let mParen = rhs2 parseState 1 3 let t = SynType.Paren(_2, mParen) SynTypeConstraint.WhereTyparSupportsMember(t, _6, lhs parseState) ) -//# 2625 "src/Compiler/pars.fsy" +//# 2622 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7853 "pars.fs" +//# 7862 "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 ( ( -//# 2630 "src/Compiler/pars.fsy" +//# 2627 "src/Compiler/pars.fsy" let _ltm, _gtm, args, _commas, mWhole = _4 SynTypeConstraint.WhereTyparIsDelegate(_1, args, unionRanges _1.Range mWhole) ) -//# 2630 "src/Compiler/pars.fsy" +//# 2627 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7866 "pars.fs" +//# 7875 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in let _3 = parseState.GetInput(3) :?> string in @@ -7871,80 +7880,80 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2634 "src/Compiler/pars.fsy" +//# 2631 "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)) ) -//# 2634 "src/Compiler/pars.fsy" +//# 2631 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7883 "pars.fs" +//# 7892 "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 ( ( -//# 2641 "src/Compiler/pars.fsy" +//# 2638 "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)) ) -//# 2641 "src/Compiler/pars.fsy" +//# 2638 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7899 "pars.fs" +//# 7908 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2648 "src/Compiler/pars.fsy" +//# 2645 "src/Compiler/pars.fsy" SynTypeConstraint.WhereSelfConstrained(_1, lhs parseState) ) -//# 2648 "src/Compiler/pars.fsy" +//# 2645 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7910 "pars.fs" +//# 7919 "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 Microsoft.FSharp.Core.Operators.box ( ( -//# 2652 "src/Compiler/pars.fsy" +//# 2649 "src/Compiler/pars.fsy" let mOr = rhs parseState 2 let m = unionRanges _1.Range _3.Range SynType.Or(_1, _3, m, { OrKeyword = mOr }) ) -//# 2652 "src/Compiler/pars.fsy" +//# 2649 "src/Compiler/pars.fsy" : 'gentype_typeAlts)); -//# 7924 "pars.fs" +//# 7933 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2657 "src/Compiler/pars.fsy" +//# 2654 "src/Compiler/pars.fsy" _1 ) -//# 2657 "src/Compiler/pars.fsy" +//# 2654 "src/Compiler/pars.fsy" : 'gentype_typeAlts)); -//# 7935 "pars.fs" +//# 7944 "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 ( ( -//# 2664 "src/Compiler/pars.fsy" +//# 2661 "src/Compiler/pars.fsy" _2 _1 ) -//# 2664 "src/Compiler/pars.fsy" +//# 2661 "src/Compiler/pars.fsy" : Choice list)); -//# 7947 "pars.fs" +//# 7956 "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 @@ -7952,34 +7961,34 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2667 "src/Compiler/pars.fsy" +//# 2664 "src/Compiler/pars.fsy" _1 :: _3 _2 ) -//# 2667 "src/Compiler/pars.fsy" +//# 2664 "src/Compiler/pars.fsy" : Choice list)); -//# 7960 "pars.fs" +//# 7969 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_firstUnionCaseDecl in Microsoft.FSharp.Core.Operators.box ( ( -//# 2670 "src/Compiler/pars.fsy" +//# 2667 "src/Compiler/pars.fsy" [_1] ) -//# 2670 "src/Compiler/pars.fsy" +//# 2667 "src/Compiler/pars.fsy" : Choice list)); -//# 7971 "pars.fs" +//# 7980 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2674 "src/Compiler/pars.fsy" +//# 2671 "src/Compiler/pars.fsy" let mBar = rhs parseState 1 grabXmlDoc(parseState, [], 1), mBar ) -//# 2674 "src/Compiler/pars.fsy" +//# 2671 "src/Compiler/pars.fsy" : 'gentype_barAndgrabXmlDoc)); -//# 7982 "pars.fs" +//# 7991 "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 @@ -7987,23 +7996,23 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2679 "src/Compiler/pars.fsy" +//# 2676 "src/Compiler/pars.fsy" (fun xmlDocAndBar -> _1 xmlDocAndBar :: _3 _2) ) -//# 2679 "src/Compiler/pars.fsy" +//# 2676 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecls)); -//# 7995 "pars.fs" +//# 8004 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attrUnionCaseDecl in Microsoft.FSharp.Core.Operators.box ( ( -//# 2682 "src/Compiler/pars.fsy" +//# 2679 "src/Compiler/pars.fsy" (fun xmlDocAndBar -> [ _1 xmlDocAndBar ]) ) -//# 2682 "src/Compiler/pars.fsy" +//# 2679 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecls)); -//# 8006 "pars.fs" +//# 8015 "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 @@ -8011,12 +8020,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2687 "src/Compiler/pars.fsy" +//# 2684 "src/Compiler/pars.fsy" mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields []) (rhs2 parseState 1 3) >> Choice2Of2 ) -//# 2687 "src/Compiler/pars.fsy" +//# 2684 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 8019 "pars.fs" +//# 8028 "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 @@ -8024,12 +8033,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2690 "src/Compiler/pars.fsy" +//# 2687 "src/Compiler/pars.fsy" fun (xmlDoc, mBar) -> mkSynUnionCase _1 _2 (SynIdent(mkSynId mBar.EndRange "", None)) (SynUnionCaseKind.Fields []) mBar (xmlDoc, mBar) |> Choice2Of2 ) -//# 2690 "src/Compiler/pars.fsy" +//# 2687 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 8032 "pars.fs" +//# 8041 "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 @@ -8038,12 +8047,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2693 "src/Compiler/pars.fsy" +//# 2690 "src/Compiler/pars.fsy" mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields _5) (rhs2 parseState 1 5) >> Choice2Of2 ) -//# 2693 "src/Compiler/pars.fsy" +//# 2690 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 8046 "pars.fs" +//# 8055 "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 @@ -8052,13 +8061,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2696 "src/Compiler/pars.fsy" +//# 2693 "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 ) -//# 2696 "src/Compiler/pars.fsy" +//# 2693 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 8061 "pars.fs" +//# 8070 "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 @@ -8066,15 +8075,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2700 "src/Compiler/pars.fsy" +//# 2697 "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 _4) (rhs2 parseState 1 4) >> Choice2Of2 ) -//# 2700 "src/Compiler/pars.fsy" +//# 2697 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 8077 "pars.fs" +//# 8086 "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 @@ -8082,15 +8091,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2706 "src/Compiler/pars.fsy" +//# 2703 "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 ) -//# 2706 "src/Compiler/pars.fsy" +//# 2703 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 8093 "pars.fs" +//# 8102 "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 @@ -8099,12 +8108,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2712 "src/Compiler/pars.fsy" +//# 2709 "src/Compiler/pars.fsy" mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields []) (rhs2 parseState 1 4) >> Choice2Of2 ) -//# 2712 "src/Compiler/pars.fsy" +//# 2709 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 8107 "pars.fs" +//# 8116 "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 @@ -8113,13 +8122,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2715 "src/Compiler/pars.fsy" +//# 2712 "src/Compiler/pars.fsy" if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyWarning(lhs parseState) mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.FullType _5) (rhs2 parseState 1 5) >> Choice2Of2 ) -//# 2715 "src/Compiler/pars.fsy" +//# 2712 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 8122 "pars.fs" +//# 8131 "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 @@ -8128,7 +8137,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2719 "src/Compiler/pars.fsy" +//# 2716 "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 @@ -8137,61 +8146,61 @@ let _fsyacc_reductions = lazy [| let mDecl = unionRangeWithXmlDoc xmlDoc mDecl Choice1Of2 (SynEnumCase (_1, _3, fst _5, xmlDoc, mDecl, trivia))) ) -//# 2719 "src/Compiler/pars.fsy" +//# 2716 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 8142 "pars.fs" +//# 8151 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_nameop in Microsoft.FSharp.Core.Operators.box ( ( -//# 2730 "src/Compiler/pars.fsy" +//# 2727 "src/Compiler/pars.fsy" _1 ) -//# 2730 "src/Compiler/pars.fsy" +//# 2727 "src/Compiler/pars.fsy" : 'gentype_unionCaseName)); -//# 8153 "pars.fs" +//# 8162 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 2733 "src/Compiler/pars.fsy" +//# 2730 "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))) ) -//# 2733 "src/Compiler/pars.fsy" +//# 2730 "src/Compiler/pars.fsy" : 'gentype_unionCaseName)); -//# 8166 "pars.fs" +//# 8175 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _4 = parseState.GetInput(4) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 2738 "src/Compiler/pars.fsy" +//# 2735 "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))) ) -//# 2738 "src/Compiler/pars.fsy" +//# 2735 "src/Compiler/pars.fsy" : 'gentype_unionCaseName)); -//# 8179 "pars.fs" +//# 8188 "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 ( ( -//# 2744 "src/Compiler/pars.fsy" +//# 2741 "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)) ) -//# 2744 "src/Compiler/pars.fsy" +//# 2741 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDeclOfMany)); -//# 8194 "pars.fs" +//# 8203 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> SynExpr * bool in @@ -8199,64 +8208,64 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2750 "src/Compiler/pars.fsy" +//# 2747 "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)) ) -//# 2750 "src/Compiler/pars.fsy" +//# 2747 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDeclOfMany)); -//# 8211 "pars.fs" +//# 8220 "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 ( ( -//# 2757 "src/Compiler/pars.fsy" +//# 2754 "src/Compiler/pars.fsy" _1 ) -//# 2757 "src/Compiler/pars.fsy" +//# 2754 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDeclOfMany)); -//# 8223 "pars.fs" +//# 8232 "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 ( ( -//# 2761 "src/Compiler/pars.fsy" +//# 2758 "src/Compiler/pars.fsy" 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)) ) -//# 2761 "src/Compiler/pars.fsy" +//# 2758 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDecl)); -//# 8238 "pars.fs" +//# 8247 "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 ( ( -//# 2767 "src/Compiler/pars.fsy" +//# 2764 "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)) ) -//# 2767 "src/Compiler/pars.fsy" +//# 2764 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDecl)); -//# 8253 "pars.fs" +//# 8262 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_unionCaseRepr in Microsoft.FSharp.Core.Operators.box ( ( -//# 2773 "src/Compiler/pars.fsy" +//# 2770 "src/Compiler/pars.fsy" let mOf = rhs parseState 1 let mId = mOf.StartRange errorR (Error(FSComp.SR.parsMissingUnionCaseName(), mOf)) @@ -8266,9 +8275,9 @@ let _fsyacc_reductions = lazy [| let mDecl = rhs2 parseState 1 2 |> unionRangeWithXmlDoc xmlDoc Choice2Of2(SynUnionCase([], id, SynUnionCaseKind.Fields _2, xmlDoc, None, mDecl, trivia)) ) -//# 2773 "src/Compiler/pars.fsy" +//# 2770 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDecl)); -//# 8271 "pars.fs" +//# 8280 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> SynExpr * bool in @@ -8276,116 +8285,116 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2783 "src/Compiler/pars.fsy" +//# 2780 "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)) ) -//# 2783 "src/Compiler/pars.fsy" +//# 2780 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDecl)); -//# 8288 "pars.fs" +//# 8297 "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 ( ( -//# 2791 "src/Compiler/pars.fsy" +//# 2788 "src/Compiler/pars.fsy" _1 :: _3 ) -//# 2791 "src/Compiler/pars.fsy" +//# 2788 "src/Compiler/pars.fsy" : 'gentype_unionCaseReprElements)); -//# 8300 "pars.fs" +//# 8309 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_unionCaseReprElement in Microsoft.FSharp.Core.Operators.box ( ( -//# 2794 "src/Compiler/pars.fsy" +//# 2791 "src/Compiler/pars.fsy" [_1] ) -//# 2794 "src/Compiler/pars.fsy" +//# 2791 "src/Compiler/pars.fsy" : 'gentype_unionCaseReprElements)); -//# 8311 "pars.fs" +//# 8320 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2798 "src/Compiler/pars.fsy" +//# 2795 "src/Compiler/pars.fsy" let xmlDoc = grabXmlDoc(parseState, [], 1) let mWhole = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc mkSynNamedField (_1, _3, xmlDoc, mWhole) ) -//# 2798 "src/Compiler/pars.fsy" +//# 2795 "src/Compiler/pars.fsy" : 'gentype_unionCaseReprElement)); -//# 8325 "pars.fs" +//# 8334 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2803 "src/Compiler/pars.fsy" +//# 2800 "src/Compiler/pars.fsy" let xmlDoc = grabXmlDoc(parseState, [], 1) mkSynAnonField (_1, xmlDoc) ) -//# 2803 "src/Compiler/pars.fsy" +//# 2800 "src/Compiler/pars.fsy" : 'gentype_unionCaseReprElement)); -//# 8337 "pars.fs" +//# 8346 "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 ( ( -//# 2807 "src/Compiler/pars.fsy" +//# 2804 "src/Compiler/pars.fsy" let xmlDoc = grabXmlDoc(parseState, [], 1) let mWhole = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc reportParseErrorAt (_3 : SynType).Range (FSComp.SR.tcUnexpectedFunTypeInUnionCaseField()) mkSynNamedField (_1, _3, xmlDoc, mWhole) ) -//# 2807 "src/Compiler/pars.fsy" +//# 2804 "src/Compiler/pars.fsy" : 'gentype_unionCaseReprElement)); -//# 8352 "pars.fs" +//# 8361 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_invalidUseOfAppTypeFunction in Microsoft.FSharp.Core.Operators.box ( ( -//# 2813 "src/Compiler/pars.fsy" +//# 2810 "src/Compiler/pars.fsy" let xmlDoc = grabXmlDoc(parseState, [], 1) reportParseErrorAt (_1 : SynType).Range (FSComp.SR.tcUnexpectedFunTypeInUnionCaseField()) mkSynAnonField (_1, xmlDoc) ) -//# 2813 "src/Compiler/pars.fsy" +//# 2810 "src/Compiler/pars.fsy" : 'gentype_unionCaseReprElement)); -//# 8365 "pars.fs" +//# 8374 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_braceFieldDeclList in Microsoft.FSharp.Core.Operators.box ( ( -//# 2819 "src/Compiler/pars.fsy" +//# 2816 "src/Compiler/pars.fsy" errorR(Deprecated(FSComp.SR.parsConsiderUsingSeparateRecordType(), lhs parseState)) _1 ) -//# 2819 "src/Compiler/pars.fsy" +//# 2816 "src/Compiler/pars.fsy" : 'gentype_unionCaseRepr)); -//# 8377 "pars.fs" +//# 8386 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_unionCaseReprElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 2823 "src/Compiler/pars.fsy" +//# 2820 "src/Compiler/pars.fsy" _1 ) -//# 2823 "src/Compiler/pars.fsy" +//# 2820 "src/Compiler/pars.fsy" : 'gentype_unionCaseRepr)); -//# 8388 "pars.fs" +//# 8397 "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 @@ -8393,41 +8402,41 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2828 "src/Compiler/pars.fsy" +//# 2825 "src/Compiler/pars.fsy" _1 :: _3 ) -//# 2828 "src/Compiler/pars.fsy" +//# 2825 "src/Compiler/pars.fsy" : 'gentype_recdFieldDeclList)); -//# 8401 "pars.fs" +//# 8410 "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 ( ( -//# 2831 "src/Compiler/pars.fsy" +//# 2828 "src/Compiler/pars.fsy" [_1] ) -//# 2831 "src/Compiler/pars.fsy" +//# 2828 "src/Compiler/pars.fsy" : 'gentype_recdFieldDeclList)); -//# 8413 "pars.fs" +//# 8422 "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 ( ( -//# 2836 "src/Compiler/pars.fsy" - let mWhole = rhs2 parseState 1 2 - let fld = _2 _1 false mWhole None +//# 2833 "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 if Option.isSome vis then errorR (Error (FSComp.SR.parsRecordFieldsCannotHaveVisibilityDeclarations (), rhs parseState 2)) let mWhole = unionRangeWithXmlDoc xmlDoc mWhole SynField (a, b, c, d, e, xmlDoc, None, mWhole, trivia) ) -//# 2836 "src/Compiler/pars.fsy" +//# 2833 "src/Compiler/pars.fsy" : 'gentype_recdFieldDecl)); -//# 8430 "pars.fs" +//# 8439 "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 @@ -8436,12 +8445,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2846 "src/Compiler/pars.fsy" - mkSynField parseState (Some _3) _5 _1 _2 +//# 2843 "src/Compiler/pars.fsy" + mkSynField parseState (Some _3) (Some _5) _1 _2 ) -//# 2846 "src/Compiler/pars.fsy" +//# 2843 "src/Compiler/pars.fsy" : 'gentype_fieldDecl)); -//# 8444 "pars.fs" +//# 8453 "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 @@ -8450,14 +8459,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2848 "src/Compiler/pars.fsy" +//# 2846 "src/Compiler/pars.fsy" let mColon = rhs parseState 4 let t = SynType.FromParseError(mColon.EndRange) - mkSynField parseState (Some _3) t _1 _2 + mkSynField parseState (Some _3) (Some t) _1 _2 ) -//# 2848 "src/Compiler/pars.fsy" +//# 2846 "src/Compiler/pars.fsy" : 'gentype_fieldDecl)); -//# 8460 "pars.fs" +//# 8469 "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 @@ -8466,26 +8475,39 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2852 "src/Compiler/pars.fsy" +//# 2851 "src/Compiler/pars.fsy" let t = SynType.FromParseError(_3.idRange.EndRange) - mkSynField parseState (Some _3) t _1 _2 + mkSynField parseState (Some _3) (Some t) _1 _2 + ) +//# 2851 "src/Compiler/pars.fsy" + : 'gentype_fieldDecl)); +//# 8484 "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 + let _3 = parseState.GetInput(3) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2855 "src/Compiler/pars.fsy" + mkSynField parseState None None _1 _2 ) -//# 2852 "src/Compiler/pars.fsy" +//# 2855 "src/Compiler/pars.fsy" : 'gentype_fieldDecl)); -//# 8475 "pars.fs" +//# 8497 "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 ( ( -//# 2858 "src/Compiler/pars.fsy" +//# 2860 "src/Compiler/pars.fsy" let mWith, optClassDefn = _2 SynExceptionDefn(_1, mWith, optClassDefn, (_1.Range, optClassDefn) ||> unionRangeWithListBy (fun cd -> cd.Range)) ) -//# 2858 "src/Compiler/pars.fsy" +//# 2860 "src/Compiler/pars.fsy" : SynExceptionDefn)); -//# 8488 "pars.fs" +//# 8510 "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 @@ -8494,16 +8516,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2864 "src/Compiler/pars.fsy" +//# 2866 "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) ) -//# 2864 "src/Compiler/pars.fsy" +//# 2866 "src/Compiler/pars.fsy" : SynExceptionDefnRepr)); -//# 8506 "pars.fs" +//# 8528 "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 @@ -8511,7 +8533,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2871 "src/Compiler/pars.fsy" +//# 2873 "src/Compiler/pars.fsy" let m = match _3 with | Some access -> unionRanges (rhs parseState 1) access.Range @@ -8523,65 +8545,65 @@ let _fsyacc_reductions = lazy [| let unionCase = SynUnionCase([], id, SynUnionCaseKind.Fields [], PreXmlDoc.Empty, None, m, { BarRange = None }) SynExceptionDefnRepr(_2, unionCase, None, PreXmlDoc.Empty, _3, m) ) -//# 2871 "src/Compiler/pars.fsy" +//# 2873 "src/Compiler/pars.fsy" : SynExceptionDefnRepr)); -//# 8528 "pars.fs" +//# 8550 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 2888 "src/Compiler/pars.fsy" +//# 2890 "src/Compiler/pars.fsy" SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields [], PreXmlDoc.Empty, None, lhs parseState, { BarRange = None }) ) -//# 2888 "src/Compiler/pars.fsy" +//# 2890 "src/Compiler/pars.fsy" : 'gentype_exconIntro)); -//# 8539 "pars.fs" +//# 8561 "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 ( ( -//# 2891 "src/Compiler/pars.fsy" +//# 2893 "src/Compiler/pars.fsy" SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields _3, PreXmlDoc.Empty, None, lhs parseState, { BarRange = None }) ) -//# 2891 "src/Compiler/pars.fsy" +//# 2893 "src/Compiler/pars.fsy" : 'gentype_exconIntro)); -//# 8551 "pars.fs" +//# 8573 "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 ( ( -//# 2894 "src/Compiler/pars.fsy" +//# 2896 "src/Compiler/pars.fsy" SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields [], PreXmlDoc.Empty, None, lhs parseState, { BarRange = None }) ) -//# 2894 "src/Compiler/pars.fsy" +//# 2896 "src/Compiler/pars.fsy" : 'gentype_exconIntro)); -//# 8563 "pars.fs" +//# 8585 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2898 "src/Compiler/pars.fsy" +//# 2900 "src/Compiler/pars.fsy" None ) -//# 2898 "src/Compiler/pars.fsy" +//# 2900 "src/Compiler/pars.fsy" : 'gentype_exconRepr)); -//# 8573 "pars.fs" +//# 8595 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 2901 "src/Compiler/pars.fsy" +//# 2903 "src/Compiler/pars.fsy" Some(_2.LongIdent) ) -//# 2901 "src/Compiler/pars.fsy" +//# 2903 "src/Compiler/pars.fsy" : 'gentype_exconRepr)); -//# 8584 "pars.fs" +//# 8606 "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 @@ -8589,7 +8611,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2909 "src/Compiler/pars.fsy" +//# 2911 "src/Compiler/pars.fsy" let mLetKwd = rhs parseState 1 let isUse = _1 let isRec = _2 @@ -8615,36 +8637,36 @@ let _fsyacc_reductions = lazy [| [], binds), bindingSetRange) ) -//# 2909 "src/Compiler/pars.fsy" +//# 2911 "src/Compiler/pars.fsy" : 'gentype_defnBindings)); -//# 8620 "pars.fs" +//# 8642 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_cPrototype in Microsoft.FSharp.Core.Operators.box ( ( -//# 2938 "src/Compiler/pars.fsy" +//# 2940 "src/Compiler/pars.fsy" let bindRange = lhs parseState BindingSetPreAttrs(bindRange, false, false, _1, bindRange) ) -//# 2938 "src/Compiler/pars.fsy" +//# 2940 "src/Compiler/pars.fsy" : 'gentype_defnBindings)); -//# 8632 "pars.fs" +//# 8654 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 2945 "src/Compiler/pars.fsy" +//# 2947 "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) ) -//# 2945 "src/Compiler/pars.fsy" +//# 2947 "src/Compiler/pars.fsy" : 'gentype_doBinding)); -//# 8647 "pars.fs" +//# 8669 "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 @@ -8653,7 +8675,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2955 "src/Compiler/pars.fsy" +//# 2957 "src/Compiler/pars.fsy" let mLetKwd = rhs parseState 1 let isUse = _1 let isRec = _2 @@ -8686,16 +8708,16 @@ let _fsyacc_reductions = lazy [| (unionRanges mLetKwd bindingSetRange), mIn ) -//# 2955 "src/Compiler/pars.fsy" +//# 2957 "src/Compiler/pars.fsy" : 'gentype_hardwhiteLetBindings)); -//# 8691 "pars.fs" +//# 8713 "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 ( ( -//# 2995 "src/Compiler/pars.fsy" +//# 2997 "src/Compiler/pars.fsy" let mDo = rhs parseState 1 let _, _, mDone = _3 let mAll = unionRanges mDo _2.Range @@ -8704,89 +8726,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 ) -//# 2995 "src/Compiler/pars.fsy" +//# 2997 "src/Compiler/pars.fsy" : 'gentype_hardwhiteDoBinding)); -//# 8709 "pars.fs" +//# 8731 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 3004 "src/Compiler/pars.fsy" +//# 3006 "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 ) -//# 3004 "src/Compiler/pars.fsy" +//# 3006 "src/Compiler/pars.fsy" : 'gentype_hardwhiteDoBinding)); -//# 8724 "pars.fs" +//# 8746 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_defnBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 3013 "src/Compiler/pars.fsy" +//# 3015 "src/Compiler/pars.fsy" _1 ) -//# 3013 "src/Compiler/pars.fsy" +//# 3015 "src/Compiler/pars.fsy" : 'gentype_classDefnBindings)); -//# 8735 "pars.fs" +//# 8757 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_doBinding in Microsoft.FSharp.Core.Operators.box ( ( -//# 3016 "src/Compiler/pars.fsy" +//# 3018 "src/Compiler/pars.fsy" _1 ) -//# 3016 "src/Compiler/pars.fsy" +//# 3018 "src/Compiler/pars.fsy" : 'gentype_classDefnBindings)); -//# 8746 "pars.fs" +//# 8768 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 3019 "src/Compiler/pars.fsy" +//# 3021 "src/Compiler/pars.fsy" let b, m, _ = _1 b ) -//# 3019 "src/Compiler/pars.fsy" +//# 3021 "src/Compiler/pars.fsy" : 'gentype_classDefnBindings)); -//# 8758 "pars.fs" +//# 8780 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteDoBinding in Microsoft.FSharp.Core.Operators.box ( ( -//# 3023 "src/Compiler/pars.fsy" +//# 3025 "src/Compiler/pars.fsy" fst _1 ) -//# 3023 "src/Compiler/pars.fsy" +//# 3025 "src/Compiler/pars.fsy" : 'gentype_classDefnBindings)); -//# 8769 "pars.fs" +//# 8791 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 3029 "src/Compiler/pars.fsy" +//# 3031 "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 ) -//# 3029 "src/Compiler/pars.fsy" +//# 3031 "src/Compiler/pars.fsy" : 'gentype_hardwhiteDefnBindingsTerminator)); -//# 8783 "pars.fs" +//# 8805 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3035 "src/Compiler/pars.fsy" +//# 3037 "src/Compiler/pars.fsy" (fun kwd m -> let msg = match kwd with @@ -8796,9 +8818,9 @@ let _fsyacc_reductions = lazy [| | _ (*"let" *) -> FSComp.SR.parsUnmatchedLet() reportParseErrorAt m msg), None, None ) -//# 3035 "src/Compiler/pars.fsy" +//# 3037 "src/Compiler/pars.fsy" : 'gentype_hardwhiteDefnBindingsTerminator)); -//# 8801 "pars.fs" +//# 8823 "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 @@ -8809,7 +8831,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3047 "src/Compiler/pars.fsy" +//# 3049 "src/Compiler/pars.fsy" let mExtern = rhs parseState 1 let rty, vis, nm, (args, commas) = _2, _3, _4, _7 let nmm = rhs parseState 3 @@ -8835,82 +8857,82 @@ let _fsyacc_reductions = lazy [| (vis, false, false, mWholeBindLhs, DebugPointAtBinding.NoneAtInvisible, Some(None, rty), rhsExpr, mRhs, [], attrs, None, trivia) [], [binding]) ) -//# 3047 "src/Compiler/pars.fsy" +//# 3049 "src/Compiler/pars.fsy" : 'gentype_cPrototype)); -//# 8840 "pars.fs" +//# 8862 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_externMoreArgs in Microsoft.FSharp.Core.Operators.box ( ( -//# 3075 "src/Compiler/pars.fsy" +//# 3077 "src/Compiler/pars.fsy" let args, commas = _1 List.rev args, (List.rev commas) ) -//# 3075 "src/Compiler/pars.fsy" +//# 3077 "src/Compiler/pars.fsy" : 'gentype_externArgs)); -//# 8852 "pars.fs" +//# 8874 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_externArg in Microsoft.FSharp.Core.Operators.box ( ( -//# 3079 "src/Compiler/pars.fsy" +//# 3081 "src/Compiler/pars.fsy" [_1], [] ) -//# 3079 "src/Compiler/pars.fsy" +//# 3081 "src/Compiler/pars.fsy" : 'gentype_externArgs)); -//# 8863 "pars.fs" +//# 8885 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3081 "src/Compiler/pars.fsy" +//# 3083 "src/Compiler/pars.fsy" [], [] ) -//# 3081 "src/Compiler/pars.fsy" +//# 3083 "src/Compiler/pars.fsy" : 'gentype_externArgs)); -//# 8873 "pars.fs" +//# 8895 "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 ( ( -//# 3087 "src/Compiler/pars.fsy" +//# 3089 "src/Compiler/pars.fsy" let args, commas = _1 let mComma = rhs parseState 2 _3 :: args, (mComma :: commas) ) -//# 3087 "src/Compiler/pars.fsy" +//# 3089 "src/Compiler/pars.fsy" : 'gentype_externMoreArgs)); -//# 8887 "pars.fs" +//# 8909 "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 ( ( -//# 3092 "src/Compiler/pars.fsy" +//# 3094 "src/Compiler/pars.fsy" let mComma = rhs parseState 2 [_3; _1], [mComma] ) -//# 3092 "src/Compiler/pars.fsy" +//# 3094 "src/Compiler/pars.fsy" : 'gentype_externMoreArgs)); -//# 8900 "pars.fs" +//# 8922 "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 ( ( -//# 3099 "src/Compiler/pars.fsy" +//# 3101 "src/Compiler/pars.fsy" let m = lhs parseState SynPat.Typed(SynPat.Wild m, _2, m) |> addAttribs _1 ) -//# 3099 "src/Compiler/pars.fsy" +//# 3101 "src/Compiler/pars.fsy" : 'gentype_externArg)); -//# 8913 "pars.fs" +//# 8935 "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 @@ -8918,104 +8940,104 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3103 "src/Compiler/pars.fsy" +//# 3105 "src/Compiler/pars.fsy" let m = lhs parseState SynPat.Typed(SynPat.Named(SynIdent(_3, None), false, None, m), _2, m) |> addAttribs _1 ) -//# 3103 "src/Compiler/pars.fsy" +//# 3105 "src/Compiler/pars.fsy" : 'gentype_externArg)); -//# 8927 "pars.fs" +//# 8949 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 3109 "src/Compiler/pars.fsy" +//# 3111 "src/Compiler/pars.fsy" let m = _1.Range SynType.App(SynType.LongIdent(_1), None, [], [], None, false, m) ) -//# 3109 "src/Compiler/pars.fsy" +//# 3111 "src/Compiler/pars.fsy" : 'gentype_cType)); -//# 8939 "pars.fs" +//# 8961 "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 ( ( -//# 3113 "src/Compiler/pars.fsy" +//# 3115 "src/Compiler/pars.fsy" let m = lhs parseState SynType.App(SynType.LongIdent(SynLongIdent([ident("[]", m)], [], [None])), None, [_1], [], None, true, m) ) -//# 3113 "src/Compiler/pars.fsy" +//# 3115 "src/Compiler/pars.fsy" : 'gentype_cType)); -//# 8952 "pars.fs" +//# 8974 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_cType in Microsoft.FSharp.Core.Operators.box ( ( -//# 3117 "src/Compiler/pars.fsy" +//# 3119 "src/Compiler/pars.fsy" let m = lhs parseState SynType.App(SynType.LongIdent(SynLongIdent([ident("nativeptr", m)], [], [ Some(IdentTrivia.OriginalNotation "*") ])), None, [_1], [], None, true, m) ) -//# 3117 "src/Compiler/pars.fsy" +//# 3119 "src/Compiler/pars.fsy" : 'gentype_cType)); -//# 8964 "pars.fs" +//# 8986 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_cType in Microsoft.FSharp.Core.Operators.box ( ( -//# 3121 "src/Compiler/pars.fsy" +//# 3123 "src/Compiler/pars.fsy" let m = lhs parseState SynType.App(SynType.LongIdent(SynLongIdent([ident("byref", m)], [], [ Some(IdentTrivia.OriginalNotation "&") ])), None, [_1], [], None, true, m) ) -//# 3121 "src/Compiler/pars.fsy" +//# 3123 "src/Compiler/pars.fsy" : 'gentype_cType)); -//# 8976 "pars.fs" +//# 8998 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3125 "src/Compiler/pars.fsy" +//# 3127 "src/Compiler/pars.fsy" let m = lhs parseState SynType.App(SynType.LongIdent(SynLongIdent([ident("nativeint", m)], [], [ Some(IdentTrivia.OriginalNotation "void*") ])), None, [], [], None, true, m) ) -//# 3125 "src/Compiler/pars.fsy" +//# 3127 "src/Compiler/pars.fsy" : 'gentype_cType)); -//# 8987 "pars.fs" +//# 9009 "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 ( ( -//# 3132 "src/Compiler/pars.fsy" +//# 3134 "src/Compiler/pars.fsy" SynReturnInfo((_2, SynArgInfo(_1, false, None)), rhs parseState 2) ) -//# 3132 "src/Compiler/pars.fsy" +//# 3134 "src/Compiler/pars.fsy" : 'gentype_cRetType)); -//# 8999 "pars.fs" +//# 9021 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in Microsoft.FSharp.Core.Operators.box ( ( -//# 3135 "src/Compiler/pars.fsy" +//# 3137 "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) ) -//# 3135 "src/Compiler/pars.fsy" +//# 3137 "src/Compiler/pars.fsy" : 'gentype_cRetType)); -//# 9011 "pars.fs" +//# 9033 "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 ( ( -//# 3141 "src/Compiler/pars.fsy" +//# 3143 "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 @@ -9028,16 +9050,16 @@ let _fsyacc_reductions = lazy [| | None -> moreLocalBindingsLastRange, (fun _xmlDoc _attrs _vis _leadingKeyword -> moreBindings) ) -//# 3141 "src/Compiler/pars.fsy" +//# 3143 "src/Compiler/pars.fsy" : 'gentype_localBindings)); -//# 9033 "pars.fs" +//# 9055 "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 ( ( -//# 3156 "src/Compiler/pars.fsy" +//# 3158 "src/Compiler/pars.fsy" let leadingKeyword = SynLeadingKeyword.And(rhs parseState 1) (match _2 with | Some(localBindingRange, attrLocalBindingBuilder) -> @@ -9046,44 +9068,44 @@ let _fsyacc_reductions = lazy [| (attrLocalBindingBuilder xmlDoc [] None leadingKeyword false, localBindingRange) :: _3 | None -> _3) ) -//# 3156 "src/Compiler/pars.fsy" +//# 3158 "src/Compiler/pars.fsy" : 'gentype_moreLocalBindings)); -//# 9051 "pars.fs" +//# 9073 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3165 "src/Compiler/pars.fsy" +//# 3167 "src/Compiler/pars.fsy" [] ) -//# 3165 "src/Compiler/pars.fsy" +//# 3167 "src/Compiler/pars.fsy" : 'gentype_moreLocalBindings)); -//# 9061 "pars.fs" +//# 9083 "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 ( ( -//# 3171 "src/Compiler/pars.fsy" +//# 3173 "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) ) -//# 3171 "src/Compiler/pars.fsy" +//# 3173 "src/Compiler/pars.fsy" : 'gentype_attr_localBinding)); -//# 9076 "pars.fs" +//# 9098 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3177 "src/Compiler/pars.fsy" +//# 3179 "src/Compiler/pars.fsy" None ) -//# 3177 "src/Compiler/pars.fsy" +//# 3179 "src/Compiler/pars.fsy" : 'gentype_attr_localBinding)); -//# 9086 "pars.fs" +//# 9108 "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 @@ -9093,7 +9115,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3183 "src/Compiler/pars.fsy" +//# 3185 "src/Compiler/pars.fsy" let (expr: SynExpr), opts = _6 let mEquals = rhs parseState 5 let mRhs = expr.Range @@ -9106,12 +9128,12 @@ let _fsyacc_reductions = lazy [| let spBind = if IsDebugPointBinding bindingPat expr then DebugPointAtBinding.Yes mWhole else DebugPointAtBinding.NoneAtLet let mWholeBindLhs = (mBindLhs, attrs) ||> unionRangeWithListBy (fun (a: SynAttributeList) -> a.Range) let trivia: SynBindingTrivia = { LeadingKeyword = leadingKeyword; InlineKeyword = _1; EqualsRange = Some mEquals } - mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome _1, _2, mWholeBindLhs, spBind, optReturnType, expr, mRhs, opts, attrs, None, trivia)) + mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome _1, Option.isSome _2, mWholeBindLhs, spBind, optReturnType, expr, mRhs, opts, attrs, None, trivia)) localBindingRange, localBindingBuilder ) -//# 3183 "src/Compiler/pars.fsy" +//# 3185 "src/Compiler/pars.fsy" : 'gentype_localBinding)); -//# 9114 "pars.fs" +//# 9136 "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 @@ -9120,7 +9142,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3199 "src/Compiler/pars.fsy" +//# 3201 "src/Compiler/pars.fsy" let mWhole = rhs2 parseState 1 5 let mRhs = rhs parseState 5 let optReturnType = _4 @@ -9132,12 +9154,12 @@ let _fsyacc_reductions = lazy [| let rhsExpr = arbExpr ("localBinding1", zeroWidthAtEnd) let spBind = if IsDebugPointBinding bindingPat rhsExpr then DebugPointAtBinding.Yes mWhole else DebugPointAtBinding.NoneAtLet let trivia: SynBindingTrivia = { LeadingKeyword = leadingKeyword; InlineKeyword = _1; EqualsRange = Some mEquals } - mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome _1, _2, mBindLhs, spBind, optReturnType, rhsExpr, mRhs, [], attrs, None, trivia)) + mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome _1, Option.isSome _2, mBindLhs, spBind, optReturnType, rhsExpr, mRhs, [], attrs, None, trivia)) mWhole, localBindingBuilder ) -//# 3199 "src/Compiler/pars.fsy" +//# 3201 "src/Compiler/pars.fsy" : 'gentype_localBinding)); -//# 9140 "pars.fs" +//# 9162 "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 @@ -9147,7 +9169,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3214 "src/Compiler/pars.fsy" +//# 3216 "src/Compiler/pars.fsy" if not _5 then reportParseErrorAt (rhs parseState 5) (FSComp.SR.parsUnexpectedEndOfFileDefinition()) let optReturnType = _4 let mWhole = rhs2 parseState 1 (match optReturnType with None -> 3 | _ -> 4) @@ -9158,347 +9180,347 @@ let _fsyacc_reductions = lazy [| let spBind = DebugPointAtBinding.Yes(unionRanges leadingKeyword.Range mRhs) let trivia = { LeadingKeyword = leadingKeyword; InlineKeyword = _1; EqualsRange = None } let rhsExpr = arbExpr ("localBinding2", mRhs) - mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome _1, _2, mBindLhs, spBind, optReturnType, rhsExpr, mRhs, [], attrs, None, trivia)) + mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome _1, Option.isSome _2, mBindLhs, spBind, optReturnType, rhsExpr, mRhs, [], attrs, None, trivia)) mWhole, localBindingBuilder ) -//# 3214 "src/Compiler/pars.fsy" +//# 3216 "src/Compiler/pars.fsy" : 'gentype_localBinding)); -//# 9166 "pars.fs" +//# 9188 "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 ( ( -//# 3230 "src/Compiler/pars.fsy" +//# 3232 "src/Compiler/pars.fsy" _2 ) -//# 3230 "src/Compiler/pars.fsy" +//# 3232 "src/Compiler/pars.fsy" : 'gentype_typedExprWithStaticOptimizationsBlock)); -//# 9178 "pars.fs" +//# 9200 "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 ( ( -//# 3233 "src/Compiler/pars.fsy" +//# 3235 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFile()) let a, b = _2 (exprFromParseError a, b) ) -//# 3233 "src/Compiler/pars.fsy" +//# 3235 "src/Compiler/pars.fsy" : 'gentype_typedExprWithStaticOptimizationsBlock)); -//# 9192 "pars.fs" +//# 9214 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typedExprWithStaticOptimizations in Microsoft.FSharp.Core.Operators.box ( ( -//# 3238 "src/Compiler/pars.fsy" +//# 3240 "src/Compiler/pars.fsy" _1 ) -//# 3238 "src/Compiler/pars.fsy" +//# 3240 "src/Compiler/pars.fsy" : 'gentype_typedExprWithStaticOptimizationsBlock)); -//# 9203 "pars.fs" +//# 9225 "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 ( ( -//# 3242 "src/Compiler/pars.fsy" +//# 3244 "src/Compiler/pars.fsy" _1, List.rev _2 ) -//# 3242 "src/Compiler/pars.fsy" +//# 3244 "src/Compiler/pars.fsy" : 'gentype_typedExprWithStaticOptimizations)); -//# 9215 "pars.fs" +//# 9237 "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 ( ( -//# 3246 "src/Compiler/pars.fsy" +//# 3248 "src/Compiler/pars.fsy" _2 :: _1 ) -//# 3246 "src/Compiler/pars.fsy" +//# 3248 "src/Compiler/pars.fsy" : 'gentype_opt_staticOptimizations)); -//# 9227 "pars.fs" +//# 9249 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3249 "src/Compiler/pars.fsy" +//# 3251 "src/Compiler/pars.fsy" [] ) -//# 3249 "src/Compiler/pars.fsy" +//# 3251 "src/Compiler/pars.fsy" : 'gentype_opt_staticOptimizations)); -//# 9237 "pars.fs" +//# 9259 "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 ( ( -//# 3253 "src/Compiler/pars.fsy" +//# 3255 "src/Compiler/pars.fsy" (_2, _4) ) -//# 3253 "src/Compiler/pars.fsy" +//# 3255 "src/Compiler/pars.fsy" : 'gentype_staticOptimization)); -//# 9249 "pars.fs" +//# 9271 "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 ( ( -//# 3257 "src/Compiler/pars.fsy" +//# 3259 "src/Compiler/pars.fsy" _3 :: _1 ) -//# 3257 "src/Compiler/pars.fsy" +//# 3259 "src/Compiler/pars.fsy" : 'gentype_staticOptimizationConditions)); -//# 9261 "pars.fs" +//# 9283 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_staticOptimizationCondition in Microsoft.FSharp.Core.Operators.box ( ( -//# 3260 "src/Compiler/pars.fsy" +//# 3262 "src/Compiler/pars.fsy" [_1 ] ) -//# 3260 "src/Compiler/pars.fsy" +//# 3262 "src/Compiler/pars.fsy" : 'gentype_staticOptimizationConditions)); -//# 9272 "pars.fs" +//# 9294 "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 ( ( -//# 3264 "src/Compiler/pars.fsy" +//# 3266 "src/Compiler/pars.fsy" SynStaticOptimizationConstraint.WhenTyparTyconEqualsTycon(_1, _3, lhs parseState) ) -//# 3264 "src/Compiler/pars.fsy" +//# 3266 "src/Compiler/pars.fsy" : 'gentype_staticOptimizationCondition)); -//# 9284 "pars.fs" +//# 9306 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 3267 "src/Compiler/pars.fsy" +//# 3269 "src/Compiler/pars.fsy" SynStaticOptimizationConstraint.WhenTyparIsStruct(_1, lhs parseState) ) -//# 3267 "src/Compiler/pars.fsy" +//# 3269 "src/Compiler/pars.fsy" : 'gentype_staticOptimizationCondition)); -//# 9295 "pars.fs" +//# 9317 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> sbyte * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 3271 "src/Compiler/pars.fsy" +//# 3273 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideEightBitSigned(), lhs parseState)) SynConst.SByte(fst _1) ) -//# 3271 "src/Compiler/pars.fsy" +//# 3273 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9307 "pars.fs" +//# 9329 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> byte in Microsoft.FSharp.Core.Operators.box ( ( -//# 3275 "src/Compiler/pars.fsy" +//# 3277 "src/Compiler/pars.fsy" SynConst.Byte _1 ) -//# 3275 "src/Compiler/pars.fsy" +//# 3277 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9318 "pars.fs" +//# 9340 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int16 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 3278 "src/Compiler/pars.fsy" +//# 3280 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideSixteenBitSigned(), lhs parseState)) SynConst.Int16 (fst _1) ) -//# 3278 "src/Compiler/pars.fsy" +//# 3280 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9330 "pars.fs" +//# 9352 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> uint16 in Microsoft.FSharp.Core.Operators.box ( ( -//# 3282 "src/Compiler/pars.fsy" +//# 3284 "src/Compiler/pars.fsy" SynConst.UInt16 _1 ) -//# 3282 "src/Compiler/pars.fsy" +//# 3284 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9341 "pars.fs" +//# 9363 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int32 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 3285 "src/Compiler/pars.fsy" +//# 3287 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) SynConst.Int32 (fst _1) ) -//# 3285 "src/Compiler/pars.fsy" +//# 3287 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9353 "pars.fs" +//# 9375 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> uint32 in Microsoft.FSharp.Core.Operators.box ( ( -//# 3289 "src/Compiler/pars.fsy" +//# 3291 "src/Compiler/pars.fsy" SynConst.UInt32 _1 ) -//# 3289 "src/Compiler/pars.fsy" +//# 3291 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9364 "pars.fs" +//# 9386 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int64 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 3292 "src/Compiler/pars.fsy" +//# 3294 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideSixtyFourBitSigned(), lhs parseState)) SynConst.Int64 (fst _1) ) -//# 3292 "src/Compiler/pars.fsy" +//# 3294 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9376 "pars.fs" +//# 9398 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> uint64 in Microsoft.FSharp.Core.Operators.box ( ( -//# 3296 "src/Compiler/pars.fsy" +//# 3298 "src/Compiler/pars.fsy" SynConst.UInt64 _1 ) -//# 3296 "src/Compiler/pars.fsy" +//# 3298 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9387 "pars.fs" +//# 9409 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int64 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 3299 "src/Compiler/pars.fsy" +//# 3301 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideNativeSigned(), lhs parseState)) SynConst.IntPtr(fst _1) ) -//# 3299 "src/Compiler/pars.fsy" +//# 3301 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9399 "pars.fs" +//# 9421 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> uint64 in Microsoft.FSharp.Core.Operators.box ( ( -//# 3303 "src/Compiler/pars.fsy" +//# 3305 "src/Compiler/pars.fsy" SynConst.UIntPtr _1 ) -//# 3303 "src/Compiler/pars.fsy" +//# 3305 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9410 "pars.fs" +//# 9432 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> single in Microsoft.FSharp.Core.Operators.box ( ( -//# 3306 "src/Compiler/pars.fsy" +//# 3308 "src/Compiler/pars.fsy" SynConst.Single _1 ) -//# 3306 "src/Compiler/pars.fsy" +//# 3308 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9421 "pars.fs" +//# 9443 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> double in Microsoft.FSharp.Core.Operators.box ( ( -//# 3309 "src/Compiler/pars.fsy" +//# 3311 "src/Compiler/pars.fsy" SynConst.Double _1 ) -//# 3309 "src/Compiler/pars.fsy" +//# 3311 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9432 "pars.fs" +//# 9454 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> char in Microsoft.FSharp.Core.Operators.box ( ( -//# 3312 "src/Compiler/pars.fsy" +//# 3314 "src/Compiler/pars.fsy" SynConst.Char _1 ) -//# 3312 "src/Compiler/pars.fsy" +//# 3314 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9443 "pars.fs" +//# 9465 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> System.Decimal in Microsoft.FSharp.Core.Operators.box ( ( -//# 3315 "src/Compiler/pars.fsy" +//# 3317 "src/Compiler/pars.fsy" SynConst.Decimal _1 ) -//# 3315 "src/Compiler/pars.fsy" +//# 3317 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9454 "pars.fs" +//# 9476 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> (string * string) in Microsoft.FSharp.Core.Operators.box ( ( -//# 3318 "src/Compiler/pars.fsy" +//# 3320 "src/Compiler/pars.fsy" SynConst.UserNum _1 ) -//# 3318 "src/Compiler/pars.fsy" +//# 3320 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9465 "pars.fs" +//# 9487 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_string in Microsoft.FSharp.Core.Operators.box ( ( -//# 3321 "src/Compiler/pars.fsy" +//# 3323 "src/Compiler/pars.fsy" let s, synStringKind = _1 SynConst.String(s, synStringKind, lhs parseState) ) -//# 3321 "src/Compiler/pars.fsy" +//# 3323 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9477 "pars.fs" +//# 9499 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sourceIdentifier in Microsoft.FSharp.Core.Operators.box ( ( -//# 3325 "src/Compiler/pars.fsy" +//# 3327 "src/Compiler/pars.fsy" let c, v = _1 SynConst.SourceIdentifier(c, v, lhs parseState) ) -//# 3325 "src/Compiler/pars.fsy" +//# 3327 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9489 "pars.fs" +//# 9511 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> byte[] * SynByteStringKind * ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 3329 "src/Compiler/pars.fsy" +//# 3331 "src/Compiler/pars.fsy" let (v, synByteStringKind, _) = _1 SynConst.Bytes(v, synByteStringKind, lhs parseState) ) -//# 3329 "src/Compiler/pars.fsy" +//# 3331 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 9501 "pars.fs" +//# 9523 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int32 * bool in let _2 = parseState.GetInput(2) :?> string in @@ -9506,15 +9528,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3334 "src/Compiler/pars.fsy" +//# 3336 "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) ) -//# 3334 "src/Compiler/pars.fsy" +//# 3336 "src/Compiler/pars.fsy" : 'gentype_rationalConstant)); -//# 9517 "pars.fs" +//# 9539 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> int32 * bool in let _3 = parseState.GetInput(3) :?> string in @@ -9522,494 +9544,494 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3340 "src/Compiler/pars.fsy" +//# 3342 "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) ) -//# 3340 "src/Compiler/pars.fsy" +//# 3342 "src/Compiler/pars.fsy" : 'gentype_rationalConstant)); -//# 9533 "pars.fs" +//# 9555 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int32 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 3346 "src/Compiler/pars.fsy" +//# 3348 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) SynRationalConst.Integer(fst _1, lhs parseState) ) -//# 3346 "src/Compiler/pars.fsy" +//# 3348 "src/Compiler/pars.fsy" : 'gentype_rationalConstant)); -//# 9545 "pars.fs" +//# 9567 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> int32 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 3350 "src/Compiler/pars.fsy" +//# 3352 "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) ) -//# 3350 "src/Compiler/pars.fsy" +//# 3352 "src/Compiler/pars.fsy" : 'gentype_rationalConstant)); -//# 9557 "pars.fs" +//# 9579 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int32 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 3354 "src/Compiler/pars.fsy" +//# 3356 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) SynRationalConst.Integer(fst _1, lhs parseState) ) -//# 3354 "src/Compiler/pars.fsy" +//# 3356 "src/Compiler/pars.fsy" : 'gentype_atomicUnsignedRationalConstant)); -//# 9569 "pars.fs" +//# 9591 "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 ( ( -//# 3358 "src/Compiler/pars.fsy" +//# 3360 "src/Compiler/pars.fsy" SynRationalConst.Paren(_2, rhs2 parseState 1 3) ) -//# 3358 "src/Compiler/pars.fsy" +//# 3360 "src/Compiler/pars.fsy" : 'gentype_atomicUnsignedRationalConstant)); -//# 9581 "pars.fs" +//# 9603 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicUnsignedRationalConstant in Microsoft.FSharp.Core.Operators.box ( ( -//# 3361 "src/Compiler/pars.fsy" +//# 3363 "src/Compiler/pars.fsy" _1 ) -//# 3361 "src/Compiler/pars.fsy" +//# 3363 "src/Compiler/pars.fsy" : 'gentype_atomicRationalConstant)); -//# 9592 "pars.fs" +//# 9614 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_atomicUnsignedRationalConstant in Microsoft.FSharp.Core.Operators.box ( ( -//# 3364 "src/Compiler/pars.fsy" +//# 3366 "src/Compiler/pars.fsy" SynRationalConst.Negate(_2, lhs parseState) ) -//# 3364 "src/Compiler/pars.fsy" +//# 3366 "src/Compiler/pars.fsy" : 'gentype_atomicRationalConstant)); -//# 9603 "pars.fs" +//# 9625 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_rawConstant in Microsoft.FSharp.Core.Operators.box ( ( -//# 3368 "src/Compiler/pars.fsy" +//# 3370 "src/Compiler/pars.fsy" _1, rhs parseState 1 ) -//# 3368 "src/Compiler/pars.fsy" +//# 3370 "src/Compiler/pars.fsy" : 'gentype_constant)); -//# 9614 "pars.fs" +//# 9636 "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 ( ( -//# 3371 "src/Compiler/pars.fsy" +//# 3373 "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 ) -//# 3371 "src/Compiler/pars.fsy" +//# 3373 "src/Compiler/pars.fsy" : 'gentype_constant)); -//# 9629 "pars.fs" +//# 9651 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynPat in Microsoft.FSharp.Core.Operators.box ( ( -//# 3378 "src/Compiler/pars.fsy" +//# 3380 "src/Compiler/pars.fsy" _1, rhs parseState 1 ) -//# 3378 "src/Compiler/pars.fsy" +//# 3380 "src/Compiler/pars.fsy" : 'gentype_bindingPattern)); -//# 9640 "pars.fs" +//# 9662 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 3385 "src/Compiler/pars.fsy" +//# 3387 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynPat.Named(SynIdent(_1, None), false, None, m) ) -//# 3385 "src/Compiler/pars.fsy" +//# 3387 "src/Compiler/pars.fsy" : 'gentype_simplePattern)); -//# 9652 "pars.fs" +//# 9674 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 3389 "src/Compiler/pars.fsy" +//# 3391 "src/Compiler/pars.fsy" SynPat.OptionalVal(_2, rhs parseState 2) ) -//# 3389 "src/Compiler/pars.fsy" +//# 3391 "src/Compiler/pars.fsy" : 'gentype_simplePattern)); -//# 9663 "pars.fs" +//# 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 ( ( -//# 3392 "src/Compiler/pars.fsy" +//# 3394 "src/Compiler/pars.fsy" SynPat.Typed(_1, _3, lhs parseState) ) -//# 3392 "src/Compiler/pars.fsy" +//# 3394 "src/Compiler/pars.fsy" : 'gentype_simplePattern)); -//# 9675 "pars.fs" +//# 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 ( ( -//# 3395 "src/Compiler/pars.fsy" +//# 3397 "src/Compiler/pars.fsy" let mColon = rhs parseState 2 let ty = SynType.FromParseError(mColon.EndRange) SynPat.Typed(_1, ty, unionRanges _1.Range mColon) ) -//# 3395 "src/Compiler/pars.fsy" +//# 3397 "src/Compiler/pars.fsy" : 'gentype_simplePattern)); -//# 9689 "pars.fs" +//# 9711 "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 Microsoft.FSharp.Core.Operators.box ( ( -//# 3400 "src/Compiler/pars.fsy" +//# 3402 "src/Compiler/pars.fsy" SynPat.Attrib(_2, _1, lhs parseState) ) -//# 3400 "src/Compiler/pars.fsy" +//# 3402 "src/Compiler/pars.fsy" : 'gentype_simplePattern)); -//# 9701 "pars.fs" +//# 9723 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_simplePattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3404 "src/Compiler/pars.fsy" +//# 3406 "src/Compiler/pars.fsy" _1 ) -//# 3404 "src/Compiler/pars.fsy" +//# 3406 "src/Compiler/pars.fsy" : 'gentype_simplePatternCommaList)); -//# 9712 "pars.fs" +//# 9734 "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 Microsoft.FSharp.Core.Operators.box ( ( -//# 3407 "src/Compiler/pars.fsy" +//# 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) ) -//# 3407 "src/Compiler/pars.fsy" +//# 3409 "src/Compiler/pars.fsy" : 'gentype_simplePatternCommaList)); -//# 9727 "pars.fs" +//# 9749 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_simplePatterns in Microsoft.FSharp.Core.Operators.box ( ( -//# 3414 "src/Compiler/pars.fsy" +//# 3416 "src/Compiler/pars.fsy" Some _1 ) -//# 3414 "src/Compiler/pars.fsy" +//# 3416 "src/Compiler/pars.fsy" : 'gentype_opt_simplePatterns)); -//# 9738 "pars.fs" +//# 9760 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3416 "src/Compiler/pars.fsy" +//# 3418 "src/Compiler/pars.fsy" None ) -//# 3416 "src/Compiler/pars.fsy" +//# 3418 "src/Compiler/pars.fsy" : 'gentype_opt_simplePatterns)); -//# 9748 "pars.fs" +//# 9770 "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 ( ( -//# 3420 "src/Compiler/pars.fsy" +//# 3422 "src/Compiler/pars.fsy" let parenPat = SynPat.Paren(_2, rhs2 parseState 1 3) let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator parenPat simplePats ) -//# 3420 "src/Compiler/pars.fsy" +//# 3422 "src/Compiler/pars.fsy" : 'gentype_simplePatterns)); -//# 9762 "pars.fs" +//# 9784 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 3425 "src/Compiler/pars.fsy" +//# 3427 "src/Compiler/pars.fsy" let pat = SynPat.Const(SynConst.Unit, rhs2 parseState 1 2) let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator pat simplePats ) -//# 3425 "src/Compiler/pars.fsy" +//# 3427 "src/Compiler/pars.fsy" : 'gentype_simplePatterns)); -//# 9775 "pars.fs" +//# 9797 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_simplePatternCommaList in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3430 "src/Compiler/pars.fsy" +//# 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 ) -//# 3430 "src/Compiler/pars.fsy" +//# 3432 "src/Compiler/pars.fsy" : 'gentype_simplePatterns)); -//# 9790 "pars.fs" +//# 9812 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 3436 "src/Compiler/pars.fsy" +//# 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 ) -//# 3436 "src/Compiler/pars.fsy" +//# 3438 "src/Compiler/pars.fsy" : 'gentype_simplePatterns)); -//# 9803 "pars.fs" +//# 9825 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3441 "src/Compiler/pars.fsy" +//# 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 ) -//# 3441 "src/Compiler/pars.fsy" +//# 3443 "src/Compiler/pars.fsy" : 'gentype_simplePatterns)); -//# 9817 "pars.fs" +//# 9839 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynPat in let _3 = parseState.GetInput(3) :?> 'gentype_constrPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3449 "src/Compiler/pars.fsy" +//# 3451 "src/Compiler/pars.fsy" SynPat.As(_1, _3, rhs2 parseState 1 3) ) -//# 3449 "src/Compiler/pars.fsy" +//# 3451 "src/Compiler/pars.fsy" : SynPat)); -//# 9829 "pars.fs" +//# 9851 "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 ( ( -//# 3452 "src/Compiler/pars.fsy" +//# 3454 "src/Compiler/pars.fsy" let mBar = rhs parseState 2 SynPat.Or(_1, _3, rhs2 parseState 1 3, { BarRange = mBar }) ) -//# 3452 "src/Compiler/pars.fsy" +//# 3454 "src/Compiler/pars.fsy" : SynPat)); -//# 9842 "pars.fs" +//# 9864 "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 ( ( -//# 3456 "src/Compiler/pars.fsy" +//# 3458 "src/Compiler/pars.fsy" let mColonColon = rhs parseState 2 SynPat.ListCons(_1, _3, rhs2 parseState 1 3, { ColonColonRange = mColonColon }) ) -//# 3456 "src/Compiler/pars.fsy" +//# 3458 "src/Compiler/pars.fsy" : SynPat)); -//# 9855 "pars.fs" +//# 9877 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tuplePatternElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 3460 "src/Compiler/pars.fsy" +//# 3462 "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) ) -//# 3460 "src/Compiler/pars.fsy" +//# 3462 "src/Compiler/pars.fsy" : SynPat)); -//# 9869 "pars.fs" +//# 9891 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_conjPatternElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 3466 "src/Compiler/pars.fsy" +//# 3468 "src/Compiler/pars.fsy" SynPat.Ands(List.rev _1, lhs parseState) ) -//# 3466 "src/Compiler/pars.fsy" +//# 3468 "src/Compiler/pars.fsy" : SynPat)); -//# 9880 "pars.fs" +//# 9902 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_constrPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3469 "src/Compiler/pars.fsy" +//# 3471 "src/Compiler/pars.fsy" _1 ) -//# 3469 "src/Compiler/pars.fsy" +//# 3471 "src/Compiler/pars.fsy" : SynPat)); -//# 9891 "pars.fs" +//# 9913 "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 ( ( -//# 3473 "src/Compiler/pars.fsy" +//# 3475 "src/Compiler/pars.fsy" let pats, commas = _1 _3 :: pats, (rhs parseState 2 :: commas) ) -//# 3473 "src/Compiler/pars.fsy" +//# 3475 "src/Compiler/pars.fsy" : 'gentype_tuplePatternElements)); -//# 9904 "pars.fs" +//# 9926 "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 ( ( -//# 3477 "src/Compiler/pars.fsy" +//# 3479 "src/Compiler/pars.fsy" [_3; _1], [rhs parseState 2] ) -//# 3477 "src/Compiler/pars.fsy" +//# 3479 "src/Compiler/pars.fsy" : 'gentype_tuplePatternElements)); -//# 9916 "pars.fs" +//# 9938 "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 ( ( -//# 3480 "src/Compiler/pars.fsy" +//# 3482 "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) ) -//# 3480 "src/Compiler/pars.fsy" +//# 3482 "src/Compiler/pars.fsy" : 'gentype_tuplePatternElements)); -//# 9932 "pars.fs" +//# 9954 "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 ( ( -//# 3487 "src/Compiler/pars.fsy" +//# 3489 "src/Compiler/pars.fsy" let commaRange = rhs parseState 2 reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern ()) let pat2 = SynPat.Wild(commaRange.EndRange) [pat2; _1], [commaRange] ) -//# 3487 "src/Compiler/pars.fsy" +//# 3489 "src/Compiler/pars.fsy" : 'gentype_tuplePatternElements)); -//# 9947 "pars.fs" +//# 9969 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynPat in Microsoft.FSharp.Core.Operators.box ( ( -//# 3493 "src/Compiler/pars.fsy" +//# 3495 "src/Compiler/pars.fsy" let commaRange = rhs parseState 1 reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern ()) let pat1 = SynPat.Wild(commaRange.StartRange) [_2; pat1], [commaRange] ) -//# 3493 "src/Compiler/pars.fsy" +//# 3495 "src/Compiler/pars.fsy" : 'gentype_tuplePatternElements)); -//# 9961 "pars.fs" +//# 9983 "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 ( ( -//# 3499 "src/Compiler/pars.fsy" +//# 3501 "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] ) -//# 3499 "src/Compiler/pars.fsy" +//# 3501 "src/Compiler/pars.fsy" : 'gentype_tuplePatternElements)); -//# 9976 "pars.fs" +//# 9998 "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 ( ( -//# 3507 "src/Compiler/pars.fsy" +//# 3509 "src/Compiler/pars.fsy" _3 :: _1 ) -//# 3507 "src/Compiler/pars.fsy" +//# 3509 "src/Compiler/pars.fsy" : 'gentype_conjPatternElements)); -//# 9988 "pars.fs" +//# 10010 "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 ( ( -//# 3510 "src/Compiler/pars.fsy" +//# 3512 "src/Compiler/pars.fsy" _3 :: _1 :: [] ) -//# 3510 "src/Compiler/pars.fsy" +//# 3512 "src/Compiler/pars.fsy" : 'gentype_conjPatternElements)); -//# 10000 "pars.fs" +//# 10022 "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 ( ( -//# 3514 "src/Compiler/pars.fsy" +//# 3516 "src/Compiler/pars.fsy" [_1] ) -//# 3514 "src/Compiler/pars.fsy" +//# 3516 "src/Compiler/pars.fsy" : 'gentype_namePatPairs)); -//# 10012 "pars.fs" +//# 10034 "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 @@ -10017,12 +10039,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3517 "src/Compiler/pars.fsy" +//# 3519 "src/Compiler/pars.fsy" _1 :: _3 ) -//# 3517 "src/Compiler/pars.fsy" +//# 3519 "src/Compiler/pars.fsy" : 'gentype_namePatPairs)); -//# 10025 "pars.fs" +//# 10047 "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 @@ -10031,64 +10053,64 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3520 "src/Compiler/pars.fsy" +//# 3522 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsExpectingPattern ()) (_1 :: _4) ) -//# 3520 "src/Compiler/pars.fsy" +//# 3522 "src/Compiler/pars.fsy" : 'gentype_namePatPairs)); -//# 10040 "pars.fs" +//# 10062 "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 ( ( -//# 3525 "src/Compiler/pars.fsy" +//# 3527 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 _1, Some mEquals, _3 ) -//# 3525 "src/Compiler/pars.fsy" +//# 3527 "src/Compiler/pars.fsy" : 'gentype_namePatPair)); -//# 10053 "pars.fs" +//# 10075 "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 ( ( -//# 3529 "src/Compiler/pars.fsy" +//# 3531 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 _1, Some mEquals, patFromParseError (SynPat.Wild mEquals.EndRange) ) -//# 3529 "src/Compiler/pars.fsy" +//# 3531 "src/Compiler/pars.fsy" : 'gentype_namePatPair)); -//# 10066 "pars.fs" +//# 10088 "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 ( ( -//# 3533 "src/Compiler/pars.fsy" +//# 3535 "src/Compiler/pars.fsy" _1, None, patFromParseError (SynPat.Wild _1.idRange.EndRange) ) -//# 3533 "src/Compiler/pars.fsy" +//# 3535 "src/Compiler/pars.fsy" : 'gentype_namePatPair)); -//# 10078 "pars.fs" +//# 10100 "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 ( ( -//# 3537 "src/Compiler/pars.fsy" +//# 3539 "src/Compiler/pars.fsy" let vis, lid = _1 SynPat.LongIdent(lid, None, Some _2, SynArgPats.Pats [], vis, lhs parseState) ) -//# 3537 "src/Compiler/pars.fsy" +//# 3539 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 10091 "pars.fs" +//# 10113 "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 @@ -10096,15 +10118,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3541 "src/Compiler/pars.fsy" +//# 3543 "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) ) -//# 3541 "src/Compiler/pars.fsy" +//# 3543 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 10107 "pars.fs" +//# 10129 "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 @@ -10112,15 +10134,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3547 "src/Compiler/pars.fsy" +//# 3549 "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) ) -//# 3547 "src/Compiler/pars.fsy" +//# 3549 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 10123 "pars.fs" +//# 10145 "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 @@ -10128,169 +10150,169 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3553 "src/Compiler/pars.fsy" +//# 3555 "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) ) -//# 3553 "src/Compiler/pars.fsy" +//# 3555 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 10139 "pars.fs" +//# 10161 "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 ( ( -//# 3559 "src/Compiler/pars.fsy" +//# 3561 "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) ) -//# 3559 "src/Compiler/pars.fsy" +//# 3561 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 10154 "pars.fs" +//# 10176 "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 ( ( -//# 3565 "src/Compiler/pars.fsy" +//# 3567 "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) ) -//# 3565 "src/Compiler/pars.fsy" +//# 3567 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 10169 "pars.fs" +//# 10191 "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 ( ( -//# 3571 "src/Compiler/pars.fsy" +//# 3573 "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) ) -//# 3571 "src/Compiler/pars.fsy" +//# 3573 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 10184 "pars.fs" +//# 10206 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeOrAnonRecdType in Microsoft.FSharp.Core.Operators.box ( ( -//# 3577 "src/Compiler/pars.fsy" +//# 3579 "src/Compiler/pars.fsy" SynPat.IsInst(_2, lhs parseState) ) -//# 3577 "src/Compiler/pars.fsy" +//# 3579 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 10195 "pars.fs" +//# 10217 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3580 "src/Compiler/pars.fsy" +//# 3582 "src/Compiler/pars.fsy" _1 ) -//# 3580 "src/Compiler/pars.fsy" +//# 3582 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 10206 "pars.fs" +//# 10228 "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 ( ( -//# 3584 "src/Compiler/pars.fsy" +//# 3586 "src/Compiler/pars.fsy" let mParen = rhs2 parseState 1 3 let trivia = { ParenRange = mParen } SynArgPats.NamePatPairs(_2, rhs parseState 2, trivia), mParen ) -//# 3584 "src/Compiler/pars.fsy" +//# 3586 "src/Compiler/pars.fsy" : SynArgPats * range)); -//# 10220 "pars.fs" +//# 10242 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynPat list in Microsoft.FSharp.Core.Operators.box ( ( -//# 3589 "src/Compiler/pars.fsy" +//# 3591 "src/Compiler/pars.fsy" let mParsed = rhs parseState 1 let mAll = (mParsed.StartRange, _1) ||> unionRangeWithListBy (fun p -> p.Range) SynArgPats.Pats _1, mAll ) -//# 3589 "src/Compiler/pars.fsy" +//# 3591 "src/Compiler/pars.fsy" : SynArgPats * range)); -//# 10233 "pars.fs" +//# 10255 "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 ( ( -//# 3595 "src/Compiler/pars.fsy" +//# 3597 "src/Compiler/pars.fsy" _1 :: _2 ) -//# 3595 "src/Compiler/pars.fsy" +//# 3597 "src/Compiler/pars.fsy" : SynPat list)); -//# 10245 "pars.fs" +//# 10267 "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 ( ( -//# 3598 "src/Compiler/pars.fsy" +//# 3600 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessivePatternsShouldBeSpacedOrTupled()) _1 :: _3 ) -//# 3598 "src/Compiler/pars.fsy" +//# 3600 "src/Compiler/pars.fsy" : SynPat list)); -//# 10258 "pars.fs" +//# 10280 "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 ( ( -//# 3602 "src/Compiler/pars.fsy" +//# 3604 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessivePatternsShouldBeSpacedOrTupled()) _1 :: _3 ) -//# 3602 "src/Compiler/pars.fsy" +//# 3604 "src/Compiler/pars.fsy" : SynPat list)); -//# 10271 "pars.fs" +//# 10293 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3606 "src/Compiler/pars.fsy" +//# 3608 "src/Compiler/pars.fsy" [_1] ) -//# 3606 "src/Compiler/pars.fsy" +//# 3608 "src/Compiler/pars.fsy" : SynPat list)); -//# 10282 "pars.fs" +//# 10304 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_quoteExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3611 "src/Compiler/pars.fsy" +//# 3613 "src/Compiler/pars.fsy" SynPat.QuoteExpr(_1, lhs parseState) ) -//# 3611 "src/Compiler/pars.fsy" +//# 3613 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10293 "pars.fs" +//# 10315 "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 @@ -10298,73 +10320,73 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3614 "src/Compiler/pars.fsy" +//# 3616 "src/Compiler/pars.fsy" SynPat.Record(_2, rhs2 parseState 1 3) ) -//# 3614 "src/Compiler/pars.fsy" +//# 3616 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10306 "pars.fs" +//# 10328 "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 ( ( -//# 3617 "src/Compiler/pars.fsy" +//# 3619 "src/Compiler/pars.fsy" SynPat.Record([], rhs2 parseState 1 3) ) -//# 3617 "src/Compiler/pars.fsy" +//# 3619 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10318 "pars.fs" +//# 10340 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_listPatternElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 3620 "src/Compiler/pars.fsy" +//# 3622 "src/Compiler/pars.fsy" SynPat.ArrayOrList(false, _2, lhs parseState) ) -//# 3620 "src/Compiler/pars.fsy" +//# 3622 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10329 "pars.fs" +//# 10351 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_listPatternElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 3623 "src/Compiler/pars.fsy" +//# 3625 "src/Compiler/pars.fsy" SynPat.ArrayOrList(true, _2, lhs parseState) ) -//# 3623 "src/Compiler/pars.fsy" +//# 3625 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10340 "pars.fs" +//# 10362 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3626 "src/Compiler/pars.fsy" +//# 3628 "src/Compiler/pars.fsy" SynPat.Wild(lhs parseState) ) -//# 3626 "src/Compiler/pars.fsy" +//# 3628 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10350 "pars.fs" +//# 10372 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 3629 "src/Compiler/pars.fsy" +//# 3631 "src/Compiler/pars.fsy" SynPat.OptionalVal(_2, lhs parseState) ) -//# 3629 "src/Compiler/pars.fsy" +//# 3631 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10361 "pars.fs" +//# 10383 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 3632 "src/Compiler/pars.fsy" +//# 3634 "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) @@ -10373,413 +10395,413 @@ let _fsyacc_reductions = lazy [| let (SynIdent(id, _)) = synIdent SynPat.Named(synIdent, false, vis, id.idRange) ) -//# 3632 "src/Compiler/pars.fsy" +//# 3634 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10378 "pars.fs" +//# 10400 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_constant in Microsoft.FSharp.Core.Operators.box ( ( -//# 3641 "src/Compiler/pars.fsy" +//# 3643 "src/Compiler/pars.fsy" SynPat.Const(fst _1, snd _1) ) -//# 3641 "src/Compiler/pars.fsy" +//# 3643 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10389 "pars.fs" +//# 10411 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3644 "src/Compiler/pars.fsy" +//# 3646 "src/Compiler/pars.fsy" SynPat.Const(SynConst.Bool false, lhs parseState) ) -//# 3644 "src/Compiler/pars.fsy" +//# 3646 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10399 "pars.fs" +//# 10421 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3647 "src/Compiler/pars.fsy" +//# 3649 "src/Compiler/pars.fsy" SynPat.Const(SynConst.Bool true, lhs parseState) ) -//# 3647 "src/Compiler/pars.fsy" +//# 3649 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10409 "pars.fs" +//# 10431 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3650 "src/Compiler/pars.fsy" +//# 3652 "src/Compiler/pars.fsy" SynPat.Null(lhs parseState) ) -//# 3650 "src/Compiler/pars.fsy" +//# 3652 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10419 "pars.fs" +//# 10441 "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 ( ( -//# 3653 "src/Compiler/pars.fsy" +//# 3655 "src/Compiler/pars.fsy" let m = lhs parseState SynPat.Paren(_2 m, m) ) -//# 3653 "src/Compiler/pars.fsy" +//# 3655 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10432 "pars.fs" +//# 10454 "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 ( ( -//# 3657 "src/Compiler/pars.fsy" +//# 3659 "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 ) -//# 3657 "src/Compiler/pars.fsy" +//# 3659 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10447 "pars.fs" +//# 10469 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 3663 "src/Compiler/pars.fsy" +//# 3665 "src/Compiler/pars.fsy" let innerPat = patFromParseError (SynPat.Wild(rhs parseState 2)) SynPat.Paren(innerPat, lhs parseState) ) -//# 3663 "src/Compiler/pars.fsy" +//# 3665 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10459 "pars.fs" +//# 10481 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3667 "src/Compiler/pars.fsy" +//# 3669 "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 ) -//# 3667 "src/Compiler/pars.fsy" +//# 3669 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10474 "pars.fs" +//# 10496 "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 ( ( -//# 3674 "src/Compiler/pars.fsy" +//# 3676 "src/Compiler/pars.fsy" let pats, commas = _3 SynPat.Tuple(true, List.rev pats, List.rev commas, lhs parseState) ) -//# 3674 "src/Compiler/pars.fsy" +//# 3676 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10487 "pars.fs" +//# 10509 "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 ( ( -//# 3678 "src/Compiler/pars.fsy" +//# 3680 "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) ) -//# 3678 "src/Compiler/pars.fsy" +//# 3680 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10501 "pars.fs" +//# 10523 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _4 = parseState.GetInput(4) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 3683 "src/Compiler/pars.fsy" +//# 3685 "src/Compiler/pars.fsy" (* silent recovery *) SynPat.Wild(lhs parseState) ) -//# 3683 "src/Compiler/pars.fsy" +//# 3685 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10512 "pars.fs" +//# 10534 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3686 "src/Compiler/pars.fsy" +//# 3688 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) SynPat.Wild(lhs parseState) ) -//# 3686 "src/Compiler/pars.fsy" +//# 3688 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 10524 "pars.fs" +//# 10546 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3691 "src/Compiler/pars.fsy" +//# 3693 "src/Compiler/pars.fsy" (fun m -> _1) ) -//# 3691 "src/Compiler/pars.fsy" +//# 3693 "src/Compiler/pars.fsy" : 'gentype_parenPatternBody)); -//# 10535 "pars.fs" +//# 10557 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3694 "src/Compiler/pars.fsy" +//# 3696 "src/Compiler/pars.fsy" (fun m -> SynPat.Const(SynConst.Unit, m)) ) -//# 3694 "src/Compiler/pars.fsy" +//# 3696 "src/Compiler/pars.fsy" : 'gentype_parenPatternBody)); -//# 10545 "pars.fs" +//# 10567 "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 ( ( -//# 3723 "src/Compiler/pars.fsy" +//# 3725 "src/Compiler/pars.fsy" SynPat.As(_1, _3, rhs2 parseState 1 3) ) -//# 3723 "src/Compiler/pars.fsy" +//# 3725 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 10557 "pars.fs" +//# 10579 "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 ( ( -//# 3726 "src/Compiler/pars.fsy" +//# 3728 "src/Compiler/pars.fsy" let mBar = rhs parseState 2 SynPat.Or(_1, _3, rhs2 parseState 1 3, { BarRange = mBar }) ) -//# 3726 "src/Compiler/pars.fsy" +//# 3728 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 10570 "pars.fs" +//# 10592 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tupleParenPatternElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 3730 "src/Compiler/pars.fsy" +//# 3732 "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) ) -//# 3730 "src/Compiler/pars.fsy" +//# 3732 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 10584 "pars.fs" +//# 10606 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_conjParenPatternElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 3736 "src/Compiler/pars.fsy" +//# 3738 "src/Compiler/pars.fsy" SynPat.Ands(List.rev _1, rhs2 parseState 1 3) ) -//# 3736 "src/Compiler/pars.fsy" +//# 3738 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 10595 "pars.fs" +//# 10617 "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 ( ( -//# 3739 "src/Compiler/pars.fsy" +//# 3741 "src/Compiler/pars.fsy" let mLhs = lhs parseState SynPat.Typed(_1, _3, mLhs) ) -//# 3739 "src/Compiler/pars.fsy" +//# 3741 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 10608 "pars.fs" +//# 10630 "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 ( ( -//# 3743 "src/Compiler/pars.fsy" +//# 3745 "src/Compiler/pars.fsy" let mColon = rhs parseState 2 let ty = SynType.FromParseError(mColon.EndRange) SynPat.Typed(_1, ty, unionRanges _1.Range mColon) ) -//# 3743 "src/Compiler/pars.fsy" +//# 3745 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 10622 "pars.fs" +//# 10644 "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 ( ( -//# 3748 "src/Compiler/pars.fsy" +//# 3750 "src/Compiler/pars.fsy" let mLhs = lhs parseState SynPat.Attrib(_2, _1, mLhs) ) -//# 3748 "src/Compiler/pars.fsy" +//# 3750 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 10635 "pars.fs" +//# 10657 "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 ( ( -//# 3752 "src/Compiler/pars.fsy" +//# 3754 "src/Compiler/pars.fsy" let mColonColon = rhs parseState 2 SynPat.ListCons(_1, _3, rhs2 parseState 1 3, { ColonColonRange = mColonColon }) ) -//# 3752 "src/Compiler/pars.fsy" +//# 3754 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 10648 "pars.fs" +//# 10670 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_constrPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3755 "src/Compiler/pars.fsy" +//# 3757 "src/Compiler/pars.fsy" _1 ) -//# 3755 "src/Compiler/pars.fsy" +//# 3757 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 10659 "pars.fs" +//# 10681 "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 ( ( -//# 3759 "src/Compiler/pars.fsy" +//# 3761 "src/Compiler/pars.fsy" let pats, commas = _1 let mComma = rhs parseState 2 _3 :: pats, (mComma :: commas) ) -//# 3759 "src/Compiler/pars.fsy" +//# 3761 "src/Compiler/pars.fsy" : 'gentype_tupleParenPatternElements)); -//# 10673 "pars.fs" +//# 10695 "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 ( ( -//# 3764 "src/Compiler/pars.fsy" +//# 3766 "src/Compiler/pars.fsy" let mComma = rhs parseState 2 [_3; _1], [mComma] ) -//# 3764 "src/Compiler/pars.fsy" +//# 3766 "src/Compiler/pars.fsy" : 'gentype_tupleParenPatternElements)); -//# 10686 "pars.fs" +//# 10708 "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 ( ( -//# 3768 "src/Compiler/pars.fsy" +//# 3770 "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) ) -//# 3768 "src/Compiler/pars.fsy" +//# 3770 "src/Compiler/pars.fsy" : 'gentype_tupleParenPatternElements)); -//# 10702 "pars.fs" +//# 10724 "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 ( ( -//# 3775 "src/Compiler/pars.fsy" +//# 3777 "src/Compiler/pars.fsy" let commaRange = rhs parseState 2 reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern()) let pat2 = SynPat.Wild(commaRange.EndRange) [pat2; _1], [commaRange] ) -//# 3775 "src/Compiler/pars.fsy" +//# 3777 "src/Compiler/pars.fsy" : 'gentype_tupleParenPatternElements)); -//# 10717 "pars.fs" +//# 10739 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3781 "src/Compiler/pars.fsy" +//# 3783 "src/Compiler/pars.fsy" let commaRange = rhs parseState 1 reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern()) let pat1 = SynPat.Wild(commaRange.StartRange) [_2; pat1], [commaRange] ) -//# 3781 "src/Compiler/pars.fsy" +//# 3783 "src/Compiler/pars.fsy" : 'gentype_tupleParenPatternElements)); -//# 10731 "pars.fs" +//# 10753 "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 ( ( -//# 3787 "src/Compiler/pars.fsy" +//# 3789 "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] ) -//# 3787 "src/Compiler/pars.fsy" +//# 3789 "src/Compiler/pars.fsy" : 'gentype_tupleParenPatternElements)); -//# 10746 "pars.fs" +//# 10768 "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 ( ( -//# 3795 "src/Compiler/pars.fsy" +//# 3797 "src/Compiler/pars.fsy" _3 :: _1 ) -//# 3795 "src/Compiler/pars.fsy" +//# 3797 "src/Compiler/pars.fsy" : 'gentype_conjParenPatternElements)); -//# 10758 "pars.fs" +//# 10780 "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 ( ( -//# 3798 "src/Compiler/pars.fsy" +//# 3800 "src/Compiler/pars.fsy" _3 :: _1 :: [] ) -//# 3798 "src/Compiler/pars.fsy" +//# 3800 "src/Compiler/pars.fsy" : 'gentype_conjParenPatternElements)); -//# 10770 "pars.fs" +//# 10792 "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 ( ( -//# 3802 "src/Compiler/pars.fsy" +//# 3804 "src/Compiler/pars.fsy" [_1] ) -//# 3802 "src/Compiler/pars.fsy" +//# 3804 "src/Compiler/pars.fsy" : 'gentype_recordPatternElementsAux)); -//# 10782 "pars.fs" +//# 10804 "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 @@ -10787,77 +10809,77 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3805 "src/Compiler/pars.fsy" +//# 3807 "src/Compiler/pars.fsy" _1 :: _3 ) -//# 3805 "src/Compiler/pars.fsy" +//# 3807 "src/Compiler/pars.fsy" : 'gentype_recordPatternElementsAux)); -//# 10795 "pars.fs" +//# 10817 "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 ( ( -//# 3809 "src/Compiler/pars.fsy" +//# 3811 "src/Compiler/pars.fsy" let mPath = _1.Range let mEquals = rhs parseState 2 let mPat = _3.Range List.frontAndBack _1.LongIdent, Some mEquals, _3 ) -//# 3809 "src/Compiler/pars.fsy" +//# 3811 "src/Compiler/pars.fsy" : 'gentype_recordPatternElement)); -//# 10810 "pars.fs" +//# 10832 "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 ( ( -//# 3815 "src/Compiler/pars.fsy" +//# 3817 "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 ) -//# 3815 "src/Compiler/pars.fsy" +//# 3817 "src/Compiler/pars.fsy" : 'gentype_recordPatternElement)); -//# 10825 "pars.fs" +//# 10847 "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 ( ( -//# 3821 "src/Compiler/pars.fsy" +//# 3823 "src/Compiler/pars.fsy" let pat = SynPat.Wild(_1.Range.EndRange) List.frontAndBack _1.LongIdent, None, pat ) -//# 3821 "src/Compiler/pars.fsy" +//# 3823 "src/Compiler/pars.fsy" : 'gentype_recordPatternElement)); -//# 10838 "pars.fs" +//# 10860 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3826 "src/Compiler/pars.fsy" +//# 3828 "src/Compiler/pars.fsy" [] ) -//# 3826 "src/Compiler/pars.fsy" +//# 3828 "src/Compiler/pars.fsy" : 'gentype_listPatternElements)); -//# 10848 "pars.fs" +//# 10870 "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 ( ( -//# 3829 "src/Compiler/pars.fsy" +//# 3831 "src/Compiler/pars.fsy" [_1] ) -//# 3829 "src/Compiler/pars.fsy" +//# 3831 "src/Compiler/pars.fsy" : 'gentype_listPatternElements)); -//# 10860 "pars.fs" +//# 10882 "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 @@ -10865,180 +10887,180 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3832 "src/Compiler/pars.fsy" +//# 3834 "src/Compiler/pars.fsy" _1 :: _3 ) -//# 3832 "src/Compiler/pars.fsy" +//# 3834 "src/Compiler/pars.fsy" : 'gentype_listPatternElements)); -//# 10873 "pars.fs" +//# 10895 "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 ( ( -//# 3837 "src/Compiler/pars.fsy" +//# 3839 "src/Compiler/pars.fsy" _2 ) -//# 3837 "src/Compiler/pars.fsy" +//# 3839 "src/Compiler/pars.fsy" : SynExpr)); -//# 10885 "pars.fs" +//# 10907 "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 ( ( -//# 3840 "src/Compiler/pars.fsy" +//# 3842 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileExpression()) exprFromParseError _2 ) -//# 3840 "src/Compiler/pars.fsy" +//# 3842 "src/Compiler/pars.fsy" : SynExpr)); -//# 10898 "pars.fs" +//# 10920 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 3844 "src/Compiler/pars.fsy" +//# 3846 "src/Compiler/pars.fsy" let m = rhs parseState 1 reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) arbExpr ("typedSequentialExprBlock1", m.EndRange) ) -//# 3844 "src/Compiler/pars.fsy" +//# 3846 "src/Compiler/pars.fsy" : SynExpr)); -//# 10911 "pars.fs" +//# 10933 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3849 "src/Compiler/pars.fsy" +//# 3851 "src/Compiler/pars.fsy" _1 ) -//# 3849 "src/Compiler/pars.fsy" +//# 3851 "src/Compiler/pars.fsy" : SynExpr)); -//# 10922 "pars.fs" +//# 10944 "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 ( ( -//# 3854 "src/Compiler/pars.fsy" +//# 3856 "src/Compiler/pars.fsy" _2 ) -//# 3854 "src/Compiler/pars.fsy" +//# 3856 "src/Compiler/pars.fsy" : SynExpr)); -//# 10934 "pars.fs" +//# 10956 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 3857 "src/Compiler/pars.fsy" +//# 3859 "src/Compiler/pars.fsy" let m = rhs parseState 1 reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) arbExpr ("declExprBlock1", m.EndRange) ) -//# 3857 "src/Compiler/pars.fsy" +//# 3859 "src/Compiler/pars.fsy" : SynExpr)); -//# 10947 "pars.fs" +//# 10969 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3862 "src/Compiler/pars.fsy" +//# 3864 "src/Compiler/pars.fsy" _1 ) -//# 3862 "src/Compiler/pars.fsy" +//# 3864 "src/Compiler/pars.fsy" : SynExpr)); -//# 10958 "pars.fs" +//# 10980 "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 ( ( -//# 3868 "src/Compiler/pars.fsy" +//# 3870 "src/Compiler/pars.fsy" fun _ -> _1 ) -//# 3868 "src/Compiler/pars.fsy" +//# 3870 "src/Compiler/pars.fsy" : 'gentype_typedSequentialExprBlockR)); -//# 10970 "pars.fs" +//# 10992 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3871 "src/Compiler/pars.fsy" +//# 3873 "src/Compiler/pars.fsy" fun _ -> _1 ) -//# 3871 "src/Compiler/pars.fsy" +//# 3873 "src/Compiler/pars.fsy" : 'gentype_typedSequentialExprBlockR)); -//# 10981 "pars.fs" +//# 11003 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3874 "src/Compiler/pars.fsy" +//# 3876 "src/Compiler/pars.fsy" fun (mStart: range) -> arbExpr ("typedSequentialExprBlockR1", mStart.EndRange) ) -//# 3874 "src/Compiler/pars.fsy" +//# 3876 "src/Compiler/pars.fsy" : 'gentype_typedSequentialExprBlockR)); -//# 10992 "pars.fs" +//# 11014 "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 ( ( -//# 3878 "src/Compiler/pars.fsy" +//# 3880 "src/Compiler/pars.fsy" SynExpr.Typed(_1, _3, unionRanges _1.Range _3.Range) ) -//# 3878 "src/Compiler/pars.fsy" +//# 3880 "src/Compiler/pars.fsy" : 'gentype_typedSequentialExpr)); -//# 11004 "pars.fs" +//# 11026 "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 ( ( -//# 3881 "src/Compiler/pars.fsy" +//# 3883 "src/Compiler/pars.fsy" let mColon = rhs parseState 2 let ty = SynType.FromParseError(mColon.EndRange) SynExpr.Typed(_1, ty, unionRanges _1.Range mColon) ) -//# 3881 "src/Compiler/pars.fsy" +//# 3883 "src/Compiler/pars.fsy" : 'gentype_typedSequentialExpr)); -//# 11018 "pars.fs" +//# 11040 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3886 "src/Compiler/pars.fsy" +//# 3888 "src/Compiler/pars.fsy" _1 ) -//# 3886 "src/Compiler/pars.fsy" +//# 3888 "src/Compiler/pars.fsy" : 'gentype_typedSequentialExpr)); -//# 11029 "pars.fs" +//# 11051 "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 ( ( -//# 3890 "src/Compiler/pars.fsy" +//# 3892 "src/Compiler/pars.fsy" checkEndOfFileError _2; _1 ) -//# 3890 "src/Compiler/pars.fsy" +//# 3892 "src/Compiler/pars.fsy" : SynExpr)); -//# 11041 "pars.fs" +//# 11063 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> 'gentype_seps in @@ -11046,47 +11068,47 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3894 "src/Compiler/pars.fsy" +//# 3896 "src/Compiler/pars.fsy" SynExpr.Sequential(DebugPointAtSequential.SuppressNeither, true, _1, _3, unionRanges _1.Range _3.Range) ) -//# 3894 "src/Compiler/pars.fsy" +//# 3896 "src/Compiler/pars.fsy" : 'gentype_sequentialExpr)); -//# 11054 "pars.fs" +//# 11076 "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 ( ( -//# 3897 "src/Compiler/pars.fsy" +//# 3899 "src/Compiler/pars.fsy" _1 ) -//# 3897 "src/Compiler/pars.fsy" +//# 3899 "src/Compiler/pars.fsy" : 'gentype_sequentialExpr)); -//# 11066 "pars.fs" +//# 11088 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3900 "src/Compiler/pars.fsy" +//# 3902 "src/Compiler/pars.fsy" _1 ) -//# 3900 "src/Compiler/pars.fsy" +//# 3902 "src/Compiler/pars.fsy" : 'gentype_sequentialExpr)); -//# 11077 "pars.fs" +//# 11099 "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 ( ( -//# 3903 "src/Compiler/pars.fsy" +//# 3905 "src/Compiler/pars.fsy" SynExpr.Sequential(DebugPointAtSequential.SuppressNeither, false, _1, _3, unionRanges _1.Range _3.Range) ) -//# 3903 "src/Compiler/pars.fsy" +//# 3905 "src/Compiler/pars.fsy" : 'gentype_sequentialExpr)); -//# 11089 "pars.fs" +//# 11111 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _4 = parseState.GetInput(4) :?> 'gentype_typedSequentialExpr in @@ -11094,18 +11116,18 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3906 "src/Compiler/pars.fsy" +//# 3908 "src/Compiler/pars.fsy" SynExpr.Sequential(DebugPointAtSequential.SuppressNeither, false, _1, _4, unionRanges _1.Range _4.Range) ) -//# 3906 "src/Compiler/pars.fsy" +//# 3908 "src/Compiler/pars.fsy" : 'gentype_sequentialExpr)); -//# 11102 "pars.fs" +//# 11124 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 3909 "src/Compiler/pars.fsy" +//# 3911 "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" @@ -11113,30 +11135,30 @@ let _fsyacc_reductions = lazy [| let fauxRange = m.EndRange // zero width range at end of m mkLocalBindings (m, hwlb, mIn, arbExpr ("seqExpr", fauxRange)) ) -//# 3909 "src/Compiler/pars.fsy" +//# 3911 "src/Compiler/pars.fsy" : 'gentype_sequentialExpr)); -//# 11118 "pars.fs" +//# 11140 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3922 "src/Compiler/pars.fsy" +//# 3924 "src/Compiler/pars.fsy" debugPrint("recovering via error"); true ) -//# 3922 "src/Compiler/pars.fsy" +//# 3924 "src/Compiler/pars.fsy" : 'gentype_recover)); -//# 11128 "pars.fs" +//# 11150 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 3925 "src/Compiler/pars.fsy" +//# 3927 "src/Compiler/pars.fsy" debugPrint("recovering via EOF"); false ) -//# 3925 "src/Compiler/pars.fsy" +//# 3927 "src/Compiler/pars.fsy" : 'gentype_recover)); -//# 11139 "pars.fs" +//# 11161 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> SynPat in @@ -11145,16 +11167,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3929 "src/Compiler/pars.fsy" +//# 3931 "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 ) -//# 3929 "src/Compiler/pars.fsy" +//# 3931 "src/Compiler/pars.fsy" : 'gentype_moreBinders)); -//# 11157 "pars.fs" +//# 11179 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> SynPat in @@ -11165,7 +11187,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3936 "src/Compiler/pars.fsy" +//# 3938 "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 *) @@ -11173,197 +11195,197 @@ let _fsyacc_reductions = lazy [| let m = unionRanges (rhs parseState 1) _4.Range SynExprAndBang(spBind, _1, true, _2, _4, m, { EqualsRange = mEquals; InKeyword = mIn }) :: _7 ) -//# 3936 "src/Compiler/pars.fsy" +//# 3938 "src/Compiler/pars.fsy" : 'gentype_moreBinders)); -//# 11178 "pars.fs" +//# 11200 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3944 "src/Compiler/pars.fsy" +//# 3946 "src/Compiler/pars.fsy" [] ) -//# 3944 "src/Compiler/pars.fsy" +//# 3946 "src/Compiler/pars.fsy" : 'gentype_moreBinders)); -//# 11188 "pars.fs" +//# 11210 "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 ( ( -//# 3948 "src/Compiler/pars.fsy" +//# 3950 "src/Compiler/pars.fsy" let mIn = rhs parseState 2 |> Some mkLocalBindings (unionRanges (rhs2 parseState 1 2) _3.Range, _1, mIn, _3) ) -//# 3948 "src/Compiler/pars.fsy" +//# 3950 "src/Compiler/pars.fsy" : SynExpr)); -//# 11201 "pars.fs" +//# 11223 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_defnBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 3952 "src/Compiler/pars.fsy" +//# 3954 "src/Compiler/pars.fsy" let mIn = rhs parseState 2 |> Some mkLocalBindings (rhs2 parseState 1 2, _1, mIn, arbExpr ("declExpr1", (rhs parseState 3))) ) -//# 3952 "src/Compiler/pars.fsy" +//# 3954 "src/Compiler/pars.fsy" : SynExpr)); -//# 11213 "pars.fs" +//# 11235 "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 ( ( -//# 3959 "src/Compiler/pars.fsy" +//# 3961 "src/Compiler/pars.fsy" let hwlb, m, mIn = _1 mkLocalBindings (unionRanges m _2.Range, hwlb, mIn, _2) ) -//# 3959 "src/Compiler/pars.fsy" +//# 3961 "src/Compiler/pars.fsy" : SynExpr)); -//# 11226 "pars.fs" +//# 11248 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 3963 "src/Compiler/pars.fsy" +//# 3965 "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))) ) -//# 3963 "src/Compiler/pars.fsy" +//# 3965 "src/Compiler/pars.fsy" : SynExpr)); -//# 11239 "pars.fs" +//# 11261 "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 ( ( -//# 3968 "src/Compiler/pars.fsy" +//# 3970 "src/Compiler/pars.fsy" let hwlb, m, mIn = _1 mkLocalBindings (unionRanges m _3.Range, hwlb, mIn, _3) ) -//# 3968 "src/Compiler/pars.fsy" +//# 3970 "src/Compiler/pars.fsy" : SynExpr)); -//# 11252 "pars.fs" +//# 11274 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 3972 "src/Compiler/pars.fsy" +//# 3974 "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))) ) -//# 3972 "src/Compiler/pars.fsy" +//# 3974 "src/Compiler/pars.fsy" : SynExpr)); -//# 11265 "pars.fs" +//# 11287 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteDoBinding in Microsoft.FSharp.Core.Operators.box ( ( -//# 3977 "src/Compiler/pars.fsy" +//# 3979 "src/Compiler/pars.fsy" let (BindingSetPreAttrs(_, _, _, _, m)), e = _1 SynExpr.Do(e, unionRanges (rhs parseState 1).StartRange e.Range) ) -//# 3977 "src/Compiler/pars.fsy" +//# 3979 "src/Compiler/pars.fsy" : SynExpr)); -//# 11277 "pars.fs" +//# 11299 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_anonMatchingExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3981 "src/Compiler/pars.fsy" +//# 3983 "src/Compiler/pars.fsy" _1 ) -//# 3981 "src/Compiler/pars.fsy" +//# 3983 "src/Compiler/pars.fsy" : SynExpr)); -//# 11288 "pars.fs" +//# 11310 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_anonLambdaExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3984 "src/Compiler/pars.fsy" +//# 3986 "src/Compiler/pars.fsy" _1 ) -//# 3984 "src/Compiler/pars.fsy" +//# 3986 "src/Compiler/pars.fsy" : SynExpr)); -//# 11299 "pars.fs" +//# 11321 "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 ( ( -//# 3987 "src/Compiler/pars.fsy" +//# 3989 "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) ) -//# 3987 "src/Compiler/pars.fsy" +//# 3989 "src/Compiler/pars.fsy" : SynExpr)); -//# 11315 "pars.fs" +//# 11337 "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 ( ( -//# 3994 "src/Compiler/pars.fsy" +//# 3996 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileMatch()) // Produce approximate expression during error recovery exprFromParseError _2 ) -//# 3994 "src/Compiler/pars.fsy" +//# 3996 "src/Compiler/pars.fsy" : SynExpr)); -//# 11329 "pars.fs" +//# 11351 "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 ( ( -//# 3999 "src/Compiler/pars.fsy" +//# 4001 "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) ) -//# 3999 "src/Compiler/pars.fsy" +//# 4001 "src/Compiler/pars.fsy" : SynExpr)); -//# 11345 "pars.fs" +//# 11367 "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 ( ( -//# 4006 "src/Compiler/pars.fsy" +//# 4008 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileMatch()) // Produce approximate expression during error recovery exprFromParseError _2 ) -//# 4006 "src/Compiler/pars.fsy" +//# 4008 "src/Compiler/pars.fsy" : SynExpr)); -//# 11359 "pars.fs" +//# 11381 "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 ( ( -//# 4011 "src/Compiler/pars.fsy" +//# 4013 "src/Compiler/pars.fsy" let mTry = rhs parseState 1 let expr = _2 mTry let spTry = DebugPointAtTry.Yes mTry @@ -11379,16 +11401,16 @@ let _fsyacc_reductions = lazy [| WithToEndRange = mWithToLast } SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia) ) -//# 4011 "src/Compiler/pars.fsy" +//# 4013 "src/Compiler/pars.fsy" : SynExpr)); -//# 11384 "pars.fs" +//# 11406 "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 ( ( -//# 4027 "src/Compiler/pars.fsy" +//# 4029 "src/Compiler/pars.fsy" let mTry = rhs parseState 1 let spTry = DebugPointAtTry.Yes mTry if not _3 then reportParseErrorAt mTry (FSComp.SR.parsUnexpectedEndOfFileTry ()) @@ -11404,15 +11426,15 @@ let _fsyacc_reductions = lazy [| WithToEndRange = mWhole } SynExpr.TryWith(expr, [], mWhole, spTry, spWith, trivia) ) -//# 4027 "src/Compiler/pars.fsy" +//# 4029 "src/Compiler/pars.fsy" : SynExpr)); -//# 11409 "pars.fs" +//# 11431 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 4043 "src/Compiler/pars.fsy" +//# 4045 "src/Compiler/pars.fsy" let mTry = rhs parseState 1 let mExpr = mTry.EndRange let expr = arbExpr ("try1", mExpr) @@ -11430,16 +11452,16 @@ let _fsyacc_reductions = lazy [| WithToEndRange = mWithToLast } SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia) ) -//# 4043 "src/Compiler/pars.fsy" +//# 4045 "src/Compiler/pars.fsy" : SynExpr)); -//# 11435 "pars.fs" +//# 11457 "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 ( ( -//# 4061 "src/Compiler/pars.fsy" +//# 4063 "src/Compiler/pars.fsy" let mTry = rhs parseState 1 let mExpr = mTry.EndRange let expr = arbExpr ("try2", mExpr) @@ -11457,16 +11479,16 @@ let _fsyacc_reductions = lazy [| WithToEndRange = mWithToLast } SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia) ) -//# 4061 "src/Compiler/pars.fsy" +//# 4063 "src/Compiler/pars.fsy" : SynExpr)); -//# 11462 "pars.fs" +//# 11484 "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 ( ( -//# 4079 "src/Compiler/pars.fsy" +//# 4081 "src/Compiler/pars.fsy" let mTry = rhs parseState 1 let tryExpr = _2 mTry let spTry = DebugPointAtTry.Yes mTry @@ -11477,29 +11499,29 @@ let _fsyacc_reductions = lazy [| let trivia = { TryKeyword = mTry; FinallyKeyword = mFinally } SynExpr.TryFinally(tryExpr, finallyExpr, mTryToLast, spTry, spFinally, trivia) ) -//# 4079 "src/Compiler/pars.fsy" +//# 4081 "src/Compiler/pars.fsy" : SynExpr)); -//# 11482 "pars.fs" +//# 11504 "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 ( ( -//# 4090 "src/Compiler/pars.fsy" +//# 4092 "src/Compiler/pars.fsy" let mIf = rhs parseState 1 _3 _2 mIf false ) -//# 4090 "src/Compiler/pars.fsy" +//# 4092 "src/Compiler/pars.fsy" : SynExpr)); -//# 11495 "pars.fs" +//# 11517 "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 ( ( -//# 4094 "src/Compiler/pars.fsy" +//# 4096 "src/Compiler/pars.fsy" errorR (Error(FSComp.SR.parsIncompleteIf (), rhs parseState 1)) let ifExpr = _2 let mIf = rhs parseState 1 @@ -11509,15 +11531,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) ) -//# 4094 "src/Compiler/pars.fsy" +//# 4096 "src/Compiler/pars.fsy" : SynExpr)); -//# 11514 "pars.fs" +//# 11536 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4104 "src/Compiler/pars.fsy" +//# 4106 "src/Compiler/pars.fsy" errorR (Error(FSComp.SR.parsIncompleteIf (), rhs parseState 1)) let m = rhs parseState 1 let mEnd = m.EndRange @@ -11525,97 +11547,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) ) -//# 4104 "src/Compiler/pars.fsy" +//# 4106 "src/Compiler/pars.fsy" : SynExpr)); -//# 11530 "pars.fs" +//# 11552 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4112 "src/Compiler/pars.fsy" +//# 4114 "src/Compiler/pars.fsy" SynExpr.Lazy(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 4112 "src/Compiler/pars.fsy" +//# 4114 "src/Compiler/pars.fsy" : SynExpr)); -//# 11541 "pars.fs" +//# 11563 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4115 "src/Compiler/pars.fsy" +//# 4117 "src/Compiler/pars.fsy" SynExpr.Assert(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 4115 "src/Compiler/pars.fsy" +//# 4117 "src/Compiler/pars.fsy" : SynExpr)); -//# 11552 "pars.fs" +//# 11574 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4118 "src/Compiler/pars.fsy" +//# 4120 "src/Compiler/pars.fsy" raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsAssertIsNotFirstClassValue()) ) -//# 4118 "src/Compiler/pars.fsy" +//# 4120 "src/Compiler/pars.fsy" : SynExpr)); -//# 11562 "pars.fs" +//# 11584 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4121 "src/Compiler/pars.fsy" +//# 4123 "src/Compiler/pars.fsy" SynExpr.Lazy(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 4121 "src/Compiler/pars.fsy" +//# 4123 "src/Compiler/pars.fsy" : SynExpr)); -//# 11573 "pars.fs" +//# 11595 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4124 "src/Compiler/pars.fsy" +//# 4126 "src/Compiler/pars.fsy" SynExpr.Assert(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 4124 "src/Compiler/pars.fsy" +//# 4126 "src/Compiler/pars.fsy" : SynExpr)); -//# 11584 "pars.fs" +//# 11606 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4127 "src/Compiler/pars.fsy" +//# 4129 "src/Compiler/pars.fsy" raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsAssertIsNotFirstClassValue()) ) -//# 4127 "src/Compiler/pars.fsy" +//# 4129 "src/Compiler/pars.fsy" : SynExpr)); -//# 11594 "pars.fs" +//# 11616 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_whileExprCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 4130 "src/Compiler/pars.fsy" +//# 4132 "src/Compiler/pars.fsy" SynExpr.While (_2 (rhs parseState 1)) ) -//# 4130 "src/Compiler/pars.fsy" +//# 4132 "src/Compiler/pars.fsy" : SynExpr)); -//# 11605 "pars.fs" +//# 11627 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_whileExprCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 4133 "src/Compiler/pars.fsy" +//# 4135 "src/Compiler/pars.fsy" let mKeyword = rhs parseState 1 parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.WhileBang mKeyword SynExpr.WhileBang (_2 mKeyword) ) -//# 4133 "src/Compiler/pars.fsy" +//# 4135 "src/Compiler/pars.fsy" : SynExpr)); -//# 11618 "pars.fs" +//# 11640 "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 @@ -11624,16 +11646,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4138 "src/Compiler/pars.fsy" +//# 4140 "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) ) -//# 4138 "src/Compiler/pars.fsy" +//# 4140 "src/Compiler/pars.fsy" : SynExpr)); -//# 11636 "pars.fs" +//# 11658 "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 @@ -11642,16 +11664,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4145 "src/Compiler/pars.fsy" +//# 4147 "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) ) -//# 4145 "src/Compiler/pars.fsy" +//# 4147 "src/Compiler/pars.fsy" : SynExpr)); -//# 11654 "pars.fs" +//# 11676 "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 @@ -11659,16 +11681,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4152 "src/Compiler/pars.fsy" +//# 4154 "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) ) -//# 4152 "src/Compiler/pars.fsy" +//# 4154 "src/Compiler/pars.fsy" : SynExpr)); -//# 11671 "pars.fs" +//# 11693 "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 @@ -11676,7 +11698,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4159 "src/Compiler/pars.fsy" +//# 4161 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 if not _4 then reportParseErrorAt mFor (FSComp.SR.parsExpectedExpressionAfterToken ()) let spFor = DebugPointAtFor.Yes mFor @@ -11685,16 +11707,16 @@ let _fsyacc_reductions = lazy [| let bodyExpr = arbExpr ("forLoopBody2", mDo.EndRange) SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, bodyExpr, unionRanges mFor mDo) ) -//# 4159 "src/Compiler/pars.fsy" +//# 4161 "src/Compiler/pars.fsy" : SynExpr)); -//# 11690 "pars.fs" +//# 11712 "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 ( ( -//# 4168 "src/Compiler/pars.fsy" +//# 4170 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 let (pat, expr, ok, spIn) = _2 if not _3 then reportParseErrorAt mFor (FSComp.SR.parsForDoExpected ()) @@ -11704,9 +11726,9 @@ let _fsyacc_reductions = lazy [| let bodyExpr = arbExpr ("forLoopBody1", mForLoopBodyArb) SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, bodyExpr, unionRanges mFor mForLoopBodyArb) ) -//# 4168 "src/Compiler/pars.fsy" +//# 4170 "src/Compiler/pars.fsy" : SynExpr)); -//# 11709 "pars.fs" +//# 11731 "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 @@ -11714,15 +11736,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4178 "src/Compiler/pars.fsy" +//# 4180 "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) ) -//# 4178 "src/Compiler/pars.fsy" +//# 4180 "src/Compiler/pars.fsy" : SynExpr)); -//# 11725 "pars.fs" +//# 11747 "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 @@ -11731,15 +11753,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4184 "src/Compiler/pars.fsy" +//# 4186 "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) ) -//# 4184 "src/Compiler/pars.fsy" +//# 4186 "src/Compiler/pars.fsy" : SynExpr)); -//# 11742 "pars.fs" +//# 11764 "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 @@ -11748,16 +11770,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4190 "src/Compiler/pars.fsy" +//# 4192 "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) ) -//# 4190 "src/Compiler/pars.fsy" +//# 4192 "src/Compiler/pars.fsy" : SynExpr)); -//# 11760 "pars.fs" +//# 11782 "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 @@ -11765,7 +11787,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4197 "src/Compiler/pars.fsy" +//# 4199 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 let spFor = DebugPointAtFor.Yes mFor let (a, b, c, d, exprTo, spTo) = _2 @@ -11773,9 +11795,9 @@ let _fsyacc_reductions = lazy [| let bodyExpr = arbExpr ("declExpr11", mForLoopBodyArb) SynExpr.For(spFor, spTo, a, b, c, d, exprTo, bodyExpr, unionRanges mFor _5) ) -//# 4197 "src/Compiler/pars.fsy" +//# 4199 "src/Compiler/pars.fsy" : SynExpr)); -//# 11778 "pars.fs" +//# 11800 "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 @@ -11783,7 +11805,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4205 "src/Compiler/pars.fsy" +//# 4207 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 if not _4 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ()) let spFor = DebugPointAtFor.Yes mFor @@ -11792,16 +11814,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) ) -//# 4205 "src/Compiler/pars.fsy" +//# 4207 "src/Compiler/pars.fsy" : SynExpr)); -//# 11797 "pars.fs" +//# 11819 "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 ( ( -//# 4214 "src/Compiler/pars.fsy" +//# 4216 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 if not _3 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ()) let spFor = DebugPointAtFor.Yes mFor @@ -11810,9 +11832,9 @@ let _fsyacc_reductions = lazy [| let bodyExpr = arbExpr ("declExpr11", mExpr.EndRange) SynExpr.For(spFor, spTo, a, b, c, d, exprTo, bodyExpr, unionRanges mFor mExpr) ) -//# 4214 "src/Compiler/pars.fsy" +//# 4216 "src/Compiler/pars.fsy" : SynExpr)); -//# 11815 "pars.fs" +//# 11837 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_doToken in let _4 = parseState.GetInput(4) :?> SynExpr in @@ -11820,7 +11842,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4223 "src/Compiler/pars.fsy" +//# 4225 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 let spToFake = DebugPointAtInOrTo.Yes mFor let spFor = DebugPointAtFor.Yes mFor @@ -11828,28 +11850,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) ) -//# 4223 "src/Compiler/pars.fsy" +//# 4225 "src/Compiler/pars.fsy" : SynExpr)); -//# 11833 "pars.fs" +//# 11855 "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 ( ( -//# 4231 "src/Compiler/pars.fsy" +//# 4233 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsIdentifierExpected()) arbExpr ("declExpr12", (rhs parseState 1)) ) -//# 4231 "src/Compiler/pars.fsy" +//# 4233 "src/Compiler/pars.fsy" : SynExpr)); -//# 11845 "pars.fs" +//# 11867 "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 ( ( -//# 4235 "src/Compiler/pars.fsy" +//# 4237 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsInOrEqualExpected()) let mFor = rhs parseState 1 let spFor = DebugPointAtFor.Yes mFor @@ -11858,16 +11880,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) ) -//# 4235 "src/Compiler/pars.fsy" +//# 4237 "src/Compiler/pars.fsy" : SynExpr)); -//# 11863 "pars.fs" +//# 11885 "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 ( ( -//# 4244 "src/Compiler/pars.fsy" +//# 4246 "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 @@ -11877,59 +11899,59 @@ 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)) ) -//# 4244 "src/Compiler/pars.fsy" +//# 4246 "src/Compiler/pars.fsy" : SynExpr)); -//# 11882 "pars.fs" +//# 11904 "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 ( ( -//# 4254 "src/Compiler/pars.fsy" +//# 4256 "src/Compiler/pars.fsy" SynExpr.YieldOrReturn((_1, not _1), _2, unionRanges (rhs parseState 1) _2.Range) ) -//# 4254 "src/Compiler/pars.fsy" +//# 4256 "src/Compiler/pars.fsy" : SynExpr)); -//# 11894 "pars.fs" +//# 11916 "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 ( ( -//# 4257 "src/Compiler/pars.fsy" +//# 4259 "src/Compiler/pars.fsy" SynExpr.YieldOrReturnFrom((_1, not _1), _2, unionRanges (rhs parseState 1) _2.Range) ) -//# 4257 "src/Compiler/pars.fsy" +//# 4259 "src/Compiler/pars.fsy" : SynExpr)); -//# 11906 "pars.fs" +//# 11928 "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 ( ( -//# 4260 "src/Compiler/pars.fsy" +//# 4262 "src/Compiler/pars.fsy" let mYieldAll = rhs parseState 1 SynExpr.YieldOrReturn((_1, not _1), arbExpr ("yield", mYieldAll), mYieldAll) ) -//# 4260 "src/Compiler/pars.fsy" +//# 4262 "src/Compiler/pars.fsy" : SynExpr)); -//# 11919 "pars.fs" +//# 11941 "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 ( ( -//# 4264 "src/Compiler/pars.fsy" +//# 4266 "src/Compiler/pars.fsy" let mYieldAll = rhs parseState 1 SynExpr.YieldOrReturnFrom((_1, not _1), arbExpr ("yield!", mYieldAll), mYieldAll) ) -//# 4264 "src/Compiler/pars.fsy" +//# 4266 "src/Compiler/pars.fsy" : SynExpr)); -//# 11932 "pars.fs" +//# 11954 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> SynPat in @@ -11940,16 +11962,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4268 "src/Compiler/pars.fsy" +//# 4270 "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 } SynExpr.LetOrUseBang(spBind, (_1 = "use"), true, _2, _4, _7, _8, m, trivia) ) -//# 4268 "src/Compiler/pars.fsy" +//# 4270 "src/Compiler/pars.fsy" : SynExpr)); -//# 11952 "pars.fs" +//# 11974 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> SynPat in @@ -11961,7 +11983,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4275 "src/Compiler/pars.fsy" +//# 4277 "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) @@ -11970,9 +11992,9 @@ let _fsyacc_reductions = lazy [| let trivia: SynExprLetOrUseBangTrivia = { EqualsRange = Some mEquals } SynExpr.LetOrUseBang(spBind, (_1 = "use"), true, _2, _4, _7, _8, m, trivia) ) -//# 4275 "src/Compiler/pars.fsy" +//# 4277 "src/Compiler/pars.fsy" : SynExpr)); -//# 11975 "pars.fs" +//# 11997 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> SynPat in @@ -11982,7 +12004,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4284 "src/Compiler/pars.fsy" +//# 4286 "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 @@ -11991,9 +12013,9 @@ let _fsyacc_reductions = lazy [| let trivia: SynExprLetOrUseBangTrivia = { EqualsRange = Some mEquals } SynExpr.LetOrUseBang(spBind, (_1 = "use"), true, _2, _4, [], SynExpr.ImplicitZero m, mAll, trivia) ) -//# 4284 "src/Compiler/pars.fsy" +//# 4286 "src/Compiler/pars.fsy" : SynExpr)); -//# 11996 "pars.fs" +//# 12018 "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 @@ -12001,218 +12023,218 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4293 "src/Compiler/pars.fsy" +//# 4295 "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) ) -//# 4293 "src/Compiler/pars.fsy" +//# 4295 "src/Compiler/pars.fsy" : SynExpr)); -//# 12011 "pars.fs" +//# 12033 "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 ( ( -//# 4298 "src/Compiler/pars.fsy" +//# 4300 "src/Compiler/pars.fsy" SynExpr.DoBang(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 4298 "src/Compiler/pars.fsy" +//# 4300 "src/Compiler/pars.fsy" : SynExpr)); -//# 12023 "pars.fs" +//# 12045 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4301 "src/Compiler/pars.fsy" +//# 4303 "src/Compiler/pars.fsy" SynExpr.Fixed(_2, (unionRanges (rhs parseState 1) _2.Range)) ) -//# 4301 "src/Compiler/pars.fsy" +//# 4303 "src/Compiler/pars.fsy" : SynExpr)); -//# 12034 "pars.fs" +//# 12056 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in Microsoft.FSharp.Core.Operators.box ( ( -//# 4304 "src/Compiler/pars.fsy" +//# 4306 "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)) ) -//# 4304 "src/Compiler/pars.fsy" +//# 4306 "src/Compiler/pars.fsy" : SynExpr)); -//# 12048 "pars.fs" +//# 12070 "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 ( ( -//# 4310 "src/Compiler/pars.fsy" +//# 4312 "src/Compiler/pars.fsy" SynExpr.TypeTest(_1, _3, unionRanges _1.Range _3.Range) ) -//# 4310 "src/Compiler/pars.fsy" +//# 4312 "src/Compiler/pars.fsy" : SynExpr)); -//# 12060 "pars.fs" +//# 12082 "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 ( ( -//# 4313 "src/Compiler/pars.fsy" +//# 4315 "src/Compiler/pars.fsy" let mColon = rhs parseState 2 let ty = SynType.FromParseError(mColon.EndRange) SynExpr.TypeTest(_1, ty, unionRanges _1.Range mColon) ) -//# 4313 "src/Compiler/pars.fsy" +//# 4315 "src/Compiler/pars.fsy" : SynExpr)); -//# 12074 "pars.fs" +//# 12096 "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 ( ( -//# 4318 "src/Compiler/pars.fsy" +//# 4320 "src/Compiler/pars.fsy" SynExpr.Upcast(_1, _3, unionRanges _1.Range _3.Range) ) -//# 4318 "src/Compiler/pars.fsy" +//# 4320 "src/Compiler/pars.fsy" : SynExpr)); -//# 12086 "pars.fs" +//# 12108 "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 ( ( -//# 4321 "src/Compiler/pars.fsy" +//# 4323 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 let ty = SynType.FromParseError(mOp.EndRange) SynExpr.Upcast(_1, ty, unionRanges _1.Range mOp) ) -//# 4321 "src/Compiler/pars.fsy" +//# 4323 "src/Compiler/pars.fsy" : SynExpr)); -//# 12100 "pars.fs" +//# 12122 "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 ( ( -//# 4326 "src/Compiler/pars.fsy" +//# 4328 "src/Compiler/pars.fsy" SynExpr.Downcast(_1, _3, unionRanges _1.Range _3.Range) ) -//# 4326 "src/Compiler/pars.fsy" +//# 4328 "src/Compiler/pars.fsy" : SynExpr)); -//# 12112 "pars.fs" +//# 12134 "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 ( ( -//# 4329 "src/Compiler/pars.fsy" +//# 4331 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 let ty = SynType.FromParseError(mOp.EndRange) SynExpr.Downcast(_1, ty, unionRanges _1.Range mOp) ) -//# 4329 "src/Compiler/pars.fsy" +//# 4331 "src/Compiler/pars.fsy" : SynExpr)); -//# 12126 "pars.fs" +//# 12148 "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 ( ( -//# 4334 "src/Compiler/pars.fsy" +//# 4336 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 ":=" _3 ) -//# 4334 "src/Compiler/pars.fsy" +//# 4336 "src/Compiler/pars.fsy" : SynExpr)); -//# 12138 "pars.fs" +//# 12160 "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 ( ( -//# 4337 "src/Compiler/pars.fsy" +//# 4339 "src/Compiler/pars.fsy" mkSynAssign _1 _3 ) -//# 4337 "src/Compiler/pars.fsy" +//# 4339 "src/Compiler/pars.fsy" : SynExpr)); -//# 12150 "pars.fs" +//# 12172 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr list * range list in Microsoft.FSharp.Core.Operators.box ( ( -//# 4340 "src/Compiler/pars.fsy" +//# 4342 "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) ) -//# 4340 "src/Compiler/pars.fsy" +//# 4342 "src/Compiler/pars.fsy" : SynExpr)); -//# 12163 "pars.fs" +//# 12185 "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 ( ( -//# 4345 "src/Compiler/pars.fsy" +//# 4347 "src/Compiler/pars.fsy" SynExpr.JoinIn(_1, rhs parseState 2, _3, unionRanges _1.Range _3.Range) ) -//# 4345 "src/Compiler/pars.fsy" +//# 4347 "src/Compiler/pars.fsy" : SynExpr)); -//# 12175 "pars.fs" +//# 12197 "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 ( ( -//# 4348 "src/Compiler/pars.fsy" +//# 4350 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "in") mkSynInfix mOp _1 "@in" (arbExpr ("declExprInfixJoinIn", mOp.EndRange)) ) -//# 4348 "src/Compiler/pars.fsy" +//# 4350 "src/Compiler/pars.fsy" : SynExpr)); -//# 12189 "pars.fs" +//# 12211 "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 ( ( -//# 4353 "src/Compiler/pars.fsy" +//# 4355 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 "||" _3 ) -//# 4353 "src/Compiler/pars.fsy" +//# 4355 "src/Compiler/pars.fsy" : SynExpr)); -//# 12201 "pars.fs" +//# 12223 "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 ( ( -//# 4356 "src/Compiler/pars.fsy" +//# 4358 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "||") mkSynInfix mOp _1 "||" (arbExpr ("declExprInfixBarBar", mOp.EndRange)) ) -//# 4356 "src/Compiler/pars.fsy" +//# 4358 "src/Compiler/pars.fsy" : SynExpr)); -//# 12215 "pars.fs" +//# 12237 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12220,12 +12242,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4361 "src/Compiler/pars.fsy" +//# 4363 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4361 "src/Compiler/pars.fsy" +//# 4363 "src/Compiler/pars.fsy" : SynExpr)); -//# 12228 "pars.fs" +//# 12250 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12233,91 +12255,91 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4364 "src/Compiler/pars.fsy" +//# 4366 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixBarOp", mOp.EndRange)) ) -//# 4364 "src/Compiler/pars.fsy" +//# 4366 "src/Compiler/pars.fsy" : SynExpr)); -//# 12243 "pars.fs" +//# 12265 "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 ( ( -//# 4369 "src/Compiler/pars.fsy" +//# 4371 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 "or" _3 ) -//# 4369 "src/Compiler/pars.fsy" +//# 4371 "src/Compiler/pars.fsy" : SynExpr)); -//# 12255 "pars.fs" +//# 12277 "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 ( ( -//# 4372 "src/Compiler/pars.fsy" +//# 4374 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression "or") mkSynInfix (rhs parseState 2) _1 "or" (arbExpr ("declExprInfixOr", (rhs parseState 3).StartRange)) ) -//# 4372 "src/Compiler/pars.fsy" +//# 4374 "src/Compiler/pars.fsy" : SynExpr)); -//# 12268 "pars.fs" +//# 12290 "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 ( ( -//# 4376 "src/Compiler/pars.fsy" +//# 4378 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 "&" _3 ) -//# 4376 "src/Compiler/pars.fsy" +//# 4378 "src/Compiler/pars.fsy" : SynExpr)); -//# 12280 "pars.fs" +//# 12302 "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 ( ( -//# 4379 "src/Compiler/pars.fsy" +//# 4381 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "&") mkSynInfix mOp _1 "&" (arbExpr ("declExprInfixAmp", mOp.EndRange)) ) -//# 4379 "src/Compiler/pars.fsy" +//# 4381 "src/Compiler/pars.fsy" : SynExpr)); -//# 12294 "pars.fs" +//# 12316 "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 ( ( -//# 4384 "src/Compiler/pars.fsy" +//# 4386 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 "&&" _3 ) -//# 4384 "src/Compiler/pars.fsy" +//# 4386 "src/Compiler/pars.fsy" : SynExpr)); -//# 12306 "pars.fs" +//# 12328 "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 ( ( -//# 4387 "src/Compiler/pars.fsy" +//# 4389 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "&&") mkSynInfix mOp _1 "&&" (arbExpr ("declExprInfixAmpAmp", mOp.EndRange)) ) -//# 4387 "src/Compiler/pars.fsy" +//# 4389 "src/Compiler/pars.fsy" : SynExpr)); -//# 12320 "pars.fs" +//# 12342 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12325,12 +12347,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4392 "src/Compiler/pars.fsy" +//# 4394 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4392 "src/Compiler/pars.fsy" +//# 4394 "src/Compiler/pars.fsy" : SynExpr)); -//# 12333 "pars.fs" +//# 12355 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12338,40 +12360,40 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4395 "src/Compiler/pars.fsy" +//# 4397 "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)) ) -//# 4395 "src/Compiler/pars.fsy" +//# 4397 "src/Compiler/pars.fsy" : SynExpr)); -//# 12348 "pars.fs" +//# 12370 "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 ( ( -//# 4400 "src/Compiler/pars.fsy" +//# 4402 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 "=" _3 ) -//# 4400 "src/Compiler/pars.fsy" +//# 4402 "src/Compiler/pars.fsy" : SynExpr)); -//# 12360 "pars.fs" +//# 12382 "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 ( ( -//# 4403 "src/Compiler/pars.fsy" +//# 4405 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "=") mkSynInfix mOp _1 "=" (arbExpr ("declExprInfixEquals", mOp.EndRange)) ) -//# 4403 "src/Compiler/pars.fsy" +//# 4405 "src/Compiler/pars.fsy" : SynExpr)); -//# 12374 "pars.fs" +//# 12396 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12379,12 +12401,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4408 "src/Compiler/pars.fsy" +//# 4410 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4408 "src/Compiler/pars.fsy" +//# 4410 "src/Compiler/pars.fsy" : SynExpr)); -//# 12387 "pars.fs" +//# 12409 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12392,40 +12414,40 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4411 "src/Compiler/pars.fsy" +//# 4413 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) mkSynInfix mOp _1 _2 (arbExpr ("declExprInfix", mOp.EndRange)) ) -//# 4411 "src/Compiler/pars.fsy" +//# 4413 "src/Compiler/pars.fsy" : SynExpr)); -//# 12402 "pars.fs" +//# 12424 "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 ( ( -//# 4416 "src/Compiler/pars.fsy" +//# 4418 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 "$" _3 ) -//# 4416 "src/Compiler/pars.fsy" +//# 4418 "src/Compiler/pars.fsy" : SynExpr)); -//# 12414 "pars.fs" +//# 12436 "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 ( ( -//# 4419 "src/Compiler/pars.fsy" +//# 4421 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "$") mkSynInfix mOp _1 "$" (arbExpr ("declExprInfixDollar", mOp.EndRange)) ) -//# 4419 "src/Compiler/pars.fsy" +//# 4421 "src/Compiler/pars.fsy" : SynExpr)); -//# 12428 "pars.fs" +//# 12450 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> bool in @@ -12433,12 +12455,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4424 "src/Compiler/pars.fsy" +//# 4426 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 "<" _3 ) -//# 4424 "src/Compiler/pars.fsy" +//# 4426 "src/Compiler/pars.fsy" : SynExpr)); -//# 12441 "pars.fs" +//# 12463 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> bool in @@ -12446,14 +12468,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4427 "src/Compiler/pars.fsy" +//# 4429 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "<") mkSynInfix mOp _1 "<" (arbExpr ("declExprInfixLess", mOp.EndRange)) ) -//# 4427 "src/Compiler/pars.fsy" +//# 4429 "src/Compiler/pars.fsy" : SynExpr)); -//# 12456 "pars.fs" +//# 12478 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> bool in @@ -12461,12 +12483,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4432 "src/Compiler/pars.fsy" +//# 4434 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 ">" _3 ) -//# 4432 "src/Compiler/pars.fsy" +//# 4434 "src/Compiler/pars.fsy" : SynExpr)); -//# 12469 "pars.fs" +//# 12491 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> bool in @@ -12474,14 +12496,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4435 "src/Compiler/pars.fsy" +//# 4437 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression ">") mkSynInfix mOp _1 ">" (arbExpr ("declExprInfixGreater", mOp.EndRange)) ) -//# 4435 "src/Compiler/pars.fsy" +//# 4437 "src/Compiler/pars.fsy" : SynExpr)); -//# 12484 "pars.fs" +//# 12506 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12489,12 +12511,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4440 "src/Compiler/pars.fsy" +//# 4442 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4440 "src/Compiler/pars.fsy" +//# 4442 "src/Compiler/pars.fsy" : SynExpr)); -//# 12497 "pars.fs" +//# 12519 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12502,14 +12524,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4443 "src/Compiler/pars.fsy" +//# 4445 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) mkSynInfix mOp _1 _2 (arbExpr ("declExprInfix", mOp.EndRange)) ) -//# 4443 "src/Compiler/pars.fsy" +//# 4445 "src/Compiler/pars.fsy" : SynExpr)); -//# 12512 "pars.fs" +//# 12534 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12517,12 +12539,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4448 "src/Compiler/pars.fsy" +//# 4450 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4448 "src/Compiler/pars.fsy" +//# 4450 "src/Compiler/pars.fsy" : SynExpr)); -//# 12525 "pars.fs" +//# 12547 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12530,37 +12552,37 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4451 "src/Compiler/pars.fsy" +//# 4453 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixPercent", mOp.EndRange)) ) -//# 4451 "src/Compiler/pars.fsy" +//# 4453 "src/Compiler/pars.fsy" : SynExpr)); -//# 12540 "pars.fs" +//# 12562 "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 ( ( -//# 4456 "src/Compiler/pars.fsy" +//# 4458 "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) ) -//# 4456 "src/Compiler/pars.fsy" +//# 4458 "src/Compiler/pars.fsy" : SynExpr)); -//# 12556 "pars.fs" +//# 12578 "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 ( ( -//# 4463 "src/Compiler/pars.fsy" +//# 4465 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 let m = unionRanges _1.Range mOp reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "::") @@ -12568,9 +12590,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) ) -//# 4463 "src/Compiler/pars.fsy" +//# 4465 "src/Compiler/pars.fsy" : SynExpr)); -//# 12573 "pars.fs" +//# 12595 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12578,12 +12600,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4471 "src/Compiler/pars.fsy" +//# 4473 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4471 "src/Compiler/pars.fsy" +//# 4473 "src/Compiler/pars.fsy" : SynExpr)); -//# 12586 "pars.fs" +//# 12608 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12591,66 +12613,66 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4474 "src/Compiler/pars.fsy" +//# 4476 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixPlusMinus", mOp.EndRange)) ) -//# 4474 "src/Compiler/pars.fsy" +//# 4476 "src/Compiler/pars.fsy" : SynExpr)); -//# 12601 "pars.fs" +//# 12623 "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 ( ( -//# 4479 "src/Compiler/pars.fsy" +//# 4481 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 "-" _3 ) -//# 4479 "src/Compiler/pars.fsy" +//# 4481 "src/Compiler/pars.fsy" : SynExpr)); -//# 12613 "pars.fs" +//# 12635 "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 ( ( -//# 4482 "src/Compiler/pars.fsy" +//# 4484 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "-") mkSynInfix mOp _1 "-" (arbExpr ("declExprInfixMinus", mOp.EndRange)) ) -//# 4482 "src/Compiler/pars.fsy" +//# 4484 "src/Compiler/pars.fsy" : SynExpr)); -//# 12627 "pars.fs" +//# 12649 "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 ( ( -//# 4487 "src/Compiler/pars.fsy" +//# 4489 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 "*" _3 ) -//# 4487 "src/Compiler/pars.fsy" +//# 4489 "src/Compiler/pars.fsy" : SynExpr)); -//# 12639 "pars.fs" +//# 12661 "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 ( ( -//# 4490 "src/Compiler/pars.fsy" +//# 4492 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "*") mkSynInfix mOp _1 "*" (arbExpr ("declExprInfixStar", mOp.EndRange)) ) -//# 4490 "src/Compiler/pars.fsy" +//# 4492 "src/Compiler/pars.fsy" : SynExpr)); -//# 12653 "pars.fs" +//# 12675 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12658,12 +12680,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4495 "src/Compiler/pars.fsy" +//# 4497 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4495 "src/Compiler/pars.fsy" +//# 4497 "src/Compiler/pars.fsy" : SynExpr)); -//# 12666 "pars.fs" +//# 12688 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12671,14 +12693,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4498 "src/Compiler/pars.fsy" +//# 4500 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixStarDivMod", mOp.EndRange)) ) -//# 4498 "src/Compiler/pars.fsy" +//# 4500 "src/Compiler/pars.fsy" : SynExpr)); -//# 12681 "pars.fs" +//# 12703 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12686,12 +12708,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4503 "src/Compiler/pars.fsy" +//# 4505 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4503 "src/Compiler/pars.fsy" +//# 4505 "src/Compiler/pars.fsy" : SynExpr)); -//# 12694 "pars.fs" +//# 12716 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -12699,76 +12721,76 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4506 "src/Compiler/pars.fsy" +//# 4508 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixStarStar", mOp.EndRange)) ) -//# 4506 "src/Compiler/pars.fsy" +//# 4508 "src/Compiler/pars.fsy" : SynExpr)); -//# 12709 "pars.fs" +//# 12731 "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 ( ( -//# 4511 "src/Compiler/pars.fsy" +//# 4513 "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) ) -//# 4511 "src/Compiler/pars.fsy" +//# 4513 "src/Compiler/pars.fsy" : SynExpr)); -//# 12723 "pars.fs" +//# 12745 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4516 "src/Compiler/pars.fsy" +//# 4518 "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) ) -//# 4516 "src/Compiler/pars.fsy" +//# 4518 "src/Compiler/pars.fsy" : SynExpr)); -//# 12736 "pars.fs" +//# 12758 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4521 "src/Compiler/pars.fsy" +//# 4523 "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) ) -//# 4521 "src/Compiler/pars.fsy" +//# 4523 "src/Compiler/pars.fsy" : SynExpr)); -//# 12749 "pars.fs" +//# 12771 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4526 "src/Compiler/pars.fsy" +//# 4528 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynExpr.IndexRange(None, m, None, m, m, m) ) -//# 4526 "src/Compiler/pars.fsy" +//# 4528 "src/Compiler/pars.fsy" : SynExpr)); -//# 12760 "pars.fs" +//# 12782 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4529 "src/Compiler/pars.fsy" +//# 4531 "src/Compiler/pars.fsy" _1 ) -//# 4529 "src/Compiler/pars.fsy" +//# 4531 "src/Compiler/pars.fsy" : SynExpr)); -//# 12771 "pars.fs" +//# 12793 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> 'gentype_doToken in @@ -12777,16 +12799,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4533 "src/Compiler/pars.fsy" +//# 4535 "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 ) -//# 4533 "src/Compiler/pars.fsy" +//# 4535 "src/Compiler/pars.fsy" : 'gentype_whileExprCore)); -//# 12789 "pars.fs" +//# 12811 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> 'gentype_doToken in @@ -12795,7 +12817,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4541 "src/Compiler/pars.fsy" +//# 4543 "src/Compiler/pars.fsy" fun mKeyword -> if not _4 then reportParseErrorAt mKeyword (FSComp.SR.parsUnexpectedEndOfFileWhile ()) let mWhileHeader = unionRanges mKeyword _1.Range @@ -12803,9 +12825,9 @@ let _fsyacc_reductions = lazy [| let mWhileAll = unionRanges mKeyword _3.Range spWhile, _1, _3, mWhileAll ) -//# 4541 "src/Compiler/pars.fsy" +//# 4543 "src/Compiler/pars.fsy" : 'gentype_whileExprCore)); -//# 12808 "pars.fs" +//# 12830 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> 'gentype_doToken in @@ -12813,7 +12835,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4550 "src/Compiler/pars.fsy" +//# 4552 "src/Compiler/pars.fsy" let mWhileBodyArb = rhs parseState 3 fun mKeyword -> @@ -12823,16 +12845,16 @@ let _fsyacc_reductions = lazy [| let bodyArb = arbExpr ("whileBody1", mWhileBodyArb) spWhile, _1, bodyArb, mWhileAll ) -//# 4550 "src/Compiler/pars.fsy" +//# 4552 "src/Compiler/pars.fsy" : 'gentype_whileExprCore)); -//# 12828 "pars.fs" +//# 12850 "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 ( ( -//# 4561 "src/Compiler/pars.fsy" +//# 4563 "src/Compiler/pars.fsy" fun mKeyword -> reportParseErrorAt mKeyword (FSComp.SR.parsWhileDoExpected()) let mWhileHeader = unionRanges mKeyword _1.Range @@ -12841,15 +12863,15 @@ let _fsyacc_reductions = lazy [| let bodyArb = arbExpr ("whileBody2", _1.Range.EndRange) spWhile, _1, bodyArb, mWhileAll ) -//# 4561 "src/Compiler/pars.fsy" +//# 4563 "src/Compiler/pars.fsy" : 'gentype_whileExprCore)); -//# 12846 "pars.fs" +//# 12868 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4571 "src/Compiler/pars.fsy" +//# 4573 "src/Compiler/pars.fsy" fun mKeyword -> if not _1 then reportParseErrorAt mKeyword (FSComp.SR.parsUnexpectedEndOfFileWhile ()) let spWhile = DebugPointAtWhile.Yes mKeyword @@ -12858,15 +12880,15 @@ let _fsyacc_reductions = lazy [| spWhile, expr1, expr2, mKeyword ) -//# 4571 "src/Compiler/pars.fsy" +//# 4573 "src/Compiler/pars.fsy" : 'gentype_whileExprCore)); -//# 12863 "pars.fs" +//# 12885 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_doneDeclEnd in Microsoft.FSharp.Core.Operators.box ( ( -//# 4580 "src/Compiler/pars.fsy" +//# 4582 "src/Compiler/pars.fsy" let mWhileBodyArb = rhs parseState 1 fun mKeyword -> @@ -12877,150 +12899,150 @@ let _fsyacc_reductions = lazy [| spWhile, expr1, expr2, mWhileAll ) -//# 4580 "src/Compiler/pars.fsy" +//# 4582 "src/Compiler/pars.fsy" : 'gentype_whileExprCore)); -//# 12882 "pars.fs" +//# 12904 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 4592 "src/Compiler/pars.fsy" +//# 4594 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynExpr.Ident(Ident(_1, m)) ) -//# 4592 "src/Compiler/pars.fsy" +//# 4594 "src/Compiler/pars.fsy" : 'gentype_dynamicArg)); -//# 12894 "pars.fs" +//# 12916 "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 ( ( -//# 4596 "src/Compiler/pars.fsy" +//# 4598 "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) ) -//# 4596 "src/Compiler/pars.fsy" +//# 4598 "src/Compiler/pars.fsy" : 'gentype_dynamicArg)); -//# 12909 "pars.fs" +//# 12931 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 4603 "src/Compiler/pars.fsy" +//# 4605 "src/Compiler/pars.fsy" rhs parseState 1, _2 ) -//# 4603 "src/Compiler/pars.fsy" +//# 4605 "src/Compiler/pars.fsy" : 'gentype_withClauses)); -//# 12920 "pars.fs" +//# 12942 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 4606 "src/Compiler/pars.fsy" +//# 4608 "src/Compiler/pars.fsy" rhs parseState 1, _2 ) -//# 4606 "src/Compiler/pars.fsy" +//# 4608 "src/Compiler/pars.fsy" : 'gentype_withClauses)); -//# 12931 "pars.fs" +//# 12953 "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 ( ( -//# 4609 "src/Compiler/pars.fsy" +//# 4611 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWith()) rhs parseState 1, _2 ) -//# 4609 "src/Compiler/pars.fsy" +//# 4611 "src/Compiler/pars.fsy" : 'gentype_withClauses)); -//# 12944 "pars.fs" +//# 12966 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4613 "src/Compiler/pars.fsy" +//# 4615 "src/Compiler/pars.fsy" let mWith = rhs parseState 1 if not _2 then reportParseErrorAt mWith (FSComp.SR.parsUnexpectedEndOfFileWith ()) mWith, ([], mWith.EndRange) ) -//# 4613 "src/Compiler/pars.fsy" +//# 4615 "src/Compiler/pars.fsy" : 'gentype_withClauses)); -//# 12957 "pars.fs" +//# 12979 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_patternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 4619 "src/Compiler/pars.fsy" +//# 4621 "src/Compiler/pars.fsy" _1 None ) -//# 4619 "src/Compiler/pars.fsy" +//# 4621 "src/Compiler/pars.fsy" : 'gentype_withPatternClauses)); -//# 12968 "pars.fs" +//# 12990 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_patternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 4622 "src/Compiler/pars.fsy" +//# 4624 "src/Compiler/pars.fsy" let mBar = rhs parseState 1 |> Some _2 mBar ) -//# 4622 "src/Compiler/pars.fsy" +//# 4624 "src/Compiler/pars.fsy" : 'gentype_withPatternClauses)); -//# 12980 "pars.fs" +//# 13002 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4626 "src/Compiler/pars.fsy" +//# 4628 "src/Compiler/pars.fsy" // silent recovery let mLast = rhs parseState 1 [], mLast ) -//# 4626 "src/Compiler/pars.fsy" +//# 4628 "src/Compiler/pars.fsy" : 'gentype_withPatternClauses)); -//# 12992 "pars.fs" +//# 13014 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4631 "src/Compiler/pars.fsy" +//# 4633 "src/Compiler/pars.fsy" // silent recovery let mLast = rhs parseState 1 [], mLast ) -//# 4631 "src/Compiler/pars.fsy" +//# 4633 "src/Compiler/pars.fsy" : 'gentype_withPatternClauses)); -//# 13004 "pars.fs" +//# 13026 "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 ( ( -//# 4638 "src/Compiler/pars.fsy" +//# 4640 "src/Compiler/pars.fsy" _1, _2 ) -//# 4638 "src/Compiler/pars.fsy" +//# 4640 "src/Compiler/pars.fsy" : 'gentype_patternAndGuard)); -//# 13016 "pars.fs" +//# 13038 "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 ( ( -//# 4642 "src/Compiler/pars.fsy" +//# 4644 "src/Compiler/pars.fsy" let pat, guard = _1 let mArrow, resultExpr = _2 let mLast = resultExpr.Range @@ -13028,9 +13050,9 @@ let _fsyacc_reductions = lazy [| fun mBar -> [SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar })], mLast ) -//# 4642 "src/Compiler/pars.fsy" +//# 4644 "src/Compiler/pars.fsy" : 'gentype_patternClauses)); -//# 13033 "pars.fs" +//# 13055 "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 @@ -13038,7 +13060,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4650 "src/Compiler/pars.fsy" +//# 4652 "src/Compiler/pars.fsy" let pat, guard = _1 let mArrow, resultExpr = _2 let mNextBar = rhs parseState 3 |> Some @@ -13047,16 +13069,16 @@ let _fsyacc_reductions = lazy [| fun mBar -> (SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar }) :: clauses), mLast ) -//# 4650 "src/Compiler/pars.fsy" +//# 4652 "src/Compiler/pars.fsy" : 'gentype_patternClauses)); -//# 13052 "pars.fs" +//# 13074 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in let _4 = parseState.GetInput(4) :?> 'gentype_patternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 4659 "src/Compiler/pars.fsy" +//# 4661 "src/Compiler/pars.fsy" let pat, guard = _1 let mNextBar = rhs parseState 3 |> Some let clauses, mLast = _4 mNextBar @@ -13065,9 +13087,9 @@ let _fsyacc_reductions = lazy [| fun _mBar -> (SynMatchClause(pat, guard, arbExpr ("patternClauses1", m.EndRange), m, DebugPointAtTarget.Yes, SynMatchClauseTrivia.Zero) :: clauses), mLast ) -//# 4659 "src/Compiler/pars.fsy" +//# 4661 "src/Compiler/pars.fsy" : 'gentype_patternClauses)); -//# 13070 "pars.fs" +//# 13092 "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 @@ -13075,7 +13097,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4668 "src/Compiler/pars.fsy" +//# 4670 "src/Compiler/pars.fsy" let pat, guard = _1 let mArrow, resultExpr = _2 let mLast = rhs parseState 3 @@ -13083,9 +13105,9 @@ let _fsyacc_reductions = lazy [| fun mBar -> [SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar })], mLast ) -//# 4668 "src/Compiler/pars.fsy" +//# 4670 "src/Compiler/pars.fsy" : 'gentype_patternClauses)); -//# 13088 "pars.fs" +//# 13110 "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 @@ -13093,73 +13115,73 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4676 "src/Compiler/pars.fsy" +//# 4678 "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 ) -//# 4676 "src/Compiler/pars.fsy" +//# 4678 "src/Compiler/pars.fsy" : 'gentype_patternClauses)); -//# 13105 "pars.fs" +//# 13127 "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 ( ( -//# 4683 "src/Compiler/pars.fsy" +//# 4685 "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 ) -//# 4683 "src/Compiler/pars.fsy" +//# 4685 "src/Compiler/pars.fsy" : 'gentype_patternClauses)); -//# 13121 "pars.fs" +//# 13143 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4691 "src/Compiler/pars.fsy" +//# 4693 "src/Compiler/pars.fsy" Some _2 ) -//# 4691 "src/Compiler/pars.fsy" +//# 4693 "src/Compiler/pars.fsy" : 'gentype_patternGuard)); -//# 13132 "pars.fs" +//# 13154 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4694 "src/Compiler/pars.fsy" +//# 4696 "src/Compiler/pars.fsy" None ) -//# 4694 "src/Compiler/pars.fsy" +//# 4696 "src/Compiler/pars.fsy" : 'gentype_patternGuard)); -//# 13142 "pars.fs" +//# 13164 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in Microsoft.FSharp.Core.Operators.box ( ( -//# 4698 "src/Compiler/pars.fsy" +//# 4700 "src/Compiler/pars.fsy" let mArrow = rhs parseState 1 let expr = _2 mArrow mArrow, expr ) -//# 4698 "src/Compiler/pars.fsy" +//# 4700 "src/Compiler/pars.fsy" : range * SynExpr)); -//# 13155 "pars.fs" +//# 13177 "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 ( ( -//# 4704 "src/Compiler/pars.fsy" +//# 4706 "src/Compiler/pars.fsy" let exprThen, mThen = _1 let mElse, elseExpr = _2 (fun exprGuard mIf isElif -> @@ -13170,96 +13192,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)) ) -//# 4704 "src/Compiler/pars.fsy" +//# 4706 "src/Compiler/pars.fsy" : 'gentype_ifExprCases)); -//# 13175 "pars.fs" +//# 13197 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4716 "src/Compiler/pars.fsy" +//# 4718 "src/Compiler/pars.fsy" _2, rhs parseState 1 ) -//# 4716 "src/Compiler/pars.fsy" +//# 4718 "src/Compiler/pars.fsy" : 'gentype_ifExprThen)); -//# 13186 "pars.fs" +//# 13208 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4719 "src/Compiler/pars.fsy" +//# 4721 "src/Compiler/pars.fsy" let mThen = rhs parseState 1 arbExpr ("ifThen1", mThen.EndRange), mThen ) -//# 4719 "src/Compiler/pars.fsy" +//# 4721 "src/Compiler/pars.fsy" : 'gentype_ifExprThen)); -//# 13198 "pars.fs" +//# 13220 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4723 "src/Compiler/pars.fsy" +//# 4725 "src/Compiler/pars.fsy" _2, rhs parseState 1 ) -//# 4723 "src/Compiler/pars.fsy" +//# 4725 "src/Compiler/pars.fsy" : 'gentype_ifExprThen)); -//# 13209 "pars.fs" +//# 13231 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4726 "src/Compiler/pars.fsy" +//# 4728 "src/Compiler/pars.fsy" let mThen = rhs parseState 1 arbExpr ("ifThen2", mThen.EndRange), mThen ) -//# 4726 "src/Compiler/pars.fsy" +//# 4728 "src/Compiler/pars.fsy" : 'gentype_ifExprThen)); -//# 13221 "pars.fs" +//# 13243 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4731 "src/Compiler/pars.fsy" +//# 4733 "src/Compiler/pars.fsy" None, None ) -//# 4731 "src/Compiler/pars.fsy" +//# 4733 "src/Compiler/pars.fsy" : 'gentype_ifExprElifs)); -//# 13231 "pars.fs" +//# 13253 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4734 "src/Compiler/pars.fsy" +//# 4736 "src/Compiler/pars.fsy" let mElse = rhs parseState 1 Some mElse, Some _2 ) -//# 4734 "src/Compiler/pars.fsy" +//# 4736 "src/Compiler/pars.fsy" : 'gentype_ifExprElifs)); -//# 13243 "pars.fs" +//# 13265 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4738 "src/Compiler/pars.fsy" +//# 4740 "src/Compiler/pars.fsy" let mElse = rhs parseState 1 Some mElse, Some _2 ) -//# 4738 "src/Compiler/pars.fsy" +//# 4740 "src/Compiler/pars.fsy" : 'gentype_ifExprElifs)); -//# 13255 "pars.fs" +//# 13277 "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 ( ( -//# 4742 "src/Compiler/pars.fsy" +//# 4744 "src/Compiler/pars.fsy" let mElif = rhs parseState 1 // verify if `ELIF` is not a merged token let length = mElif.EndColumn - mElif.StartColumn @@ -13270,57 +13292,57 @@ let _fsyacc_reductions = lazy [| else None, Some(_3 _2 mElif true) ) -//# 4742 "src/Compiler/pars.fsy" +//# 4744 "src/Compiler/pars.fsy" : 'gentype_ifExprElifs)); -//# 13275 "pars.fs" +//# 13297 "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 ( ( -//# 4753 "src/Compiler/pars.fsy" +//# 4755 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileElif()) None, Some(exprFromParseError _2) ) -//# 4753 "src/Compiler/pars.fsy" +//# 4755 "src/Compiler/pars.fsy" : 'gentype_ifExprElifs)); -//# 13288 "pars.fs" +//# 13310 "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 ( ( -//# 4758 "src/Compiler/pars.fsy" +//# 4760 "src/Compiler/pars.fsy" let exprs, commas = _1 _3 :: exprs, (rhs parseState 2 :: commas) ) -//# 4758 "src/Compiler/pars.fsy" +//# 4760 "src/Compiler/pars.fsy" : SynExpr list * range list)); -//# 13301 "pars.fs" +//# 13323 "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 ( ( -//# 4762 "src/Compiler/pars.fsy" +//# 4764 "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 ) -//# 4762 "src/Compiler/pars.fsy" +//# 4764 "src/Compiler/pars.fsy" : SynExpr list * range list)); -//# 13316 "pars.fs" +//# 13338 "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 ( ( -//# 4768 "src/Compiler/pars.fsy" +//# 4770 "src/Compiler/pars.fsy" let exprs, commas = _1 let mComma1 = rhs parseState 2 let mComma2 = rhs parseState 3 @@ -13328,16 +13350,16 @@ let _fsyacc_reductions = lazy [| let expr = arbExpr ("tupleExpr2", mComma1.EndRange) _4 :: expr :: exprs, (mComma2 :: mComma1 :: commas) ) -//# 4768 "src/Compiler/pars.fsy" +//# 4770 "src/Compiler/pars.fsy" : SynExpr list * range list)); -//# 13333 "pars.fs" +//# 13355 "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 ( ( -//# 4776 "src/Compiler/pars.fsy" +//# 4778 "src/Compiler/pars.fsy" let exprs, commas = _1 let mComma1 = rhs parseState 2 let mComma2 = rhs parseState 3 @@ -13347,42 +13369,42 @@ let _fsyacc_reductions = lazy [| let expr2 = arbExpr ("tupleExpr4", mComma2.EndRange) expr2 :: expr1 :: exprs, mComma2 :: mComma1 :: commas ) -//# 4776 "src/Compiler/pars.fsy" +//# 4778 "src/Compiler/pars.fsy" : SynExpr list * range list)); -//# 13352 "pars.fs" +//# 13374 "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 ( ( -//# 4786 "src/Compiler/pars.fsy" +//# 4788 "src/Compiler/pars.fsy" let commaRange = rhs parseState 2 if not _3 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedExpressionAfterToken ()) [arbExpr ("tupleExpr5", commaRange.EndRange); _1], [commaRange] ) -//# 4786 "src/Compiler/pars.fsy" +//# 4788 "src/Compiler/pars.fsy" : SynExpr list * range list)); -//# 13366 "pars.fs" +//# 13388 "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 ( ( -//# 4791 "src/Compiler/pars.fsy" +//# 4793 "src/Compiler/pars.fsy" [_3; _1], [rhs parseState 2] ) -//# 4791 "src/Compiler/pars.fsy" +//# 4793 "src/Compiler/pars.fsy" : SynExpr list * range list)); -//# 13378 "pars.fs" +//# 13400 "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 ( ( -//# 4794 "src/Compiler/pars.fsy" +//# 4796 "src/Compiler/pars.fsy" let mComma1 = rhs parseState 2 let mComma2 = rhs parseState 3 reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) @@ -13391,111 +13413,111 @@ let _fsyacc_reductions = lazy [| let expr2 = arbExpr ("tupleExpr7", mComma2.EndRange) [expr2; expr1; _1], [mComma2; mComma1] ) -//# 4794 "src/Compiler/pars.fsy" +//# 4796 "src/Compiler/pars.fsy" : SynExpr list * range list)); -//# 13396 "pars.fs" +//# 13418 "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 ( ( -//# 4803 "src/Compiler/pars.fsy" +//# 4805 "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] ) -//# 4803 "src/Compiler/pars.fsy" +//# 4805 "src/Compiler/pars.fsy" : SynExpr list * range list)); -//# 13412 "pars.fs" +//# 13434 "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 ( ( -//# 4811 "src/Compiler/pars.fsy" +//# 4813 "src/Compiler/pars.fsy" if _1 <> "^" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidPrefixOperator()) let m = (rhs2 parseState 1 2) SynExpr.IndexFromEnd(_2, m) ) -//# 4811 "src/Compiler/pars.fsy" +//# 4813 "src/Compiler/pars.fsy" : SynExpr)); -//# 13426 "pars.fs" +//# 13448 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4816 "src/Compiler/pars.fsy" +//# 4818 "src/Compiler/pars.fsy" mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) "~-" _2 ) -//# 4816 "src/Compiler/pars.fsy" +//# 4818 "src/Compiler/pars.fsy" : SynExpr)); -//# 13437 "pars.fs" +//# 13459 "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 ( ( -//# 4819 "src/Compiler/pars.fsy" +//# 4821 "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 ) -//# 4819 "src/Compiler/pars.fsy" +//# 4821 "src/Compiler/pars.fsy" : SynExpr)); -//# 13450 "pars.fs" +//# 13472 "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 ( ( -//# 4823 "src/Compiler/pars.fsy" +//# 4825 "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 ) -//# 4823 "src/Compiler/pars.fsy" +//# 4825 "src/Compiler/pars.fsy" : SynExpr)); -//# 13463 "pars.fs" +//# 13485 "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 ( ( -//# 4827 "src/Compiler/pars.fsy" +//# 4829 "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 ) -//# 4827 "src/Compiler/pars.fsy" +//# 4829 "src/Compiler/pars.fsy" : SynExpr)); -//# 13476 "pars.fs" +//# 13498 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4831 "src/Compiler/pars.fsy" +//# 4833 "src/Compiler/pars.fsy" SynExpr.AddressOf(true, _2, rhs parseState 1, unionRanges (rhs parseState 1) _2.Range) ) -//# 4831 "src/Compiler/pars.fsy" +//# 4833 "src/Compiler/pars.fsy" : SynExpr)); -//# 13487 "pars.fs" +//# 13509 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4834 "src/Compiler/pars.fsy" +//# 4836 "src/Compiler/pars.fsy" SynExpr.AddressOf(false, _2, rhs parseState 1, unionRanges (rhs parseState 1) _2.Range) ) -//# 4834 "src/Compiler/pars.fsy" +//# 4836 "src/Compiler/pars.fsy" : SynExpr)); -//# 13498 "pars.fs" +//# 13520 "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 @@ -13504,14 +13526,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4837 "src/Compiler/pars.fsy" +//# 4839 "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) ) -//# 4837 "src/Compiler/pars.fsy" +//# 4839 "src/Compiler/pars.fsy" : SynExpr)); -//# 13514 "pars.fs" +//# 13536 "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 @@ -13519,125 +13541,125 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4842 "src/Compiler/pars.fsy" +//# 4844 "src/Compiler/pars.fsy" SynExpr.New(false, _2, _4, unionRanges (rhs parseState 1) _4.Range) ) -//# 4842 "src/Compiler/pars.fsy" +//# 4844 "src/Compiler/pars.fsy" : SynExpr)); -//# 13527 "pars.fs" +//# 13549 "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 ( ( -//# 4845 "src/Compiler/pars.fsy" +//# 4847 "src/Compiler/pars.fsy" SynExpr.New(false, _2, arbExpr ("minusExpr", (rhs parseState 4)), unionRanges (rhs parseState 1) (_2).Range) ) -//# 4845 "src/Compiler/pars.fsy" +//# 4847 "src/Compiler/pars.fsy" : SynExpr)); -//# 13539 "pars.fs" +//# 13561 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4848 "src/Compiler/pars.fsy" +//# 4850 "src/Compiler/pars.fsy" arbExpr ("minusExpr2", (rhs parseState 1)) ) -//# 4848 "src/Compiler/pars.fsy" +//# 4850 "src/Compiler/pars.fsy" : SynExpr)); -//# 13549 "pars.fs" +//# 13571 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4851 "src/Compiler/pars.fsy" +//# 4853 "src/Compiler/pars.fsy" SynExpr.InferredUpcast(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 4851 "src/Compiler/pars.fsy" +//# 4853 "src/Compiler/pars.fsy" : SynExpr)); -//# 13560 "pars.fs" +//# 13582 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4854 "src/Compiler/pars.fsy" +//# 4856 "src/Compiler/pars.fsy" SynExpr.InferredDowncast(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 4854 "src/Compiler/pars.fsy" +//# 4856 "src/Compiler/pars.fsy" : SynExpr)); -//# 13571 "pars.fs" +//# 13593 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4857 "src/Compiler/pars.fsy" +//# 4859 "src/Compiler/pars.fsy" _1 ) -//# 4857 "src/Compiler/pars.fsy" +//# 4859 "src/Compiler/pars.fsy" : SynExpr)); -//# 13582 "pars.fs" +//# 13604 "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 ( ( -//# 4861 "src/Compiler/pars.fsy" +//# 4863 "src/Compiler/pars.fsy" SynExpr.App(ExprAtomicFlag.NonAtomic, false, _1, _2, unionRanges _1.Range _2.Range) ) -//# 4861 "src/Compiler/pars.fsy" +//# 4863 "src/Compiler/pars.fsy" : SynExpr)); -//# 13594 "pars.fs" +//# 13616 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 4864 "src/Compiler/pars.fsy" +//# 4866 "src/Compiler/pars.fsy" let arg, _ = _1 arg ) -//# 4864 "src/Compiler/pars.fsy" +//# 4866 "src/Compiler/pars.fsy" : SynExpr)); -//# 13606 "pars.fs" +//# 13628 "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 ( ( -//# 4869 "src/Compiler/pars.fsy" +//# 4871 "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 ) -//# 4869 "src/Compiler/pars.fsy" +//# 4871 "src/Compiler/pars.fsy" : SynExpr)); -//# 13621 "pars.fs" +//# 13643 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 4875 "src/Compiler/pars.fsy" +//# 4877 "src/Compiler/pars.fsy" let arg, hpa = _1 if hpa then reportParseErrorAt arg.Range (FSComp.SR.parsSuccessiveArgsShouldBeSpacedOrTupled()) arg ) -//# 4875 "src/Compiler/pars.fsy" +//# 4877 "src/Compiler/pars.fsy" : SynExpr)); -//# 13634 "pars.fs" +//# 13656 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> SynExpr * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 4881 "src/Compiler/pars.fsy" +//# 4883 "src/Compiler/pars.fsy" let mUnderscore = rhs parseState 1 let mDot = rhs parseState 2 parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AccessorFunctionShorthand (unionRanges mUnderscore mDot ) @@ -13645,345 +13667,360 @@ let _fsyacc_reductions = lazy [| let trivia: SynExprDotLambdaTrivia = { UnderscoreRange = mUnderscore ; DotRange = mDot } SynExpr.DotLambda(expr, unionRanges mUnderscore expr.Range, trivia), false ) -//# 4881 "src/Compiler/pars.fsy" +//# 4883 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13650 "pars.fs" +//# 13672 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _3 = parseState.GetInput(3) :?> SynExpr in - let _4 = parseState.GetInput(4) :?> 'gentype_recover in + let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4889 "src/Compiler/pars.fsy" - let mUnderscore = rhs parseState 1 - let mDot = rhs parseState 2 - parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AccessorFunctionShorthand (unionRanges mUnderscore mDot ) - reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnderScoreDotLambdaNonAtomic()) - let expr = _3 +//# 4892 "src/Compiler/pars.fsy" + let mUnderscore = rhs parseState 1 + let mDot = rhs parseState 2 + let mWhole = unionRanges mUnderscore mDot + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AccessorFunctionShorthand mWhole + let mExpr = mDot.EndRange + if not _3 then reportParseErrorAt mDot (FSComp.SR.parsUnexpectedEndOfFileExpression()) + let expr = arbExpr ("dotLambda1", mExpr) let trivia: SynExprDotLambdaTrivia = { UnderscoreRange = mUnderscore ; DotRange = mDot } - SynExpr.DotLambda(expr, unionRanges mUnderscore expr.Range, trivia), false + SynExpr.DotLambda(expr, mWhole, trivia), false ) -//# 4889 "src/Compiler/pars.fsy" +//# 4892 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13668 "pars.fs" +//# 13691 "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" + 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" + : SynExpr * bool)); +//# 13705 "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 ( ( -//# 4898 "src/Compiler/pars.fsy" +//# 4913 "src/Compiler/pars.fsy" let arg1, _ = _1 let arg2, hpa = _3 SynExpr.App(ExprAtomicFlag.Atomic, false, arg1, arg2, unionRanges arg1.Range arg2.Range), hpa ) -//# 4898 "src/Compiler/pars.fsy" +//# 4913 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13682 "pars.fs" +//# 13719 "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 ( ( -//# 4903 "src/Compiler/pars.fsy" +//# 4918 "src/Compiler/pars.fsy" let arg1, _ = _1 let arg2, _ = _3 SynExpr.App(ExprAtomicFlag.Atomic, false, arg1, arg2, unionRanges arg1.Range arg2.Range), true ) -//# 4903 "src/Compiler/pars.fsy" +//# 4918 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13696 "pars.fs" +//# 13733 "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 ( ( -//# 4908 "src/Compiler/pars.fsy" +//# 4923 "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 ) -//# 4908 "src/Compiler/pars.fsy" +//# 4923 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13711 "pars.fs" +//# 13748 "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 ( ( -//# 4914 "src/Compiler/pars.fsy" +//# 4929 "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 ) -//# 4914 "src/Compiler/pars.fsy" +//# 4929 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13725 "pars.fs" +//# 13762 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 4919 "src/Compiler/pars.fsy" +//# 4934 "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 ) -//# 4919 "src/Compiler/pars.fsy" +//# 4934 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13739 "pars.fs" +//# 13776 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4925 "src/Compiler/pars.fsy" +//# 4940 "src/Compiler/pars.fsy" arbExpr ("unfinished identifier", rhs parseState 1), false ) -//# 4925 "src/Compiler/pars.fsy" +//# 4940 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13749 "pars.fs" +//# 13786 "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 ( ( -//# 4928 "src/Compiler/pars.fsy" +//# 4943 "src/Compiler/pars.fsy" let arg1, hpa1 = _1 _3 arg1 (lhs parseState) (rhs parseState 2), hpa1 ) -//# 4928 "src/Compiler/pars.fsy" +//# 4943 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13762 "pars.fs" +//# 13799 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_atomicExprQualification in Microsoft.FSharp.Core.Operators.box ( ( -//# 4932 "src/Compiler/pars.fsy" +//# 4947 "src/Compiler/pars.fsy" let arg1 = SynExpr.Ident(ident("base", rhs parseState 1)) _3 arg1 (lhs parseState) (rhs parseState 2), false ) -//# 4932 "src/Compiler/pars.fsy" +//# 4947 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13774 "pars.fs" +//# 13811 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_nameop in Microsoft.FSharp.Core.Operators.box ( ( -//# 4936 "src/Compiler/pars.fsy" +//# 4951 "src/Compiler/pars.fsy" let (SynIdent(ident, trivia)) = _2 SynExpr.LongIdent(true, SynLongIdent([ident], [], [trivia]), None, rhs parseState 2), false ) -//# 4936 "src/Compiler/pars.fsy" +//# 4951 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13786 "pars.fs" +//# 13823 "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 ( ( -//# 4940 "src/Compiler/pars.fsy" +//# 4955 "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 ) -//# 4940 "src/Compiler/pars.fsy" +//# 4955 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13801 "pars.fs" +//# 13838 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4946 "src/Compiler/pars.fsy" +//# 4961 "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 ) -//# 4946 "src/Compiler/pars.fsy" +//# 4961 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13813 "pars.fs" +//# 13850 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_identExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4951 "src/Compiler/pars.fsy" +//# 4966 "src/Compiler/pars.fsy" _1, false ) -//# 4951 "src/Compiler/pars.fsy" +//# 4966 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13824 "pars.fs" +//# 13861 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_listExprElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 4954 "src/Compiler/pars.fsy" +//# 4969 "src/Compiler/pars.fsy" _2 (lhs parseState), false ) -//# 4954 "src/Compiler/pars.fsy" +//# 4969 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13835 "pars.fs" +//# 13872 "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 ( ( -//# 4957 "src/Compiler/pars.fsy" +//# 4972 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) exprFromParseError (_2 (rhs2 parseState 1 2)), false ) -//# 4957 "src/Compiler/pars.fsy" +//# 4972 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13848 "pars.fs" +//# 13885 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4961 "src/Compiler/pars.fsy" +//# 4976 "src/Compiler/pars.fsy" // silent recovery SynExpr.ArrayOrList(false, [ ], lhs parseState), false ) -//# 4961 "src/Compiler/pars.fsy" +//# 4976 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13859 "pars.fs" +//# 13896 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4965 "src/Compiler/pars.fsy" +//# 4980 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) // silent recovery exprFromParseError (SynExpr.ArrayOrList(false, [ ], rhs parseState 1)), false ) -//# 4965 "src/Compiler/pars.fsy" +//# 4980 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13872 "pars.fs" +//# 13909 "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 ( ( -//# 4970 "src/Compiler/pars.fsy" +//# 4985 "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 ) -//# 4970 "src/Compiler/pars.fsy" +//# 4985 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13886 "pars.fs" +//# 13923 "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 ( ( -//# 4975 "src/Compiler/pars.fsy" +//# 4990 "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 ) -//# 4975 "src/Compiler/pars.fsy" +//# 4990 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13901 "pars.fs" +//# 13938 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4981 "src/Compiler/pars.fsy" +//# 4996 "src/Compiler/pars.fsy" _1, false ) -//# 4981 "src/Compiler/pars.fsy" +//# 4996 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 13912 "pars.fs" +//# 13949 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_identOrOp in Microsoft.FSharp.Core.Operators.box ( ( -//# 4985 "src/Compiler/pars.fsy" +//# 5000 "src/Compiler/pars.fsy" let idm = rhs parseState 1 (fun e mLhs mDot -> mkSynDot mDot mLhs e _1) ) -//# 4985 "src/Compiler/pars.fsy" +//# 5000 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 13924 "pars.fs" +//# 13961 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4989 "src/Compiler/pars.fsy" +//# 5004 "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) ) -//# 4989 "src/Compiler/pars.fsy" +//# 5004 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 13937 "pars.fs" +//# 13974 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4995 "src/Compiler/pars.fsy" +//# 5010 "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) ) -//# 4995 "src/Compiler/pars.fsy" +//# 5010 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 13950 "pars.fs" +//# 13987 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5000 "src/Compiler/pars.fsy" +//# 5015 "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) ) -//# 5000 "src/Compiler/pars.fsy" +//# 5015 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 13965 "pars.fs" +//# 14002 "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 ( ( -//# 5006 "src/Compiler/pars.fsy" +//# 5021 "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)) ) -//# 5006 "src/Compiler/pars.fsy" +//# 5021 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 13979 "pars.fs" +//# 14016 "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 ( ( -//# 5011 "src/Compiler/pars.fsy" +//# 5026 "src/Compiler/pars.fsy" let lpr = rhs parseState 1 let rpr = rhs parseState 3 (fun e mLhs mDot -> @@ -13999,219 +14036,219 @@ let _fsyacc_reductions = lazy [| mlCompatWarning (FSComp.SR.parsParenFormIsForML()) (lhs parseState) mkSynDotParenGet mLhs mDot e _2) ) -//# 5011 "src/Compiler/pars.fsy" +//# 5026 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 14004 "pars.fs" +//# 14041 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5027 "src/Compiler/pars.fsy" +//# 5042 "src/Compiler/pars.fsy" (fun e mLhs mDot -> mkSynDotBrackGet mLhs mDot e _2) ) -//# 5027 "src/Compiler/pars.fsy" +//# 5042 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 14015 "pars.fs" +//# 14052 "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 ( ( -//# 5030 "src/Compiler/pars.fsy" +//# 5045 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) (fun e mLhs mDot -> exprFromParseError (mkSynDotBrackGet mLhs mDot e _2)) ) -//# 5030 "src/Compiler/pars.fsy" +//# 5045 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 14028 "pars.fs" +//# 14065 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5034 "src/Compiler/pars.fsy" +//# 5049 "src/Compiler/pars.fsy" let mArg = rhs2 parseState 1 3 (fun e mLhs mDot -> mkSynDotBrackGet mLhs mDot e (arbExpr ("indexerExpr1", mArg))) ) -//# 5034 "src/Compiler/pars.fsy" +//# 5049 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 14039 "pars.fs" +//# 14076 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5038 "src/Compiler/pars.fsy" +//# 5053 "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)))) ) -//# 5038 "src/Compiler/pars.fsy" +//# 5053 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 14052 "pars.fs" +//# 14089 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_constant in Microsoft.FSharp.Core.Operators.box ( ( -//# 5045 "src/Compiler/pars.fsy" +//# 5060 "src/Compiler/pars.fsy" SynExpr.Const(fst _1, snd _1) ) -//# 5045 "src/Compiler/pars.fsy" +//# 5060 "src/Compiler/pars.fsy" : SynExpr)); -//# 14063 "pars.fs" +//# 14100 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5048 "src/Compiler/pars.fsy" +//# 5063 "src/Compiler/pars.fsy" _1 ) -//# 5048 "src/Compiler/pars.fsy" +//# 5063 "src/Compiler/pars.fsy" : SynExpr)); -//# 14074 "pars.fs" +//# 14111 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_braceExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5051 "src/Compiler/pars.fsy" +//# 5066 "src/Compiler/pars.fsy" _1 ) -//# 5051 "src/Compiler/pars.fsy" +//# 5066 "src/Compiler/pars.fsy" : SynExpr)); -//# 14085 "pars.fs" +//# 14122 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_braceBarExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5054 "src/Compiler/pars.fsy" +//# 5069 "src/Compiler/pars.fsy" _1 ) -//# 5054 "src/Compiler/pars.fsy" +//# 5069 "src/Compiler/pars.fsy" : SynExpr)); -//# 14096 "pars.fs" +//# 14133 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interpolatedString in Microsoft.FSharp.Core.Operators.box ( ( -//# 5057 "src/Compiler/pars.fsy" +//# 5072 "src/Compiler/pars.fsy" let parts, synStringKind = _1 SynExpr.InterpolatedString(parts, synStringKind, rhs parseState 1) ) -//# 5057 "src/Compiler/pars.fsy" +//# 5072 "src/Compiler/pars.fsy" : SynExpr)); -//# 14108 "pars.fs" +//# 14145 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5061 "src/Compiler/pars.fsy" +//# 5076 "src/Compiler/pars.fsy" SynExpr.Null(lhs parseState) ) -//# 5061 "src/Compiler/pars.fsy" +//# 5076 "src/Compiler/pars.fsy" : SynExpr)); -//# 14118 "pars.fs" +//# 14155 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5064 "src/Compiler/pars.fsy" +//# 5079 "src/Compiler/pars.fsy" SynExpr.Const(SynConst.Bool false, lhs parseState) ) -//# 5064 "src/Compiler/pars.fsy" +//# 5079 "src/Compiler/pars.fsy" : SynExpr)); -//# 14128 "pars.fs" +//# 14165 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5067 "src/Compiler/pars.fsy" +//# 5082 "src/Compiler/pars.fsy" SynExpr.Const(SynConst.Bool true, lhs parseState) ) -//# 5067 "src/Compiler/pars.fsy" +//# 5082 "src/Compiler/pars.fsy" : SynExpr)); -//# 14138 "pars.fs" +//# 14175 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_quoteExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5070 "src/Compiler/pars.fsy" +//# 5085 "src/Compiler/pars.fsy" _1 ) -//# 5070 "src/Compiler/pars.fsy" +//# 5085 "src/Compiler/pars.fsy" : SynExpr)); -//# 14149 "pars.fs" +//# 14186 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_arrayExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5073 "src/Compiler/pars.fsy" +//# 5088 "src/Compiler/pars.fsy" _1 ) -//# 5073 "src/Compiler/pars.fsy" +//# 5088 "src/Compiler/pars.fsy" : SynExpr)); -//# 14160 "pars.fs" +//# 14197 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_beginEndExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5076 "src/Compiler/pars.fsy" +//# 5091 "src/Compiler/pars.fsy" _1 ) -//# 5076 "src/Compiler/pars.fsy" +//# 5091 "src/Compiler/pars.fsy" : SynExpr)); -//# 14171 "pars.fs" +//# 14208 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5080 "src/Compiler/pars.fsy" +//# 5095 "src/Compiler/pars.fsy" SynExpr.Paren(_2, rhs parseState 1, Some(rhs parseState 3), rhs2 parseState 1 3) ) -//# 5080 "src/Compiler/pars.fsy" +//# 5095 "src/Compiler/pars.fsy" : 'gentype_beginEndExpr)); -//# 14182 "pars.fs" +//# 14219 "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 ( ( -//# 5083 "src/Compiler/pars.fsy" +//# 5098 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBegin()); exprFromParseError _2 ) -//# 5083 "src/Compiler/pars.fsy" +//# 5098 "src/Compiler/pars.fsy" : 'gentype_beginEndExpr)); -//# 14194 "pars.fs" +//# 14231 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5086 "src/Compiler/pars.fsy" +//# 5101 "src/Compiler/pars.fsy" (* silent recovery *) arbExpr ("beginEndExpr", (lhs parseState)) ) -//# 5086 "src/Compiler/pars.fsy" +//# 5101 "src/Compiler/pars.fsy" : 'gentype_beginEndExpr)); -//# 14204 "pars.fs" +//# 14241 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5089 "src/Compiler/pars.fsy" +//# 5104 "src/Compiler/pars.fsy" mkSynUnit (lhs parseState) ) -//# 5089 "src/Compiler/pars.fsy" +//# 5104 "src/Compiler/pars.fsy" : 'gentype_beginEndExpr)); -//# 14214 "pars.fs" +//# 14251 "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 @@ -14219,13 +14256,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5093 "src/Compiler/pars.fsy" +//# 5108 "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)) ) -//# 5093 "src/Compiler/pars.fsy" +//# 5108 "src/Compiler/pars.fsy" : 'gentype_quoteExpr)); -//# 14228 "pars.fs" +//# 14265 "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 @@ -14233,203 +14270,203 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5097 "src/Compiler/pars.fsy" +//# 5112 "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)) ) -//# 5097 "src/Compiler/pars.fsy" +//# 5112 "src/Compiler/pars.fsy" : 'gentype_quoteExpr)); -//# 14243 "pars.fs" +//# 14280 "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 ( ( -//# 5102 "src/Compiler/pars.fsy" +//# 5117 "src/Compiler/pars.fsy" (* silent recovery *) SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst _1)), snd _1, arbExpr ("quoteExpr", (rhs parseState 2)), false, lhs parseState) ) -//# 5102 "src/Compiler/pars.fsy" +//# 5117 "src/Compiler/pars.fsy" : 'gentype_quoteExpr)); -//# 14255 "pars.fs" +//# 14292 "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 ( ( -//# 5105 "src/Compiler/pars.fsy" +//# 5120 "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)) ) -//# 5105 "src/Compiler/pars.fsy" +//# 5120 "src/Compiler/pars.fsy" : 'gentype_quoteExpr)); -//# 14268 "pars.fs" +//# 14305 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_arrayExprElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5110 "src/Compiler/pars.fsy" +//# 5125 "src/Compiler/pars.fsy" _2 (lhs parseState) ) -//# 5110 "src/Compiler/pars.fsy" +//# 5125 "src/Compiler/pars.fsy" : 'gentype_arrayExpr)); -//# 14279 "pars.fs" +//# 14316 "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 ( ( -//# 5113 "src/Compiler/pars.fsy" +//# 5128 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracketBar()) exprFromParseError (_2 (rhs2 parseState 1 2)) ) -//# 5113 "src/Compiler/pars.fsy" +//# 5128 "src/Compiler/pars.fsy" : 'gentype_arrayExpr)); -//# 14292 "pars.fs" +//# 14329 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5117 "src/Compiler/pars.fsy" +//# 5132 "src/Compiler/pars.fsy" (* silent recovery *) SynExpr.ArrayOrList(true, [ ], lhs parseState) ) -//# 5117 "src/Compiler/pars.fsy" +//# 5132 "src/Compiler/pars.fsy" : 'gentype_arrayExpr)); -//# 14302 "pars.fs" +//# 14339 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5120 "src/Compiler/pars.fsy" +//# 5135 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracketBar()) (* silent recovery *) exprFromParseError (SynExpr.ArrayOrList(true, [ ], rhs parseState 1)) ) -//# 5120 "src/Compiler/pars.fsy" +//# 5135 "src/Compiler/pars.fsy" : 'gentype_arrayExpr)); -//# 14315 "pars.fs" +//# 14352 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 5126 "src/Compiler/pars.fsy" +//# 5141 "src/Compiler/pars.fsy" SynExpr.Const(SynConst.Unit, (rhs2 parseState 1 2)) ) -//# 5126 "src/Compiler/pars.fsy" +//# 5141 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 14326 "pars.fs" +//# 14363 "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 ( ( -//# 5129 "src/Compiler/pars.fsy" +//# 5144 "src/Compiler/pars.fsy" let m = rhs2 parseState 1 3 SynExpr.Paren(_2 m, rhs parseState 1, Some(rhs parseState 3), m) ) -//# 5129 "src/Compiler/pars.fsy" +//# 5144 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 14339 "pars.fs" +//# 14376 "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 ( ( -//# 5133 "src/Compiler/pars.fsy" +//# 5148 "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) ) -//# 5133 "src/Compiler/pars.fsy" +//# 5148 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 14353 "pars.fs" +//# 14390 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 5138 "src/Compiler/pars.fsy" +//# 5153 "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)) ) -//# 5138 "src/Compiler/pars.fsy" +//# 5153 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 14365 "pars.fs" +//# 14402 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5142 "src/Compiler/pars.fsy" +//# 5157 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) let mLhs = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start arbExpr ("parenExpr2tcs", mLhs) ) -//# 5142 "src/Compiler/pars.fsy" +//# 5157 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 14377 "pars.fs" +//# 14414 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5147 "src/Compiler/pars.fsy" +//# 5162 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) let mLhs = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start arbExpr ("parenExpr2mcs", mLhs) ) -//# 5147 "src/Compiler/pars.fsy" +//# 5162 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 14389 "pars.fs" +//# 14426 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5152 "src/Compiler/pars.fsy" +//# 5167 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) let mLhs = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start arbExpr ("parenExpr2rbcs", mLhs) ) -//# 5152 "src/Compiler/pars.fsy" +//# 5167 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 14401 "pars.fs" +//# 14438 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5157 "src/Compiler/pars.fsy" +//# 5172 "src/Compiler/pars.fsy" let lparenRange = (rhs parseState 1) reportParseErrorAt lparenRange (FSComp.SR.parsUnmatchedParen()) SynExpr.Paren(arbExpr ("parenExpr2obecs", lparenRange.EndRange), lparenRange, None, lparenRange) ) -//# 5157 "src/Compiler/pars.fsy" +//# 5172 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 14413 "pars.fs" +//# 14450 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5162 "src/Compiler/pars.fsy" +//# 5177 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) arbExpr ("parenExpr2", (lhs parseState)) ) -//# 5162 "src/Compiler/pars.fsy" +//# 5177 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 14425 "pars.fs" +//# 14462 "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 ( ( -//# 5173 "src/Compiler/pars.fsy" +//# 5188 "src/Compiler/pars.fsy" let mComma = rhs parseState 2 let mLparen = rhs parseState 1 let mRparen = rhs parseState 3 @@ -14443,9 +14480,9 @@ let _fsyacc_reductions = lazy [| | expr -> SynExpr.Tuple(false, [errorExpr; expr], [mComma], mTuple) SynExpr.Paren(tupleExpr, mLparen, Some mRparen, rhs2 parseState 1 4) ) -//# 5173 "src/Compiler/pars.fsy" +//# 5188 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 14448 "pars.fs" +//# 14485 "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 @@ -14454,83 +14491,83 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5188 "src/Compiler/pars.fsy" +//# 5203 "src/Compiler/pars.fsy" (fun m -> SynExpr.TraitCall(_1, _4, _6, m)) ) -//# 5188 "src/Compiler/pars.fsy" +//# 5203 "src/Compiler/pars.fsy" : 'gentype_parenExprBody)); -//# 14462 "pars.fs" +//# 14499 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5191 "src/Compiler/pars.fsy" +//# 5206 "src/Compiler/pars.fsy" (fun _m -> _1) ) -//# 5191 "src/Compiler/pars.fsy" +//# 5206 "src/Compiler/pars.fsy" : 'gentype_parenExprBody)); -//# 14473 "pars.fs" +//# 14510 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_inlineAssemblyExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5194 "src/Compiler/pars.fsy" +//# 5209 "src/Compiler/pars.fsy" _1 ) -//# 5194 "src/Compiler/pars.fsy" +//# 5209 "src/Compiler/pars.fsy" : 'gentype_parenExprBody)); -//# 14484 "pars.fs" +//# 14521 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 5198 "src/Compiler/pars.fsy" +//# 5213 "src/Compiler/pars.fsy" SynType.Var(_1, rhs parseState 1) ) -//# 5198 "src/Compiler/pars.fsy" +//# 5213 "src/Compiler/pars.fsy" : 'gentype_typars)); -//# 14495 "pars.fs" +//# 14532 "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 ( ( -//# 5201 "src/Compiler/pars.fsy" +//# 5216 "src/Compiler/pars.fsy" let m = rhs2 parseState 1 3 SynType.Paren(_2, m) ) -//# 5201 "src/Compiler/pars.fsy" +//# 5216 "src/Compiler/pars.fsy" : 'gentype_typars)); -//# 14508 "pars.fs" +//# 14545 "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 Microsoft.FSharp.Core.Operators.box ( ( -//# 5206 "src/Compiler/pars.fsy" +//# 5221 "src/Compiler/pars.fsy" let mOr = rhs parseState 2 let m = unionRanges _1.Range _3.Range SynType.Or(_1, _3, m, { OrKeyword = mOr }) ) -//# 5206 "src/Compiler/pars.fsy" +//# 5221 "src/Compiler/pars.fsy" : 'gentype_typarAlts)); -//# 14522 "pars.fs" +//# 14559 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 5211 "src/Compiler/pars.fsy" +//# 5226 "src/Compiler/pars.fsy" SynType.Var(_1, rhs parseState 1) ) -//# 5211 "src/Compiler/pars.fsy" +//# 5226 "src/Compiler/pars.fsy" : 'gentype_typarAlts)); -//# 14533 "pars.fs" +//# 14570 "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 @@ -14538,13 +14575,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5215 "src/Compiler/pars.fsy" +//# 5230 "src/Compiler/pars.fsy" let m, r = _2 r (rhs2 parseState 1 3) ) -//# 5215 "src/Compiler/pars.fsy" +//# 5230 "src/Compiler/pars.fsy" : 'gentype_braceExpr)); -//# 14547 "pars.fs" +//# 14584 "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 @@ -14552,194 +14589,194 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5219 "src/Compiler/pars.fsy" +//# 5234 "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) ) -//# 5219 "src/Compiler/pars.fsy" +//# 5234 "src/Compiler/pars.fsy" : 'gentype_braceExpr)); -//# 14563 "pars.fs" +//# 14600 "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 ( ( -//# 5225 "src/Compiler/pars.fsy" +//# 5240 "src/Compiler/pars.fsy" // silent recovery arbExpr ("braceExpr", rhs2 parseState 1 3) ) -//# 5225 "src/Compiler/pars.fsy" +//# 5240 "src/Compiler/pars.fsy" : 'gentype_braceExpr)); -//# 14576 "pars.fs" +//# 14613 "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 ( ( -//# 5229 "src/Compiler/pars.fsy" +//# 5244 "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) ) -//# 5229 "src/Compiler/pars.fsy" +//# 5244 "src/Compiler/pars.fsy" : 'gentype_braceExpr)); -//# 14590 "pars.fs" +//# 14627 "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 ( ( -//# 5234 "src/Compiler/pars.fsy" +//# 5249 "src/Compiler/pars.fsy" let m = rhs2 parseState 1 2 SynExpr.Record(None, None, [], m) ) -//# 5234 "src/Compiler/pars.fsy" +//# 5249 "src/Compiler/pars.fsy" : 'gentype_braceExpr)); -//# 14603 "pars.fs" +//# 14640 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recdExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5239 "src/Compiler/pars.fsy" +//# 5254 "src/Compiler/pars.fsy" (lhs parseState), (fun m -> let a, b, c = _1 in SynExpr.Record(a, b, c, m)) ) -//# 5239 "src/Compiler/pars.fsy" +//# 5254 "src/Compiler/pars.fsy" : 'gentype_braceExprBody)); -//# 14614 "pars.fs" +//# 14651 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_objExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5242 "src/Compiler/pars.fsy" +//# 5257 "src/Compiler/pars.fsy" _1 ) -//# 5242 "src/Compiler/pars.fsy" +//# 5257 "src/Compiler/pars.fsy" : 'gentype_braceExprBody)); -//# 14625 "pars.fs" +//# 14662 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_computationExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5245 "src/Compiler/pars.fsy" +//# 5260 "src/Compiler/pars.fsy" _1 ) -//# 5245 "src/Compiler/pars.fsy" +//# 5260 "src/Compiler/pars.fsy" : 'gentype_braceExprBody)); -//# 14636 "pars.fs" +//# 14673 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5249 "src/Compiler/pars.fsy" +//# 5264 "src/Compiler/pars.fsy" (fun mLhs -> SynExpr.ArrayOrListComputed(false, _1, mLhs)) ) -//# 5249 "src/Compiler/pars.fsy" +//# 5264 "src/Compiler/pars.fsy" : 'gentype_listExprElements)); -//# 14647 "pars.fs" +//# 14684 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5252 "src/Compiler/pars.fsy" +//# 5267 "src/Compiler/pars.fsy" (fun mLhs -> SynExpr.ArrayOrList(false, [ ], mLhs)) ) -//# 5252 "src/Compiler/pars.fsy" +//# 5267 "src/Compiler/pars.fsy" : 'gentype_listExprElements)); -//# 14657 "pars.fs" +//# 14694 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5256 "src/Compiler/pars.fsy" +//# 5271 "src/Compiler/pars.fsy" (fun mLhs -> SynExpr.ArrayOrListComputed(true, _1, mLhs)) ) -//# 5256 "src/Compiler/pars.fsy" +//# 5271 "src/Compiler/pars.fsy" : 'gentype_arrayExprElements)); -//# 14668 "pars.fs" +//# 14705 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5259 "src/Compiler/pars.fsy" +//# 5274 "src/Compiler/pars.fsy" (fun mLhs -> SynExpr.ArrayOrList(true, [ ], mLhs)) ) -//# 5259 "src/Compiler/pars.fsy" +//# 5274 "src/Compiler/pars.fsy" : 'gentype_arrayExprElements)); -//# 14678 "pars.fs" +//# 14715 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5263 "src/Compiler/pars.fsy" +//# 5278 "src/Compiler/pars.fsy" _1.Range, (fun mLhs -> SynExpr.ComputationExpr(false, _1, mLhs)) ) -//# 5263 "src/Compiler/pars.fsy" +//# 5278 "src/Compiler/pars.fsy" : 'gentype_computationExpr)); -//# 14689 "pars.fs" +//# 14726 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in Microsoft.FSharp.Core.Operators.box ( ( -//# 5267 "src/Compiler/pars.fsy" +//# 5282 "src/Compiler/pars.fsy" let mArrow = rhs parseState 1 let expr = _2 mArrow SynExpr.YieldOrReturn((true, false), expr, unionRanges mArrow expr.Range) ) -//# 5267 "src/Compiler/pars.fsy" +//# 5282 "src/Compiler/pars.fsy" : 'gentype_arrowThenExprR)); -//# 14702 "pars.fs" +//# 14739 "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 ( ( -//# 5273 "src/Compiler/pars.fsy" +//# 5288 "src/Compiler/pars.fsy" _1, _3, true, DebugPointAtInOrTo.Yes(rhs parseState 2) ) -//# 5273 "src/Compiler/pars.fsy" +//# 5288 "src/Compiler/pars.fsy" : 'gentype_forLoopBinder)); -//# 14714 "pars.fs" +//# 14751 "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 ( ( -//# 5276 "src/Compiler/pars.fsy" +//# 5291 "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 ) -//# 5276 "src/Compiler/pars.fsy" +//# 5291 "src/Compiler/pars.fsy" : 'gentype_forLoopBinder)); -//# 14728 "pars.fs" +//# 14765 "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 ( ( -//# 5281 "src/Compiler/pars.fsy" +//# 5296 "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) ) -//# 5281 "src/Compiler/pars.fsy" +//# 5296 "src/Compiler/pars.fsy" : 'gentype_forLoopBinder)); -//# 14742 "pars.fs" +//# 14779 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> SynExpr in @@ -14748,34 +14785,34 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5287 "src/Compiler/pars.fsy" +//# 5302 "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 ) -//# 5287 "src/Compiler/pars.fsy" +//# 5302 "src/Compiler/pars.fsy" : 'gentype_forLoopRange)); -//# 14758 "pars.fs" +//# 14795 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5292 "src/Compiler/pars.fsy" +//# 5307 "src/Compiler/pars.fsy" true ) -//# 5292 "src/Compiler/pars.fsy" +//# 5307 "src/Compiler/pars.fsy" : 'gentype_forLoopDirection)); -//# 14768 "pars.fs" +//# 14805 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5294 "src/Compiler/pars.fsy" +//# 5309 "src/Compiler/pars.fsy" false ) -//# 5294 "src/Compiler/pars.fsy" +//# 5309 "src/Compiler/pars.fsy" : 'gentype_forLoopDirection)); -//# 14778 "pars.fs" +//# 14815 "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 @@ -14784,69 +14821,69 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5298 "src/Compiler/pars.fsy" +//# 5313 "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)) ) -//# 5298 "src/Compiler/pars.fsy" +//# 5313 "src/Compiler/pars.fsy" : 'gentype_inlineAssemblyExpr)); -//# 14796 "pars.fs" +//# 14833 "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 ( ( -//# 5306 "src/Compiler/pars.fsy" +//# 5321 "src/Compiler/pars.fsy" _2 :: _1 ) -//# 5306 "src/Compiler/pars.fsy" +//# 5321 "src/Compiler/pars.fsy" : 'gentype_optCurriedArgExprs)); -//# 14808 "pars.fs" +//# 14845 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5309 "src/Compiler/pars.fsy" +//# 5324 "src/Compiler/pars.fsy" [] ) -//# 5309 "src/Compiler/pars.fsy" +//# 5324 "src/Compiler/pars.fsy" : 'gentype_optCurriedArgExprs)); -//# 14818 "pars.fs" +//# 14855 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5313 "src/Compiler/pars.fsy" +//# 5328 "src/Compiler/pars.fsy" None ) -//# 5313 "src/Compiler/pars.fsy" +//# 5328 "src/Compiler/pars.fsy" : 'gentype_opt_atomicExprAfterType)); -//# 14828 "pars.fs" +//# 14865 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5316 "src/Compiler/pars.fsy" +//# 5331 "src/Compiler/pars.fsy" Some(_1) ) -//# 5316 "src/Compiler/pars.fsy" +//# 5331 "src/Compiler/pars.fsy" : 'gentype_opt_atomicExprAfterType)); -//# 14839 "pars.fs" +//# 14876 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5320 "src/Compiler/pars.fsy" +//# 5335 "src/Compiler/pars.fsy" [] ) -//# 5320 "src/Compiler/pars.fsy" +//# 5335 "src/Compiler/pars.fsy" : 'gentype_opt_inlineAssemblyTypeArg)); -//# 14849 "pars.fs" +//# 14886 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeKeyword in let _3 = parseState.GetInput(3) :?> SynType in @@ -14854,44 +14891,44 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5323 "src/Compiler/pars.fsy" +//# 5338 "src/Compiler/pars.fsy" [_3] ) -//# 5323 "src/Compiler/pars.fsy" +//# 5338 "src/Compiler/pars.fsy" : 'gentype_opt_inlineAssemblyTypeArg)); -//# 14862 "pars.fs" +//# 14899 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5327 "src/Compiler/pars.fsy" +//# 5342 "src/Compiler/pars.fsy" [] ) -//# 5327 "src/Compiler/pars.fsy" +//# 5342 "src/Compiler/pars.fsy" : 'gentype_optInlineAssemblyReturnTypes)); -//# 14872 "pars.fs" +//# 14909 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5330 "src/Compiler/pars.fsy" +//# 5345 "src/Compiler/pars.fsy" [_2] ) -//# 5330 "src/Compiler/pars.fsy" +//# 5345 "src/Compiler/pars.fsy" : 'gentype_optInlineAssemblyReturnTypes)); -//# 14883 "pars.fs" +//# 14920 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 5333 "src/Compiler/pars.fsy" +//# 5348 "src/Compiler/pars.fsy" [] ) -//# 5333 "src/Compiler/pars.fsy" +//# 5348 "src/Compiler/pars.fsy" : 'gentype_optInlineAssemblyReturnTypes)); -//# 14894 "pars.fs" +//# 14931 "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 @@ -14901,7 +14938,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5337 "src/Compiler/pars.fsy" +//# 5352 "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 @@ -14910,21 +14947,21 @@ let _fsyacc_reductions = lazy [| let bindings = List.tail l (Some(_2, arg, rhs2 parseState 2 4, inheritsSep, rhs parseState 1), None, bindings) ) -//# 5337 "src/Compiler/pars.fsy" +//# 5352 "src/Compiler/pars.fsy" : 'gentype_recdExpr)); -//# 14915 "pars.fs" +//# 14952 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recdExprCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 5346 "src/Compiler/pars.fsy" +//# 5361 "src/Compiler/pars.fsy" let a, b = _1 None, a, b ) -//# 5346 "src/Compiler/pars.fsy" +//# 5361 "src/Compiler/pars.fsy" : 'gentype_recdExpr)); -//# 14927 "pars.fs" +//# 14964 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> SynExpr in @@ -14933,7 +14970,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5351 "src/Compiler/pars.fsy" +//# 5366 "src/Compiler/pars.fsy" match _1 with | LongOrSingleIdent(false, (SynLongIdent _ as f), None, m) -> let f = mkRecdField f @@ -14943,16 +14980,16 @@ let _fsyacc_reductions = lazy [| (None, l) | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsFieldBinding()) ) -//# 5351 "src/Compiler/pars.fsy" +//# 5366 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 14948 "pars.fs" +//# 14985 "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 ( ( -//# 5361 "src/Compiler/pars.fsy" +//# 5376 "src/Compiler/pars.fsy" match _1 with | LongOrSingleIdent(false, (SynLongIdent _ as f), None, m) -> let f = mkRecdField f @@ -14961,41 +14998,41 @@ let _fsyacc_reductions = lazy [| None, l | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsFieldBinding ()) ) -//# 5361 "src/Compiler/pars.fsy" +//# 5376 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 14966 "pars.fs" +//# 15003 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5370 "src/Compiler/pars.fsy" +//# 5385 "src/Compiler/pars.fsy" let mExpr = rhs parseState 1 reportParseErrorAt mExpr (FSComp.SR.parsFieldBinding ()) Some(_1, (mExpr.EndRange, None)), [] ) -//# 5370 "src/Compiler/pars.fsy" +//# 5385 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 14979 "pars.fs" +//# 15016 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5379 "src/Compiler/pars.fsy" +//# 5394 "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) ]) ) -//# 5379 "src/Compiler/pars.fsy" +//# 5394 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 14993 "pars.fs" +//# 15030 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5386 "src/Compiler/pars.fsy" +//# 5401 "src/Compiler/pars.fsy" let m = rhs parseState 1 reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName()) let f = mkUnderscoreRecdField m @@ -15003,9 +15040,9 @@ let _fsyacc_reductions = lazy [| reportParseErrorAt (rhs2 parseState 1 2) (FSComp.SR.parsFieldBinding()) (None, [ SynExprRecordField(f, Some mEquals, None, None) ]) ) -//# 5386 "src/Compiler/pars.fsy" +//# 5401 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 15008 "pars.fs" +//# 15045 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> SynExpr in let _4 = parseState.GetInput(4) :?> 'gentype_recdExprBindings in @@ -15013,7 +15050,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5395 "src/Compiler/pars.fsy" +//# 5410 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnderscoreInvalidFieldName()) let f = mkUnderscoreRecdField (rhs parseState 1) let mEquals = rhs parseState 2 @@ -15021,9 +15058,9 @@ let _fsyacc_reductions = lazy [| let l = rebindRanges (f, Some mEquals, Some _3) l _5 (None, l) ) -//# 5395 "src/Compiler/pars.fsy" +//# 5410 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 15026 "pars.fs" +//# 15063 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recdBinding in @@ -15032,26 +15069,26 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5404 "src/Compiler/pars.fsy" +//# 5419 "src/Compiler/pars.fsy" let l = List.rev _4 let l = rebindRanges _3 l _5 (Some(_1, (rhs parseState 2, None)), l) ) -//# 5404 "src/Compiler/pars.fsy" +//# 5419 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 15042 "pars.fs" +//# 15079 "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 ( ( -//# 5409 "src/Compiler/pars.fsy" +//# 5424 "src/Compiler/pars.fsy" (Some(_1, (rhs parseState 2, None)), []) ) -//# 5409 "src/Compiler/pars.fsy" +//# 5424 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 15054 "pars.fs" +//# 15091 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recdBinding in @@ -15060,99 +15097,99 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5412 "src/Compiler/pars.fsy" +//# 5427 "src/Compiler/pars.fsy" let l = List.rev _4 let l = rebindRanges _3 l _5 (Some(_1, (rhs parseState 2, None)), l) ) -//# 5412 "src/Compiler/pars.fsy" +//# 5427 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 15070 "pars.fs" +//# 15107 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_seps_recd in Microsoft.FSharp.Core.Operators.box ( ( -//# 5418 "src/Compiler/pars.fsy" +//# 5433 "src/Compiler/pars.fsy" Some _1 ) -//# 5418 "src/Compiler/pars.fsy" +//# 5433 "src/Compiler/pars.fsy" : 'gentype_opt_seps_recd)); -//# 15081 "pars.fs" +//# 15118 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5421 "src/Compiler/pars.fsy" +//# 5436 "src/Compiler/pars.fsy" None ) -//# 5421 "src/Compiler/pars.fsy" +//# 5436 "src/Compiler/pars.fsy" : 'gentype_opt_seps_recd)); -//# 15091 "pars.fs" +//# 15128 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5425 "src/Compiler/pars.fsy" +//# 5440 "src/Compiler/pars.fsy" (rhs parseState 1), None ) -//# 5425 "src/Compiler/pars.fsy" +//# 5440 "src/Compiler/pars.fsy" : 'gentype_seps_recd)); -//# 15101 "pars.fs" +//# 15138 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5428 "src/Compiler/pars.fsy" +//# 5443 "src/Compiler/pars.fsy" let m = (rhs parseState 1) m, Some m.End ) -//# 5428 "src/Compiler/pars.fsy" +//# 5443 "src/Compiler/pars.fsy" : 'gentype_seps_recd)); -//# 15112 "pars.fs" +//# 15149 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5432 "src/Compiler/pars.fsy" +//# 5447 "src/Compiler/pars.fsy" (rhs2 parseState 1 2), Some (rhs parseState 1).End ) -//# 5432 "src/Compiler/pars.fsy" +//# 5447 "src/Compiler/pars.fsy" : 'gentype_seps_recd)); -//# 15122 "pars.fs" +//# 15159 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5435 "src/Compiler/pars.fsy" +//# 5450 "src/Compiler/pars.fsy" (rhs2 parseState 1 2), Some (rhs parseState 2).End ) -//# 5435 "src/Compiler/pars.fsy" +//# 5450 "src/Compiler/pars.fsy" : 'gentype_seps_recd)); -//# 15132 "pars.fs" +//# 15169 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 5441 "src/Compiler/pars.fsy" +//# 5456 "src/Compiler/pars.fsy" mkRecdField _1 ) -//# 5441 "src/Compiler/pars.fsy" +//# 5456 "src/Compiler/pars.fsy" : 'gentype_pathOrUnderscore)); -//# 15143 "pars.fs" +//# 15180 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5444 "src/Compiler/pars.fsy" +//# 5459 "src/Compiler/pars.fsy" let m = rhs parseState 1 reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName()) mkUnderscoreRecdField m ) -//# 5444 "src/Compiler/pars.fsy" +//# 5459 "src/Compiler/pars.fsy" : 'gentype_pathOrUnderscore)); -//# 15155 "pars.fs" +//# 15192 "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 @@ -15160,87 +15197,87 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5450 "src/Compiler/pars.fsy" +//# 5465 "src/Compiler/pars.fsy" (_3, Some _2) :: _1 ) -//# 5450 "src/Compiler/pars.fsy" +//# 5465 "src/Compiler/pars.fsy" : 'gentype_recdExprBindings)); -//# 15168 "pars.fs" +//# 15205 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5453 "src/Compiler/pars.fsy" +//# 5468 "src/Compiler/pars.fsy" [] ) -//# 5453 "src/Compiler/pars.fsy" +//# 5468 "src/Compiler/pars.fsy" : 'gentype_recdExprBindings)); -//# 15178 "pars.fs" +//# 15215 "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 ( ( -//# 5457 "src/Compiler/pars.fsy" +//# 5472 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 (_1, Some mEquals, Some _3) ) -//# 5457 "src/Compiler/pars.fsy" +//# 5472 "src/Compiler/pars.fsy" : 'gentype_recdBinding)); -//# 15191 "pars.fs" +//# 15228 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_pathOrUnderscore in Microsoft.FSharp.Core.Operators.box ( ( -//# 5461 "src/Compiler/pars.fsy" +//# 5476 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding()) (_1, Some mEquals, None) ) -//# 5461 "src/Compiler/pars.fsy" +//# 5476 "src/Compiler/pars.fsy" : 'gentype_recdBinding)); -//# 15204 "pars.fs" +//# 15241 "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 ( ( -//# 5466 "src/Compiler/pars.fsy" +//# 5481 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding()) (_1, Some mEquals, None) ) -//# 5466 "src/Compiler/pars.fsy" +//# 5481 "src/Compiler/pars.fsy" : 'gentype_recdBinding)); -//# 15218 "pars.fs" +//# 15255 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_pathOrUnderscore in Microsoft.FSharp.Core.Operators.box ( ( -//# 5471 "src/Compiler/pars.fsy" +//# 5486 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding()) (_1, None, None) ) -//# 5471 "src/Compiler/pars.fsy" +//# 5486 "src/Compiler/pars.fsy" : 'gentype_recdBinding)); -//# 15230 "pars.fs" +//# 15267 "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 ( ( -//# 5475 "src/Compiler/pars.fsy" +//# 5490 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding()) (_1, None, None) ) -//# 5475 "src/Compiler/pars.fsy" +//# 5490 "src/Compiler/pars.fsy" : 'gentype_recdBinding)); -//# 15243 "pars.fs" +//# 15280 "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 @@ -15249,15 +15286,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5486 "src/Compiler/pars.fsy" +//# 5501 "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)) ) -//# 5486 "src/Compiler/pars.fsy" +//# 5501 "src/Compiler/pars.fsy" : 'gentype_objExpr)); -//# 15260 "pars.fs" +//# 15297 "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 @@ -15265,26 +15302,26 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5492 "src/Compiler/pars.fsy" +//# 5507 "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)) ) -//# 5492 "src/Compiler/pars.fsy" +//# 5507 "src/Compiler/pars.fsy" : 'gentype_objExpr)); -//# 15275 "pars.fs" +//# 15312 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5497 "src/Compiler/pars.fsy" +//# 5512 "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)) ) -//# 5497 "src/Compiler/pars.fsy" +//# 5512 "src/Compiler/pars.fsy" : 'gentype_objExpr)); -//# 15287 "pars.fs" +//# 15324 "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 @@ -15293,12 +15330,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5502 "src/Compiler/pars.fsy" +//# 5517 "src/Compiler/pars.fsy" (_2, Some(_4, Some(_5))) ) -//# 5502 "src/Compiler/pars.fsy" +//# 5517 "src/Compiler/pars.fsy" : 'gentype_objExprBaseCall)); -//# 15301 "pars.fs" +//# 15338 "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 @@ -15306,78 +15343,78 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5505 "src/Compiler/pars.fsy" +//# 5520 "src/Compiler/pars.fsy" (_2, Some(_4, None)) ) -//# 5505 "src/Compiler/pars.fsy" +//# 5520 "src/Compiler/pars.fsy" : 'gentype_objExprBaseCall)); -//# 15314 "pars.fs" +//# 15351 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5508 "src/Compiler/pars.fsy" +//# 5523 "src/Compiler/pars.fsy" _2, None ) -//# 5508 "src/Compiler/pars.fsy" +//# 5523 "src/Compiler/pars.fsy" : 'gentype_objExprBaseCall)); -//# 15325 "pars.fs" +//# 15362 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_objExprBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 5513 "src/Compiler/pars.fsy" +//# 5528 "src/Compiler/pars.fsy" let mWithKwd, bindings, members = _1 Some mWithKwd, bindings, members ) -//# 5513 "src/Compiler/pars.fsy" +//# 5528 "src/Compiler/pars.fsy" : 'gentype_opt_objExprBindings)); -//# 15337 "pars.fs" +//# 15374 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5517 "src/Compiler/pars.fsy" +//# 5532 "src/Compiler/pars.fsy" None, [], [] ) -//# 5517 "src/Compiler/pars.fsy" +//# 5532 "src/Compiler/pars.fsy" : 'gentype_opt_objExprBindings)); -//# 15347 "pars.fs" +//# 15384 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_localBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 5521 "src/Compiler/pars.fsy" +//# 5536 "src/Compiler/pars.fsy" let mWithKwd = (rhs parseState 1) let _localBindingsLastRange, localBindingsBuilder = _2 mWithKwd, (localBindingsBuilder PreXmlDoc.Empty [] None SynLeadingKeyword.Synthetic), [] ) -//# 5521 "src/Compiler/pars.fsy" +//# 5536 "src/Compiler/pars.fsy" : 'gentype_objExprBindings)); -//# 15360 "pars.fs" +//# 15397 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_localBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 5526 "src/Compiler/pars.fsy" +//# 5541 "src/Compiler/pars.fsy" let mWithKwd = (rhs parseState 1) let _localBindingsLastRange, localBindingsBuilder = _2 mWithKwd, (localBindingsBuilder PreXmlDoc.Empty [] None SynLeadingKeyword.Synthetic), [] ) -//# 5526 "src/Compiler/pars.fsy" +//# 5541 "src/Compiler/pars.fsy" : 'gentype_objExprBindings)); -//# 15373 "pars.fs" +//# 15410 "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 ( ( -//# 5531 "src/Compiler/pars.fsy" +//# 5546 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 let memberDefns = _2 |> @@ -15387,54 +15424,54 @@ let _fsyacc_reductions = lazy [| | x -> errorR(Error(FSComp.SR.parsMemberIllegalInObjectImplementation(), x.Range)); None)) mWithKwd, [], memberDefns ) -//# 5531 "src/Compiler/pars.fsy" +//# 5546 "src/Compiler/pars.fsy" : 'gentype_objExprBindings)); -//# 15392 "pars.fs" +//# 15429 "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 ( ( -//# 5541 "src/Compiler/pars.fsy" +//# 5556 "src/Compiler/pars.fsy" _1 :: _2 ) -//# 5541 "src/Compiler/pars.fsy" +//# 5556 "src/Compiler/pars.fsy" : 'gentype_objExprInterfaces)); -//# 15404 "pars.fs" +//# 15441 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5545 "src/Compiler/pars.fsy" +//# 5560 "src/Compiler/pars.fsy" [] ) -//# 5545 "src/Compiler/pars.fsy" +//# 5560 "src/Compiler/pars.fsy" : 'gentype_opt_objExprInterfaces)); -//# 15414 "pars.fs" +//# 15451 "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 ( ( -//# 5548 "src/Compiler/pars.fsy" +//# 5563 "src/Compiler/pars.fsy" _1 :: _2 ) -//# 5548 "src/Compiler/pars.fsy" +//# 5563 "src/Compiler/pars.fsy" : 'gentype_opt_objExprInterfaces)); -//# 15426 "pars.fs" +//# 15463 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_opt_objExprInterfaces in Microsoft.FSharp.Core.Operators.box ( ( -//# 5551 "src/Compiler/pars.fsy" +//# 5566 "src/Compiler/pars.fsy" (* silent recovery *) _2 ) -//# 5551 "src/Compiler/pars.fsy" +//# 5566 "src/Compiler/pars.fsy" : 'gentype_opt_objExprInterfaces)); -//# 15437 "pars.fs" +//# 15474 "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 @@ -15444,7 +15481,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5555 "src/Compiler/pars.fsy" +//# 5570 "src/Compiler/pars.fsy" let mWithKwd, bindings, members = _3 let m = match List.tryLast members with @@ -15454,39 +15491,39 @@ let _fsyacc_reductions = lazy [| mkFileIndexRange mInterface.FileIndex mInterface.Start ms.Range.End SynInterfaceImpl(_2, mWithKwd, bindings, members, m) ) -//# 5555 "src/Compiler/pars.fsy" +//# 5570 "src/Compiler/pars.fsy" : 'gentype_objExprInterface)); -//# 15459 "pars.fs" +//# 15496 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_braceBarExprCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 5566 "src/Compiler/pars.fsy" +//# 5581 "src/Compiler/pars.fsy" let mStruct = rhs parseState 1 _2 (Some mStruct) ) -//# 5566 "src/Compiler/pars.fsy" +//# 5581 "src/Compiler/pars.fsy" : 'gentype_braceBarExpr)); -//# 15471 "pars.fs" +//# 15508 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_braceBarExprCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 5570 "src/Compiler/pars.fsy" +//# 5585 "src/Compiler/pars.fsy" _1 None ) -//# 5570 "src/Compiler/pars.fsy" +//# 5585 "src/Compiler/pars.fsy" : 'gentype_braceBarExpr)); -//# 15482 "pars.fs" +//# 15519 "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 ( ( -//# 5574 "src/Compiler/pars.fsy" +//# 5589 "src/Compiler/pars.fsy" let orig, flds = _2 let flds = flds |> List.choose (function @@ -15500,16 +15537,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 })) ) -//# 5574 "src/Compiler/pars.fsy" +//# 5589 "src/Compiler/pars.fsy" : 'gentype_braceBarExprCore)); -//# 15505 "pars.fs" +//# 15542 "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 ( ( -//# 5588 "src/Compiler/pars.fsy" +//# 5603 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar()) let orig, flds = _2 let flds = @@ -15522,15 +15559,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 })) ) -//# 5588 "src/Compiler/pars.fsy" +//# 5603 "src/Compiler/pars.fsy" : 'gentype_braceBarExprCore)); -//# 15527 "pars.fs" +//# 15564 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_bar_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 5601 "src/Compiler/pars.fsy" +//# 5616 "src/Compiler/pars.fsy" // silent recovery let mLeftBrace = rhs parseState 1 let mRightBrace = rhs parseState 3 @@ -15538,81 +15575,81 @@ let _fsyacc_reductions = lazy [| let m = match mStruct with | None -> unionRanges mLeftBrace mRightBrace | Some mStruct -> unionRanges mStruct mRightBrace arbExpr ("braceBarExpr", m)) ) -//# 5601 "src/Compiler/pars.fsy" +//# 5616 "src/Compiler/pars.fsy" : 'gentype_braceBarExprCore)); -//# 15543 "pars.fs" +//# 15580 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5609 "src/Compiler/pars.fsy" +//# 5624 "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 })) ) -//# 5609 "src/Compiler/pars.fsy" +//# 5624 "src/Compiler/pars.fsy" : 'gentype_braceBarExprCore)); -//# 15558 "pars.fs" +//# 15595 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_bar_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 5616 "src/Compiler/pars.fsy" +//# 5631 "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 })) ) -//# 5616 "src/Compiler/pars.fsy" +//# 5631 "src/Compiler/pars.fsy" : 'gentype_braceBarExprCore)); -//# 15573 "pars.fs" +//# 15610 "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 ( ( -//# 5624 "src/Compiler/pars.fsy" +//# 5639 "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 ) -//# 5624 "src/Compiler/pars.fsy" +//# 5639 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 15587 "pars.fs" +//# 15624 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynPat list in Microsoft.FSharp.Core.Operators.box ( ( -//# 5629 "src/Compiler/pars.fsy" +//# 5644 "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))) ) -//# 5629 "src/Compiler/pars.fsy" +//# 5644 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 15600 "pars.fs" +//# 15637 "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 ( ( -//# 5634 "src/Compiler/pars.fsy" +//# 5649 "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 ) -//# 5634 "src/Compiler/pars.fsy" +//# 5649 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 15615 "pars.fs" +//# 15652 "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 @@ -15620,335 +15657,335 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5640 "src/Compiler/pars.fsy" +//# 5655 "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) ) -//# 5640 "src/Compiler/pars.fsy" +//# 5655 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 15632 "pars.fs" +//# 15669 "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 ( ( -//# 5647 "src/Compiler/pars.fsy" +//# 5662 "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)) ) -//# 5647 "src/Compiler/pars.fsy" +//# 5662 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 15647 "pars.fs" +//# 15684 "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 ( ( -//# 5653 "src/Compiler/pars.fsy" +//# 5668 "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))) ) -//# 5653 "src/Compiler/pars.fsy" +//# 5668 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 15662 "pars.fs" +//# 15699 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynPat list in Microsoft.FSharp.Core.Operators.box ( ( -//# 5659 "src/Compiler/pars.fsy" +//# 5674 "src/Compiler/pars.fsy" let mLambda = rhs2 parseState 1 2 exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false mLambda _2 None (arbExpr ("anonLambdaExpr4", mLambda.EndRange))) ) -//# 5659 "src/Compiler/pars.fsy" +//# 5674 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 15674 "pars.fs" +//# 15711 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5663 "src/Compiler/pars.fsy" +//# 5678 "src/Compiler/pars.fsy" exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false (rhs parseState 1) [] None (arbExpr ("anonLambdaExpr5", (rhs parseState 2)))) ) -//# 5663 "src/Compiler/pars.fsy" +//# 5678 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 15684 "pars.fs" +//# 15721 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 5667 "src/Compiler/pars.fsy" +//# 5682 "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) ) -//# 5667 "src/Compiler/pars.fsy" +//# 5682 "src/Compiler/pars.fsy" : 'gentype_anonMatchingExpr)); -//# 15697 "pars.fs" +//# 15734 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 5672 "src/Compiler/pars.fsy" +//# 5687 "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) ) -//# 5672 "src/Compiler/pars.fsy" +//# 5687 "src/Compiler/pars.fsy" : 'gentype_anonMatchingExpr)); -//# 15710 "pars.fs" +//# 15747 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5681 "src/Compiler/pars.fsy" +//# 5696 "src/Compiler/pars.fsy" _1 ) -//# 5681 "src/Compiler/pars.fsy" +//# 5696 "src/Compiler/pars.fsy" : 'gentype_typeWithTypeConstraints)); -//# 15721 "pars.fs" +//# 15758 "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 ( ( -//# 5684 "src/Compiler/pars.fsy" +//# 5699 "src/Compiler/pars.fsy" SynType.WithGlobalConstraints(_1, List.rev _3, lhs parseState) ) -//# 5684 "src/Compiler/pars.fsy" +//# 5699 "src/Compiler/pars.fsy" : 'gentype_typeWithTypeConstraints)); -//# 15733 "pars.fs" +//# 15770 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5688 "src/Compiler/pars.fsy" +//# 5703 "src/Compiler/pars.fsy" _1 ) -//# 5688 "src/Compiler/pars.fsy" +//# 5703 "src/Compiler/pars.fsy" : 'gentype_topTypeWithTypeConstraints)); -//# 15744 "pars.fs" +//# 15781 "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 ( ( -//# 5691 "src/Compiler/pars.fsy" +//# 5706 "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 ) -//# 5691 "src/Compiler/pars.fsy" +//# 5706 "src/Compiler/pars.fsy" : 'gentype_topTypeWithTypeConstraints)); -//# 15758 "pars.fs" +//# 15795 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5697 "src/Compiler/pars.fsy" +//# 5712 "src/Compiler/pars.fsy" None ) -//# 5697 "src/Compiler/pars.fsy" +//# 5712 "src/Compiler/pars.fsy" : 'gentype_opt_topReturnTypeWithTypeConstraints)); -//# 15768 "pars.fs" +//# 15805 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_topTypeWithTypeConstraints in Microsoft.FSharp.Core.Operators.box ( ( -//# 5700 "src/Compiler/pars.fsy" +//# 5715 "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)) ) -//# 5700 "src/Compiler/pars.fsy" +//# 5715 "src/Compiler/pars.fsy" : 'gentype_opt_topReturnTypeWithTypeConstraints)); -//# 15782 "pars.fs" +//# 15819 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5706 "src/Compiler/pars.fsy" +//# 5721 "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)) ) -//# 5706 "src/Compiler/pars.fsy" +//# 5721 "src/Compiler/pars.fsy" : 'gentype_opt_topReturnTypeWithTypeConstraints)); -//# 15795 "pars.fs" +//# 15832 "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 ( ( -//# 5712 "src/Compiler/pars.fsy" +//# 5727 "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) ) -//# 5712 "src/Compiler/pars.fsy" +//# 5727 "src/Compiler/pars.fsy" : 'gentype_topType)); -//# 15810 "pars.fs" +//# 15847 "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 ( ( -//# 5718 "src/Compiler/pars.fsy" +//# 5733 "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) ) -//# 5718 "src/Compiler/pars.fsy" +//# 5733 "src/Compiler/pars.fsy" : 'gentype_topType)); -//# 15825 "pars.fs" +//# 15862 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topTupleType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5724 "src/Compiler/pars.fsy" +//# 5739 "src/Compiler/pars.fsy" let ty, rmdata = _1 ty, (SynValInfo([], (match rmdata with [md] -> md | _ -> SynInfo.unnamedRetVal))) ) -//# 5724 "src/Compiler/pars.fsy" +//# 5739 "src/Compiler/pars.fsy" : 'gentype_topType)); -//# 15837 "pars.fs" +//# 15874 "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 ( ( -//# 5729 "src/Compiler/pars.fsy" +//# 5744 "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 ) -//# 5729 "src/Compiler/pars.fsy" +//# 5744 "src/Compiler/pars.fsy" : 'gentype_topTupleType)); -//# 15853 "pars.fs" +//# 15890 "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 ( ( -//# 5736 "src/Compiler/pars.fsy" +//# 5751 "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] ) -//# 5736 "src/Compiler/pars.fsy" +//# 5751 "src/Compiler/pars.fsy" : 'gentype_topTupleType)); -//# 15869 "pars.fs" +//# 15906 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_topTupleTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5743 "src/Compiler/pars.fsy" +//# 5758 "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 ) -//# 5743 "src/Compiler/pars.fsy" +//# 5758 "src/Compiler/pars.fsy" : 'gentype_topTupleType)); -//# 15884 "pars.fs" +//# 15921 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5750 "src/Compiler/pars.fsy" +//# 5765 "src/Compiler/pars.fsy" let ty, mdata = _1 ty, [mdata] ) -//# 5750 "src/Compiler/pars.fsy" +//# 5765 "src/Compiler/pars.fsy" : 'gentype_topTupleType)); -//# 15896 "pars.fs" +//# 15933 "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 ( ( -//# 5755 "src/Compiler/pars.fsy" +//# 5770 "src/Compiler/pars.fsy" let t, argInfo = _1 let mStar = rhs parseState 2 (SynTupleTypeSegment.Type t, Some argInfo) :: (SynTupleTypeSegment.Star mStar, None) :: _3 ) -//# 5755 "src/Compiler/pars.fsy" +//# 5770 "src/Compiler/pars.fsy" : 'gentype_topTupleTypeElements)); -//# 15910 "pars.fs" +//# 15947 "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 ( ( -//# 5760 "src/Compiler/pars.fsy" +//# 5775 "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] ) -//# 5760 "src/Compiler/pars.fsy" +//# 5775 "src/Compiler/pars.fsy" : 'gentype_topTupleTypeElements)); -//# 15925 "pars.fs" +//# 15962 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_topTupleTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5766 "src/Compiler/pars.fsy" +//# 5781 "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 ) -//# 5766 "src/Compiler/pars.fsy" +//# 5781 "src/Compiler/pars.fsy" : 'gentype_topTupleTypeElements)); -//# 15939 "pars.fs" +//# 15976 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5772 "src/Compiler/pars.fsy" +//# 5787 "src/Compiler/pars.fsy" let t, argInfo = _1 [ SynTupleTypeSegment.Type t, Some argInfo ] ) -//# 5772 "src/Compiler/pars.fsy" +//# 5787 "src/Compiler/pars.fsy" : 'gentype_topTupleTypeElements)); -//# 15951 "pars.fs" +//# 15988 "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 @@ -15956,16 +15993,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5777 "src/Compiler/pars.fsy" +//# 5792 "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()) ) -//# 5777 "src/Compiler/pars.fsy" +//# 5792 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 15968 "pars.fs" +//# 16005 "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 @@ -15973,7 +16010,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5784 "src/Compiler/pars.fsy" +//# 5799 "src/Compiler/pars.fsy" match _2 with | SynType.LongIdent(SynLongIdent([id], _, _)) -> let mColon = rhs parseState 2 @@ -15982,9 +16019,9 @@ let _fsyacc_reductions = lazy [| SynType.SignatureParameter(_1, false, Some id, ty, m), SynArgInfo(_1, false, Some id) | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType()) ) -//# 5784 "src/Compiler/pars.fsy" +//# 5799 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 15987 "pars.fs" +//# 16024 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributes in let _3 = parseState.GetInput(3) :?> Ident in @@ -15992,13 +16029,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5793 "src/Compiler/pars.fsy" +//# 5808 "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) ) -//# 5793 "src/Compiler/pars.fsy" +//# 5808 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 16001 "pars.fs" +//# 16038 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributes in let _3 = parseState.GetInput(3) :?> Ident in @@ -16006,51 +16043,51 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5797 "src/Compiler/pars.fsy" +//# 5812 "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) ) -//# 5797 "src/Compiler/pars.fsy" +//# 5812 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 16017 "pars.fs" +//# 16054 "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 Microsoft.FSharp.Core.Operators.box ( ( -//# 5803 "src/Compiler/pars.fsy" +//# 5818 "src/Compiler/pars.fsy" let m = unionRanges (rhs parseState 1) _2.Range SynType.SignatureParameter(_1, false, None, _2, m), SynArgInfo(_1, false, None) ) -//# 5803 "src/Compiler/pars.fsy" +//# 5818 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 16030 "pars.fs" +//# 16067 "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 Microsoft.FSharp.Core.Operators.box ( ( -//# 5807 "src/Compiler/pars.fsy" +//# 5822 "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()) ) -//# 5807 "src/Compiler/pars.fsy" +//# 5822 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 16046 "pars.fs" +//# 16083 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5814 "src/Compiler/pars.fsy" +//# 5829 "src/Compiler/pars.fsy" match _1 with | SynType.LongIdent(SynLongIdent([id], _, _)) -> let mColon = rhs parseState 2 @@ -16059,84 +16096,84 @@ let _fsyacc_reductions = lazy [| SynType.SignatureParameter([], false, Some id, ty, m), SynArgInfo([], false, Some id) | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType()) ) -//# 5814 "src/Compiler/pars.fsy" +//# 5829 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 16064 "pars.fs" +//# 16101 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in let _4 = parseState.GetInput(4) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5823 "src/Compiler/pars.fsy" +//# 5838 "src/Compiler/pars.fsy" let m = unionRanges (rhs parseState 1) _4.Range SynType.SignatureParameter([], true, Some _2, _4, m), SynArgInfo([], true, Some _2) ) -//# 5823 "src/Compiler/pars.fsy" +//# 5838 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 16077 "pars.fs" +//# 16114 "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 ( ( -//# 5827 "src/Compiler/pars.fsy" +//# 5842 "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) ) -//# 5827 "src/Compiler/pars.fsy" +//# 5842 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 16092 "pars.fs" +//# 16129 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5833 "src/Compiler/pars.fsy" +//# 5848 "src/Compiler/pars.fsy" _1, SynArgInfo([], false, None) ) -//# 5833 "src/Compiler/pars.fsy" +//# 5848 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 16103 "pars.fs" +//# 16140 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_invalidUseOfAppTypeFunction in Microsoft.FSharp.Core.Operators.box ( ( -//# 5839 "src/Compiler/pars.fsy" +//# 5854 "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 }) ) -//# 5839 "src/Compiler/pars.fsy" +//# 5854 "src/Compiler/pars.fsy" : 'gentype_invalidUseOfAppTypeFunction)); -//# 16117 "pars.fs" +//# 16154 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5843 "src/Compiler/pars.fsy" +//# 5858 "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 }) ) -//# 5843 "src/Compiler/pars.fsy" +//# 5858 "src/Compiler/pars.fsy" : 'gentype_invalidUseOfAppTypeFunction)); -//# 16132 "pars.fs" +//# 16169 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _4 = parseState.GetInput(4) :?> 'gentype_invalidUseOfAppTypeFunction in Microsoft.FSharp.Core.Operators.box ( ( -//# 5848 "src/Compiler/pars.fsy" +//# 5863 "src/Compiler/pars.fsy" let mArrow1 = rhs parseState 2 let mArrow2 = rhs parseState 3 reportParseErrorAt mArrow2 (FSComp.SR.parsExpectingType ()) @@ -16145,59 +16182,59 @@ let _fsyacc_reductions = lazy [| let m2 = unionRanges mArrow2 _4.Range SynType.Fun(_1, SynType.Fun(ty, _4, m2, { ArrowRange = mArrow2 }), m1, { ArrowRange = mArrow1 }) ) -//# 5848 "src/Compiler/pars.fsy" +//# 5863 "src/Compiler/pars.fsy" : 'gentype_invalidUseOfAppTypeFunction)); -//# 16150 "pars.fs" +//# 16187 "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 Microsoft.FSharp.Core.Operators.box ( ( -//# 5856 "src/Compiler/pars.fsy" +//# 5871 "src/Compiler/pars.fsy" let mArrow = rhs parseState 2 let m = rhs2 parseState 1 3 SynType.Fun(_1, _3, m, { ArrowRange = mArrow }) ) -//# 5856 "src/Compiler/pars.fsy" +//# 5871 "src/Compiler/pars.fsy" : 'gentype_invalidUseOfAppTypeFunction)); -//# 16164 "pars.fs" +//# 16201 "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 ( ( -//# 5864 "src/Compiler/pars.fsy" +//# 5879 "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 }) ) -//# 5864 "src/Compiler/pars.fsy" +//# 5879 "src/Compiler/pars.fsy" : SynType)); -//# 16178 "pars.fs" +//# 16215 "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 ( ( -//# 5869 "src/Compiler/pars.fsy" +//# 5884 "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 }) ) -//# 5869 "src/Compiler/pars.fsy" +//# 5884 "src/Compiler/pars.fsy" : SynType)); -//# 16193 "pars.fs" +//# 16230 "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 ( ( -//# 5875 "src/Compiler/pars.fsy" +//# 5890 "src/Compiler/pars.fsy" let mArrow1 = rhs parseState 2 let mArrow2 = rhs parseState 3 reportParseErrorAt mArrow2 (FSComp.SR.parsExpectingType ()) @@ -16206,107 +16243,107 @@ let _fsyacc_reductions = lazy [| let m2 = unionRanges mArrow2 _4.Range SynType.Fun(_1, SynType.Fun(ty, _4, m2, { ArrowRange = mArrow2 }), m1, { ArrowRange = mArrow1 }) ) -//# 5875 "src/Compiler/pars.fsy" +//# 5890 "src/Compiler/pars.fsy" : SynType)); -//# 16211 "pars.fs" +//# 16248 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tupleType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5884 "src/Compiler/pars.fsy" +//# 5899 "src/Compiler/pars.fsy" _1 ) -//# 5884 "src/Compiler/pars.fsy" +//# 5899 "src/Compiler/pars.fsy" : SynType)); -//# 16222 "pars.fs" +//# 16259 "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 ( ( -//# 5887 "src/Compiler/pars.fsy" +//# 5902 "src/Compiler/pars.fsy" checkEndOfFileError _2; _1 ) -//# 5887 "src/Compiler/pars.fsy" +//# 5902 "src/Compiler/pars.fsy" : SynType)); -//# 16234 "pars.fs" +//# 16271 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_tupleOrQuotTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5892 "src/Compiler/pars.fsy" +//# 5907 "src/Compiler/pars.fsy" let mStar = rhs parseState 2 let path = SynTupleTypeSegment.Type _1 :: SynTupleTypeSegment.Star mStar :: _3 mkSynTypeTuple path ) -//# 5892 "src/Compiler/pars.fsy" +//# 5907 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 16248 "pars.fs" +//# 16285 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5897 "src/Compiler/pars.fsy" +//# 5912 "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 ) -//# 5897 "src/Compiler/pars.fsy" +//# 5912 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 16263 "pars.fs" +//# 16300 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_tupleOrQuotTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5903 "src/Compiler/pars.fsy" +//# 5918 "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 ) -//# 5903 "src/Compiler/pars.fsy" +//# 5918 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 16278 "pars.fs" +//# 16315 "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 ( ( -//# 5910 "src/Compiler/pars.fsy" +//# 5925 "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 ) -//# 5910 "src/Compiler/pars.fsy" +//# 5925 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 16293 "pars.fs" +//# 16330 "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 ( ( -//# 5916 "src/Compiler/pars.fsy" +//# 5931 "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 ) -//# 5916 "src/Compiler/pars.fsy" +//# 5931 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 16309 "pars.fs" +//# 16346 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _2 = parseState.GetInput(2) :?> string in @@ -16314,15 +16351,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5923 "src/Compiler/pars.fsy" +//# 5938 "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 ) -//# 5923 "src/Compiler/pars.fsy" +//# 5938 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 16325 "pars.fs" +//# 16362 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _2 = parseState.GetInput(2) :?> string in @@ -16330,68 +16367,68 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5929 "src/Compiler/pars.fsy" +//# 5944 "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 ) -//# 5929 "src/Compiler/pars.fsy" +//# 5944 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 16342 "pars.fs" +//# 16379 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5936 "src/Compiler/pars.fsy" +//# 5951 "src/Compiler/pars.fsy" _1 ) -//# 5936 "src/Compiler/pars.fsy" +//# 5951 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 16353 "pars.fs" +//# 16390 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_tupleOrQuotTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5940 "src/Compiler/pars.fsy" +//# 5955 "src/Compiler/pars.fsy" let mStar = rhs parseState 2 SynTupleTypeSegment.Type _1 :: SynTupleTypeSegment.Star mStar :: _3 ) -//# 5940 "src/Compiler/pars.fsy" +//# 5955 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 16366 "pars.fs" +//# 16403 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5944 "src/Compiler/pars.fsy" +//# 5959 "src/Compiler/pars.fsy" let mStar = rhs parseState 2 let ty = SynType.FromParseError(mStar.EndRange) [SynTupleTypeSegment.Type _1; SynTupleTypeSegment.Star mStar; SynTupleTypeSegment.Type ty] ) -//# 5944 "src/Compiler/pars.fsy" +//# 5959 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 16380 "pars.fs" +//# 16417 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_tupleOrQuotTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5949 "src/Compiler/pars.fsy" +//# 5964 "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 ) -//# 5949 "src/Compiler/pars.fsy" +//# 5964 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 16394 "pars.fs" +//# 16431 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _2 = parseState.GetInput(2) :?> string in @@ -16399,14 +16436,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5955 "src/Compiler/pars.fsy" +//# 5970 "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 ) -//# 5955 "src/Compiler/pars.fsy" +//# 5970 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 16409 "pars.fs" +//# 16446 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _2 = parseState.GetInput(2) :?> string in @@ -16414,90 +16451,90 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5960 "src/Compiler/pars.fsy" +//# 5975 "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] ) -//# 5960 "src/Compiler/pars.fsy" +//# 5975 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 16425 "pars.fs" +//# 16462 "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 ( ( -//# 5966 "src/Compiler/pars.fsy" +//# 5981 "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 ) -//# 5966 "src/Compiler/pars.fsy" +//# 5981 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 16441 "pars.fs" +//# 16478 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5973 "src/Compiler/pars.fsy" +//# 5988 "src/Compiler/pars.fsy" [ SynTupleTypeSegment.Type _1 ] ) -//# 5973 "src/Compiler/pars.fsy" +//# 5988 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 16452 "pars.fs" +//# 16489 "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 ( ( -//# 5977 "src/Compiler/pars.fsy" +//# 5992 "src/Compiler/pars.fsy" let constraints, mAmpersands = _3 SynType.Intersection(Some _1, List.rev constraints, lhs parseState, { AmpersandRanges = rhs parseState 2 :: List.rev mAmpersands }) ) -//# 5977 "src/Compiler/pars.fsy" +//# 5992 "src/Compiler/pars.fsy" : 'gentype_intersectionType)); -//# 16465 "pars.fs" +//# 16502 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomType in let _3 = parseState.GetInput(3) :?> 'gentype_intersectionConstraints in Microsoft.FSharp.Core.Operators.box ( ( -//# 5981 "src/Compiler/pars.fsy" +//# 5996 "src/Compiler/pars.fsy" let constraints, mAmpersands = _3 SynType.Intersection(None, _1 :: List.rev constraints, lhs parseState, { AmpersandRanges = rhs parseState 2 :: List.rev mAmpersands }) ) -//# 5981 "src/Compiler/pars.fsy" +//# 5996 "src/Compiler/pars.fsy" : 'gentype_intersectionType)); -//# 16478 "pars.fs" +//# 16515 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 5986 "src/Compiler/pars.fsy" +//# 6001 "src/Compiler/pars.fsy" SynType.LongIdent(_1) ) -//# 5986 "src/Compiler/pars.fsy" +//# 6001 "src/Compiler/pars.fsy" : 'gentype_appTypeCon)); -//# 16489 "pars.fs" +//# 16526 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 5989 "src/Compiler/pars.fsy" +//# 6004 "src/Compiler/pars.fsy" SynType.Var(_1, lhs parseState) ) -//# 5989 "src/Compiler/pars.fsy" +//# 6004 "src/Compiler/pars.fsy" : 'gentype_appTypeCon)); -//# 16500 "pars.fs" +//# 16537 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCon in let _2 = parseState.GetInput(2) :?> string in @@ -16505,7 +16542,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5993 "src/Compiler/pars.fsy" +//# 6008 "src/Compiler/pars.fsy" if _2 <> "^" && _2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator()) if _2 = "^-" then let afterMinus = (rhs parseState 2).EndRange @@ -16514,56 +16551,56 @@ let _fsyacc_reductions = lazy [| SynType.MeasurePower(_1, SynRationalConst.Negate(_3, m), lhs parseState) else SynType.MeasurePower(_1, _3, lhs parseState) ) -//# 5993 "src/Compiler/pars.fsy" +//# 6008 "src/Compiler/pars.fsy" : 'gentype_appTypeConPower)); -//# 16519 "pars.fs" +//# 16556 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCon in Microsoft.FSharp.Core.Operators.box ( ( -//# 6002 "src/Compiler/pars.fsy" +//# 6017 "src/Compiler/pars.fsy" _1 ) -//# 6002 "src/Compiler/pars.fsy" +//# 6017 "src/Compiler/pars.fsy" : 'gentype_appTypeConPower)); -//# 16530 "pars.fs" +//# 16567 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _2 = parseState.GetInput(2) :?> 'gentype_arrayTypeSuffix in Microsoft.FSharp.Core.Operators.box ( ( -//# 6006 "src/Compiler/pars.fsy" +//# 6021 "src/Compiler/pars.fsy" SynType.Array(_2, _1, lhs parseState) ) -//# 6006 "src/Compiler/pars.fsy" +//# 6021 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 16542 "pars.fs" +//# 16579 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_arrayTypeSuffix in Microsoft.FSharp.Core.Operators.box ( ( -//# 6009 "src/Compiler/pars.fsy" +//# 6024 "src/Compiler/pars.fsy" SynType.Array(_3, _1, lhs parseState) ) -//# 6009 "src/Compiler/pars.fsy" +//# 6024 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 16554 "pars.fs" +//# 16591 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _2 = parseState.GetInput(2) :?> 'gentype_appTypeConPower in Microsoft.FSharp.Core.Operators.box ( ( -//# 6013 "src/Compiler/pars.fsy" +//# 6028 "src/Compiler/pars.fsy" SynType.App(_2, None, [_1], [], None, true, unionRanges (rhs parseState 1) _2.Range) ) -//# 6013 "src/Compiler/pars.fsy" +//# 6028 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 16566 "pars.fs" +//# 16603 "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 @@ -16571,7 +16608,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6016 "src/Compiler/pars.fsy" +//# 6031 "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) @@ -16579,377 +16616,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) ) -//# 6016 "src/Compiler/pars.fsy" +//# 6031 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 16584 "pars.fs" +//# 16621 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_powerType in Microsoft.FSharp.Core.Operators.box ( ( -//# 6024 "src/Compiler/pars.fsy" +//# 6039 "src/Compiler/pars.fsy" _1 ) -//# 6024 "src/Compiler/pars.fsy" +//# 6039 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 16595 "pars.fs" +//# 16632 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_intersectionType in Microsoft.FSharp.Core.Operators.box ( ( -//# 6027 "src/Compiler/pars.fsy" +//# 6042 "src/Compiler/pars.fsy" parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.ConstraintIntersectionOnFlexibleTypes (lhs parseState) _1 ) -//# 6027 "src/Compiler/pars.fsy" +//# 6042 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 16607 "pars.fs" +//# 16644 "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 ( ( -//# 6031 "src/Compiler/pars.fsy" +//# 6046 "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) ) -//# 6031 "src/Compiler/pars.fsy" +//# 6046 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 16621 "pars.fs" +//# 16658 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 6036 "src/Compiler/pars.fsy" +//# 6051 "src/Compiler/pars.fsy" SynType.HashConstraint(_3, lhs parseState) ) -//# 6036 "src/Compiler/pars.fsy" +//# 6051 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 16632 "pars.fs" +//# 16669 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6040 "src/Compiler/pars.fsy" +//# 6055 "src/Compiler/pars.fsy" 1 ) -//# 6040 "src/Compiler/pars.fsy" +//# 6055 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16642 "pars.fs" +//# 16679 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6043 "src/Compiler/pars.fsy" +//# 6058 "src/Compiler/pars.fsy" 2 ) -//# 6043 "src/Compiler/pars.fsy" +//# 6058 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16652 "pars.fs" +//# 16689 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6046 "src/Compiler/pars.fsy" +//# 6061 "src/Compiler/pars.fsy" 3 ) -//# 6046 "src/Compiler/pars.fsy" +//# 6061 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16662 "pars.fs" +//# 16699 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6049 "src/Compiler/pars.fsy" +//# 6064 "src/Compiler/pars.fsy" 4 ) -//# 6049 "src/Compiler/pars.fsy" +//# 6064 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16672 "pars.fs" +//# 16709 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6052 "src/Compiler/pars.fsy" +//# 6067 "src/Compiler/pars.fsy" 5 ) -//# 6052 "src/Compiler/pars.fsy" +//# 6067 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16682 "pars.fs" +//# 16719 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6055 "src/Compiler/pars.fsy" +//# 6070 "src/Compiler/pars.fsy" 6 ) -//# 6055 "src/Compiler/pars.fsy" +//# 6070 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16692 "pars.fs" +//# 16729 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6058 "src/Compiler/pars.fsy" +//# 6073 "src/Compiler/pars.fsy" 7 ) -//# 6058 "src/Compiler/pars.fsy" +//# 6073 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16702 "pars.fs" +//# 16739 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6061 "src/Compiler/pars.fsy" +//# 6076 "src/Compiler/pars.fsy" 8 ) -//# 6061 "src/Compiler/pars.fsy" +//# 6076 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16712 "pars.fs" +//# 16749 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6064 "src/Compiler/pars.fsy" +//# 6079 "src/Compiler/pars.fsy" 9 ) -//# 6064 "src/Compiler/pars.fsy" +//# 6079 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16722 "pars.fs" +//# 16759 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6067 "src/Compiler/pars.fsy" +//# 6082 "src/Compiler/pars.fsy" 10 ) -//# 6067 "src/Compiler/pars.fsy" +//# 6082 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16732 "pars.fs" +//# 16769 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6070 "src/Compiler/pars.fsy" +//# 6085 "src/Compiler/pars.fsy" 11 ) -//# 6070 "src/Compiler/pars.fsy" +//# 6085 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16742 "pars.fs" +//# 16779 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6073 "src/Compiler/pars.fsy" +//# 6088 "src/Compiler/pars.fsy" 12 ) -//# 6073 "src/Compiler/pars.fsy" +//# 6088 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16752 "pars.fs" +//# 16789 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6076 "src/Compiler/pars.fsy" +//# 6091 "src/Compiler/pars.fsy" 13 ) -//# 6076 "src/Compiler/pars.fsy" +//# 6091 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16762 "pars.fs" +//# 16799 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6079 "src/Compiler/pars.fsy" +//# 6094 "src/Compiler/pars.fsy" 14 ) -//# 6079 "src/Compiler/pars.fsy" +//# 6094 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16772 "pars.fs" +//# 16809 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6082 "src/Compiler/pars.fsy" +//# 6097 "src/Compiler/pars.fsy" 15 ) -//# 6082 "src/Compiler/pars.fsy" +//# 6097 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16782 "pars.fs" +//# 16819 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6085 "src/Compiler/pars.fsy" +//# 6100 "src/Compiler/pars.fsy" 16 ) -//# 6085 "src/Compiler/pars.fsy" +//# 6100 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16792 "pars.fs" +//# 16829 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6088 "src/Compiler/pars.fsy" +//# 6103 "src/Compiler/pars.fsy" 17 ) -//# 6088 "src/Compiler/pars.fsy" +//# 6103 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16802 "pars.fs" +//# 16839 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6091 "src/Compiler/pars.fsy" +//# 6106 "src/Compiler/pars.fsy" 18 ) -//# 6091 "src/Compiler/pars.fsy" +//# 6106 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16812 "pars.fs" +//# 16849 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6094 "src/Compiler/pars.fsy" +//# 6109 "src/Compiler/pars.fsy" 19 ) -//# 6094 "src/Compiler/pars.fsy" +//# 6109 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16822 "pars.fs" +//# 16859 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6097 "src/Compiler/pars.fsy" +//# 6112 "src/Compiler/pars.fsy" 20 ) -//# 6097 "src/Compiler/pars.fsy" +//# 6112 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16832 "pars.fs" +//# 16869 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6100 "src/Compiler/pars.fsy" +//# 6115 "src/Compiler/pars.fsy" 21 ) -//# 6100 "src/Compiler/pars.fsy" +//# 6115 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16842 "pars.fs" +//# 16879 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6103 "src/Compiler/pars.fsy" +//# 6118 "src/Compiler/pars.fsy" 22 ) -//# 6103 "src/Compiler/pars.fsy" +//# 6118 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16852 "pars.fs" +//# 16889 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6106 "src/Compiler/pars.fsy" +//# 6121 "src/Compiler/pars.fsy" 23 ) -//# 6106 "src/Compiler/pars.fsy" +//# 6121 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16862 "pars.fs" +//# 16899 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6109 "src/Compiler/pars.fsy" +//# 6124 "src/Compiler/pars.fsy" 24 ) -//# 6109 "src/Compiler/pars.fsy" +//# 6124 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16872 "pars.fs" +//# 16909 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6112 "src/Compiler/pars.fsy" +//# 6127 "src/Compiler/pars.fsy" 25 ) -//# 6112 "src/Compiler/pars.fsy" +//# 6127 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16882 "pars.fs" +//# 16919 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6115 "src/Compiler/pars.fsy" +//# 6130 "src/Compiler/pars.fsy" 26 ) -//# 6115 "src/Compiler/pars.fsy" +//# 6130 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16892 "pars.fs" +//# 16929 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6118 "src/Compiler/pars.fsy" +//# 6133 "src/Compiler/pars.fsy" 27 ) -//# 6118 "src/Compiler/pars.fsy" +//# 6133 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16902 "pars.fs" +//# 16939 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6121 "src/Compiler/pars.fsy" +//# 6136 "src/Compiler/pars.fsy" 28 ) -//# 6121 "src/Compiler/pars.fsy" +//# 6136 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16912 "pars.fs" +//# 16949 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6124 "src/Compiler/pars.fsy" +//# 6139 "src/Compiler/pars.fsy" 29 ) -//# 6124 "src/Compiler/pars.fsy" +//# 6139 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16922 "pars.fs" +//# 16959 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6127 "src/Compiler/pars.fsy" +//# 6142 "src/Compiler/pars.fsy" 30 ) -//# 6127 "src/Compiler/pars.fsy" +//# 6142 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16932 "pars.fs" +//# 16969 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6130 "src/Compiler/pars.fsy" +//# 6145 "src/Compiler/pars.fsy" 31 ) -//# 6130 "src/Compiler/pars.fsy" +//# 6145 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16942 "pars.fs" +//# 16979 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6133 "src/Compiler/pars.fsy" +//# 6148 "src/Compiler/pars.fsy" 32 ) -//# 6133 "src/Compiler/pars.fsy" +//# 6148 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 16952 "pars.fs" +//# 16989 "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 @@ -16957,61 +16994,61 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6137 "src/Compiler/pars.fsy" +//# 6152 "src/Compiler/pars.fsy" let typeArgs, commas = _4 _1 :: _3 :: List.rev typeArgs, (rhs parseState 2) :: (List.rev commas) ) -//# 6137 "src/Compiler/pars.fsy" +//# 6152 "src/Compiler/pars.fsy" : 'gentype_appTypePrefixArguments)); -//# 16966 "pars.fs" +//# 17003 "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 ( ( -//# 6142 "src/Compiler/pars.fsy" +//# 6157 "src/Compiler/pars.fsy" let typeArgs, commas = _1 _3 :: typeArgs, (rhs parseState 2) :: commas ) -//# 6142 "src/Compiler/pars.fsy" +//# 6157 "src/Compiler/pars.fsy" : 'gentype_typeArgListElements)); -//# 16979 "pars.fs" +//# 17016 "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 ( ( -//# 6146 "src/Compiler/pars.fsy" +//# 6161 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsMissingTypeArgs()) let typeArgs, commas = _1 _3 :: typeArgs, (rhs parseState 2) :: commas ) -//# 6146 "src/Compiler/pars.fsy" +//# 6161 "src/Compiler/pars.fsy" : 'gentype_typeArgListElements)); -//# 16993 "pars.fs" +//# 17030 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6151 "src/Compiler/pars.fsy" +//# 6166 "src/Compiler/pars.fsy" [], [] ) -//# 6151 "src/Compiler/pars.fsy" +//# 6166 "src/Compiler/pars.fsy" : 'gentype_typeArgListElements)); -//# 17003 "pars.fs" +//# 17040 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomTypeOrAnonRecdType in Microsoft.FSharp.Core.Operators.box ( ( -//# 6155 "src/Compiler/pars.fsy" +//# 6170 "src/Compiler/pars.fsy" _1 ) -//# 6155 "src/Compiler/pars.fsy" +//# 6170 "src/Compiler/pars.fsy" : 'gentype_powerType)); -//# 17014 "pars.fs" +//# 17051 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomTypeOrAnonRecdType in let _2 = parseState.GetInput(2) :?> string in @@ -17019,7 +17056,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6158 "src/Compiler/pars.fsy" +//# 6173 "src/Compiler/pars.fsy" if _2 <> "^" && _2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator()) if _2 = "^-" then let afterMinus = (rhs parseState 2).EndRange @@ -17028,9 +17065,9 @@ let _fsyacc_reductions = lazy [| SynType.MeasurePower(_1, SynRationalConst.Negate(_3, m), lhs parseState) else SynType.MeasurePower(_1, _3, lhs parseState) ) -//# 6158 "src/Compiler/pars.fsy" +//# 6173 "src/Compiler/pars.fsy" : 'gentype_powerType)); -//# 17033 "pars.fs" +//# 17070 "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 @@ -17038,7 +17075,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6171 "src/Compiler/pars.fsy" +//# 6186 "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) @@ -17046,37 +17083,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) ) -//# 6171 "src/Compiler/pars.fsy" +//# 6186 "src/Compiler/pars.fsy" : SynType)); -//# 17051 "pars.fs" +//# 17088 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomType in Microsoft.FSharp.Core.Operators.box ( ( -//# 6179 "src/Compiler/pars.fsy" +//# 6194 "src/Compiler/pars.fsy" _1 ) -//# 6179 "src/Compiler/pars.fsy" +//# 6194 "src/Compiler/pars.fsy" : SynType)); -//# 17062 "pars.fs" +//# 17099 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomType in Microsoft.FSharp.Core.Operators.box ( ( -//# 6183 "src/Compiler/pars.fsy" +//# 6198 "src/Compiler/pars.fsy" _1 ) -//# 6183 "src/Compiler/pars.fsy" +//# 6198 "src/Compiler/pars.fsy" : 'gentype_atomTypeOrAnonRecdType)); -//# 17073 "pars.fs" +//# 17110 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_anonRecdType in Microsoft.FSharp.Core.Operators.box ( ( -//# 6186 "src/Compiler/pars.fsy" +//# 6201 "src/Compiler/pars.fsy" let flds, isStruct = _1 let flds2 = flds |> List.choose (function @@ -17084,66 +17121,66 @@ let _fsyacc_reductions = lazy [| | _ -> reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidAnonRecdType()); None) SynType.AnonRecd(isStruct, flds2, rhs parseState 1) ) -//# 6186 "src/Compiler/pars.fsy" +//# 6201 "src/Compiler/pars.fsy" : 'gentype_atomTypeOrAnonRecdType)); -//# 17089 "pars.fs" +//# 17126 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_atomType in Microsoft.FSharp.Core.Operators.box ( ( -//# 6197 "src/Compiler/pars.fsy" +//# 6212 "src/Compiler/pars.fsy" SynType.HashConstraint(_2, lhs parseState) ) -//# 6197 "src/Compiler/pars.fsy" +//# 6212 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17100 "pars.fs" +//# 17137 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appTypeConPower in Microsoft.FSharp.Core.Operators.box ( ( -//# 6200 "src/Compiler/pars.fsy" +//# 6215 "src/Compiler/pars.fsy" _1 ) -//# 6200 "src/Compiler/pars.fsy" +//# 6215 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17111 "pars.fs" +//# 17148 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6203 "src/Compiler/pars.fsy" +//# 6218 "src/Compiler/pars.fsy" SynType.Anon(lhs parseState) ) -//# 6203 "src/Compiler/pars.fsy" +//# 6218 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17121 "pars.fs" +//# 17158 "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 ( ( -//# 6206 "src/Compiler/pars.fsy" +//# 6221 "src/Compiler/pars.fsy" SynType.Paren(_2, lhs parseState) ) -//# 6206 "src/Compiler/pars.fsy" +//# 6221 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17133 "pars.fs" +//# 17170 "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 ( ( -//# 6209 "src/Compiler/pars.fsy" +//# 6224 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen ()) SynType.Paren(_2, lhs parseState) ) -//# 6209 "src/Compiler/pars.fsy" +//# 6224 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17146 "pars.fs" +//# 17183 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_appType in let _5 = parseState.GetInput(5) :?> 'gentype_tupleOrQuotTypeElements in @@ -17151,15 +17188,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6213 "src/Compiler/pars.fsy" +//# 6228 "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) ) -//# 6213 "src/Compiler/pars.fsy" +//# 6228 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17162 "pars.fs" +//# 17199 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_appType in let _5 = parseState.GetInput(5) :?> 'gentype_tupleOrQuotTypeElements in @@ -17167,144 +17204,144 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6219 "src/Compiler/pars.fsy" +//# 6234 "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) ) -//# 6219 "src/Compiler/pars.fsy" +//# 6234 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17179 "pars.fs" +//# 17216 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_appType in let _5 = parseState.GetInput(5) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 6226 "src/Compiler/pars.fsy" +//# 6241 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) SynType.Anon(lhs parseState) ) -//# 6226 "src/Compiler/pars.fsy" +//# 6241 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17192 "pars.fs" +//# 17229 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_appType in let _4 = parseState.GetInput(4) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 6230 "src/Compiler/pars.fsy" +//# 6245 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) SynType.Anon(lhs parseState) ) -//# 6230 "src/Compiler/pars.fsy" +//# 6245 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17205 "pars.fs" +//# 17242 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 6234 "src/Compiler/pars.fsy" +//# 6249 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) SynType.Anon(lhs parseState) ) -//# 6234 "src/Compiler/pars.fsy" +//# 6249 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17217 "pars.fs" +//# 17254 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_rawConstant in Microsoft.FSharp.Core.Operators.box ( ( -//# 6238 "src/Compiler/pars.fsy" +//# 6253 "src/Compiler/pars.fsy" SynType.StaticConstant(_1, rhs parseState 1) ) -//# 6238 "src/Compiler/pars.fsy" +//# 6253 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17228 "pars.fs" +//# 17265 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6241 "src/Compiler/pars.fsy" +//# 6256 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynType.StaticConstant(SynConst.String(null, SynStringKind.Regular, m), m) ) -//# 6241 "src/Compiler/pars.fsy" +//# 6256 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17239 "pars.fs" +//# 17276 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 6245 "src/Compiler/pars.fsy" +//# 6260 "src/Compiler/pars.fsy" let e, _ = _2 SynType.StaticConstantExpr(e, lhs parseState) ) -//# 6245 "src/Compiler/pars.fsy" +//# 6260 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17251 "pars.fs" +//# 17288 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6249 "src/Compiler/pars.fsy" +//# 6264 "src/Compiler/pars.fsy" SynType.StaticConstant(SynConst.Bool false, lhs parseState) ) -//# 6249 "src/Compiler/pars.fsy" +//# 6264 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17261 "pars.fs" +//# 17298 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6252 "src/Compiler/pars.fsy" +//# 6267 "src/Compiler/pars.fsy" SynType.StaticConstant(SynConst.Bool true, lhs parseState) ) -//# 6252 "src/Compiler/pars.fsy" +//# 6267 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17271 "pars.fs" +//# 17308 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 6255 "src/Compiler/pars.fsy" +//# 6270 "src/Compiler/pars.fsy" (* silent recovery *) SynType.Anon(lhs parseState) ) -//# 6255 "src/Compiler/pars.fsy" +//# 6270 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17282 "pars.fs" +//# 17319 "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 ( ( -//# 6258 "src/Compiler/pars.fsy" +//# 6273 "src/Compiler/pars.fsy" let mLessThan, mGreaterThan, args, commas, mWhole = _2 SynType.App(_1, Some(mLessThan), args, commas, mGreaterThan, false, unionRanges _1.Range mWhole) ) -//# 6258 "src/Compiler/pars.fsy" +//# 6273 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17295 "pars.fs" +//# 17332 "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 ( ( -//# 6262 "src/Compiler/pars.fsy" +//# 6277 "src/Compiler/pars.fsy" SynType.LongIdentApp(_1, _3, None, [], [], None, unionRanges (rhs parseState 1) _3.Range) ) -//# 6262 "src/Compiler/pars.fsy" +//# 6277 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17307 "pars.fs" +//# 17344 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomType in let _3 = parseState.GetInput(3) :?> SynLongIdent in @@ -17312,52 +17349,52 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6265 "src/Compiler/pars.fsy" +//# 6280 "src/Compiler/pars.fsy" let mLessThan, mGreaterThan, args, commas, mWhole = _4 SynType.LongIdentApp(_1, _3, Some(mLessThan), args, commas, mGreaterThan, unionRanges _1.Range mWhole) ) -//# 6265 "src/Compiler/pars.fsy" +//# 6280 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17321 "pars.fs" +//# 17358 "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 ( ( -//# 6269 "src/Compiler/pars.fsy" +//# 6284 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedNameAfterToken()) _1 ) -//# 6269 "src/Compiler/pars.fsy" +//# 6284 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 17334 "pars.fs" +//# 17371 "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 ( ( -//# 6274 "src/Compiler/pars.fsy" +//# 6289 "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 ( ( -//# 6280 "src/Compiler/pars.fsy" +//# 6295 "src/Compiler/pars.fsy" let mLessThan, mGreaterThan, _, args, commas, mAll = _2 mLessThan, mGreaterThan, args, commas, mAll ) -//# 6280 "src/Compiler/pars.fsy" +//# 6295 "src/Compiler/pars.fsy" : range * range option * SynType list * range list * range)); -//# 17360 "pars.fs" +//# 17397 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActualOrDummyIfEmpty in @@ -17367,13 +17404,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6285 "src/Compiler/pars.fsy" +//# 6300 "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 ) -//# 6285 "src/Compiler/pars.fsy" +//# 6300 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 17376 "pars.fs" +//# 17413 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActualOrDummyIfEmpty in @@ -17383,7 +17420,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6289 "src/Compiler/pars.fsy" +//# 6304 "src/Compiler/pars.fsy" if not _6 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileTypeArgs()) else @@ -17393,9 +17430,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 ) -//# 6289 "src/Compiler/pars.fsy" +//# 6304 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 17398 "pars.fs" +//# 17435 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActualOrDummyIfEmpty in @@ -17403,15 +17440,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6299 "src/Compiler/pars.fsy" +//# 6314 "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 ) -//# 6299 "src/Compiler/pars.fsy" +//# 6314 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 17414 "pars.fs" +//# 17451 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActual in @@ -17419,12 +17456,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6305 "src/Compiler/pars.fsy" +//# 6320 "src/Compiler/pars.fsy" (rhs parseState 1), Some(rhs parseState 3), true, [_2], [], lhs parseState ) -//# 6305 "src/Compiler/pars.fsy" +//# 6320 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 17427 "pars.fs" +//# 17464 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActual in @@ -17432,34 +17469,34 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6308 "src/Compiler/pars.fsy" +//# 6323 "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 ) -//# 6308 "src/Compiler/pars.fsy" +//# 6323 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 17443 "pars.fs" +//# 17480 "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 ( ( -//# 6314 "src/Compiler/pars.fsy" +//# 6329 "src/Compiler/pars.fsy" (rhs parseState 1), Some(rhs parseState 2), true, [], [], lhs parseState ) -//# 6314 "src/Compiler/pars.fsy" +//# 6329 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 17455 "pars.fs" +//# 17492 "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 ( ( -//# 6317 "src/Compiler/pars.fsy" +//# 6332 "src/Compiler/pars.fsy" if not _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsExpectedTypeAfterToken()) else @@ -17468,83 +17505,83 @@ let _fsyacc_reductions = lazy [| let zeroWidthAtStartOfNextToken = nextToken.StartRange (rhs parseState 1), None, false, [], [], unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken ) -//# 6317 "src/Compiler/pars.fsy" +//# 6332 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 17473 "pars.fs" +//# 17510 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 6327 "src/Compiler/pars.fsy" +//# 6342 "src/Compiler/pars.fsy" _1 ) -//# 6327 "src/Compiler/pars.fsy" +//# 6342 "src/Compiler/pars.fsy" : 'gentype_typeArgActual)); -//# 17484 "pars.fs" +//# 17521 "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 ( ( -//# 6330 "src/Compiler/pars.fsy" +//# 6345 "src/Compiler/pars.fsy" SynType.StaticConstantNamed(_1, _3, unionRanges _1.Range _3.Range) ) -//# 6330 "src/Compiler/pars.fsy" +//# 6345 "src/Compiler/pars.fsy" : 'gentype_typeArgActual)); -//# 17496 "pars.fs" +//# 17533 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 6333 "src/Compiler/pars.fsy" +//# 6348 "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)) ) -//# 6333 "src/Compiler/pars.fsy" +//# 6348 "src/Compiler/pars.fsy" : 'gentype_typeArgActual)); -//# 17510 "pars.fs" +//# 17547 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeArgActual in Microsoft.FSharp.Core.Operators.box ( ( -//# 6340 "src/Compiler/pars.fsy" +//# 6355 "src/Compiler/pars.fsy" _1 ) -//# 6340 "src/Compiler/pars.fsy" +//# 6355 "src/Compiler/pars.fsy" : 'gentype_typeArgActualOrDummyIfEmpty)); -//# 17521 "pars.fs" +//# 17558 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_dummyTypeArg in Microsoft.FSharp.Core.Operators.box ( ( -//# 6343 "src/Compiler/pars.fsy" +//# 6358 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMissingTypeArgs()) _1 ) -//# 6343 "src/Compiler/pars.fsy" +//# 6358 "src/Compiler/pars.fsy" : 'gentype_typeArgActualOrDummyIfEmpty)); -//# 17533 "pars.fs" +//# 17570 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6348 "src/Compiler/pars.fsy" +//# 6363 "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 ) -//# 6348 "src/Compiler/pars.fsy" +//# 6363 "src/Compiler/pars.fsy" : 'gentype_dummyTypeArg)); -//# 17547 "pars.fs" +//# 17584 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_measureTypeExpr in @@ -17552,76 +17589,76 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6356 "src/Compiler/pars.fsy" +//# 6371 "src/Compiler/pars.fsy" let mLess = rhs parseState 1 let mGreater = rhs parseState 3 let trivia = { LessRange = mLess; GreaterRange = mGreater } _2, trivia ) -//# 6356 "src/Compiler/pars.fsy" +//# 6371 "src/Compiler/pars.fsy" : 'gentype_measureTypeArg)); -//# 17563 "pars.fs" +//# 17600 "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 ( ( -//# 6362 "src/Compiler/pars.fsy" +//# 6377 "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 ) -//# 6362 "src/Compiler/pars.fsy" +//# 6377 "src/Compiler/pars.fsy" : 'gentype_measureTypeArg)); -//# 17578 "pars.fs" +//# 17615 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 6369 "src/Compiler/pars.fsy" +//# 6384 "src/Compiler/pars.fsy" SynMeasure.Named(_1.LongIdent, _1.Range) ) -//# 6369 "src/Compiler/pars.fsy" +//# 6384 "src/Compiler/pars.fsy" : 'gentype_measureTypeAtom)); -//# 17589 "pars.fs" +//# 17626 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 6372 "src/Compiler/pars.fsy" +//# 6387 "src/Compiler/pars.fsy" SynMeasure.Var(_1, lhs parseState) ) -//# 6372 "src/Compiler/pars.fsy" +//# 6387 "src/Compiler/pars.fsy" : 'gentype_measureTypeAtom)); -//# 17600 "pars.fs" +//# 17637 "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 ( ( -//# 6375 "src/Compiler/pars.fsy" +//# 6390 "src/Compiler/pars.fsy" let mParen = rhs2 parseState 1 3 SynMeasure.Paren(_2, mParen) ) -//# 6375 "src/Compiler/pars.fsy" +//# 6390 "src/Compiler/pars.fsy" : 'gentype_measureTypeAtom)); -//# 17613 "pars.fs" +//# 17650 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeAtom in Microsoft.FSharp.Core.Operators.box ( ( -//# 6380 "src/Compiler/pars.fsy" +//# 6395 "src/Compiler/pars.fsy" _1 ) -//# 6380 "src/Compiler/pars.fsy" +//# 6395 "src/Compiler/pars.fsy" : 'gentype_measureTypePower)); -//# 17624 "pars.fs" +//# 17661 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeAtom in let _2 = parseState.GetInput(2) :?> string in @@ -17629,7 +17666,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6383 "src/Compiler/pars.fsy" +//# 6398 "src/Compiler/pars.fsy" if _2 <> "^" && _2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) if _2 = "^-" then let mOp = rhs parseState 2 @@ -17640,68 +17677,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) ) -//# 6383 "src/Compiler/pars.fsy" +//# 6398 "src/Compiler/pars.fsy" : 'gentype_measureTypePower)); -//# 17645 "pars.fs" +//# 17682 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int32 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 6394 "src/Compiler/pars.fsy" +//# 6409 "src/Compiler/pars.fsy" if fst _1 <> 1 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedIntegerLiteralForUnitOfMeasure()) let m = rhs parseState 1 SynMeasure.One(m) ) -//# 6394 "src/Compiler/pars.fsy" +//# 6409 "src/Compiler/pars.fsy" : 'gentype_measureTypePower)); -//# 17658 "pars.fs" +//# 17695 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_measureTypePower in Microsoft.FSharp.Core.Operators.box ( ( -//# 6400 "src/Compiler/pars.fsy" +//# 6415 "src/Compiler/pars.fsy" [_1] ) -//# 6400 "src/Compiler/pars.fsy" +//# 6415 "src/Compiler/pars.fsy" : 'gentype_measureTypeSeq)); -//# 17669 "pars.fs" +//# 17706 "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 ( ( -//# 6403 "src/Compiler/pars.fsy" +//# 6418 "src/Compiler/pars.fsy" _1 :: _2 ) -//# 6403 "src/Compiler/pars.fsy" +//# 6418 "src/Compiler/pars.fsy" : 'gentype_measureTypeSeq)); -//# 17681 "pars.fs" +//# 17718 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeSeq in Microsoft.FSharp.Core.Operators.box ( ( -//# 6407 "src/Compiler/pars.fsy" +//# 6422 "src/Compiler/pars.fsy" SynMeasure.Seq(_1, lhs parseState) ) -//# 6407 "src/Compiler/pars.fsy" +//# 6422 "src/Compiler/pars.fsy" : 'gentype_measureTypeExpr)); -//# 17692 "pars.fs" +//# 17729 "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 ( ( -//# 6410 "src/Compiler/pars.fsy" +//# 6425 "src/Compiler/pars.fsy" SynMeasure.Product(_1, rhs parseState 2, _3, lhs parseState) ) -//# 6410 "src/Compiler/pars.fsy" +//# 6425 "src/Compiler/pars.fsy" : 'gentype_measureTypeExpr)); -//# 17704 "pars.fs" +//# 17741 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeExpr in let _2 = parseState.GetInput(2) :?> string in @@ -17709,1072 +17746,1072 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6413 "src/Compiler/pars.fsy" +//# 6428 "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) ) -//# 6413 "src/Compiler/pars.fsy" +//# 6428 "src/Compiler/pars.fsy" : 'gentype_measureTypeExpr)); -//# 17719 "pars.fs" +//# 17756 "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 ( ( -//# 6418 "src/Compiler/pars.fsy" +//# 6433 "src/Compiler/pars.fsy" if _1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) SynMeasure.Divide(None, rhs parseState 1, _2, lhs parseState) ) -//# 6418 "src/Compiler/pars.fsy" +//# 6433 "src/Compiler/pars.fsy" : 'gentype_measureTypeExpr)); -//# 17732 "pars.fs" +//# 17769 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 6423 "src/Compiler/pars.fsy" +//# 6438 "src/Compiler/pars.fsy" let id = mkSynId (lhs parseState) (_2).idText SynTypar(id, TyparStaticReq.None, false) ) -//# 6423 "src/Compiler/pars.fsy" +//# 6438 "src/Compiler/pars.fsy" : SynTypar)); -//# 17744 "pars.fs" +//# 17781 "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 ( ( -//# 6427 "src/Compiler/pars.fsy" +//# 6442 "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) ) -//# 6427 "src/Compiler/pars.fsy" +//# 6442 "src/Compiler/pars.fsy" : SynTypar)); -//# 17758 "pars.fs" +//# 17795 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6433 "src/Compiler/pars.fsy" +//# 6448 "src/Compiler/pars.fsy" ident(_1, rhs parseState 1) ) -//# 6433 "src/Compiler/pars.fsy" +//# 6448 "src/Compiler/pars.fsy" : Ident)); -//# 17769 "pars.fs" +//# 17806 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6438 "src/Compiler/pars.fsy" +//# 6453 "src/Compiler/pars.fsy" SynLongIdent([ident(MangledGlobalName, rhs parseState 1)], [], [Some(IdentTrivia.OriginalNotation "global")]) ) -//# 6438 "src/Compiler/pars.fsy" +//# 6453 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 17779 "pars.fs" +//# 17816 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 6441 "src/Compiler/pars.fsy" +//# 6456 "src/Compiler/pars.fsy" SynLongIdent([_1], [], [None]) ) -//# 6441 "src/Compiler/pars.fsy" +//# 6456 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 17790 "pars.fs" +//# 17827 "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 ( ( -//# 6444 "src/Compiler/pars.fsy" +//# 6459 "src/Compiler/pars.fsy" let (SynLongIdent(lid, dotms, trivia)) = _1 SynLongIdent(lid @ [_3], dotms @ [rhs parseState 2], trivia @ [None]) ) -//# 6444 "src/Compiler/pars.fsy" +//# 6459 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 17803 "pars.fs" +//# 17840 "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 ( ( -//# 6448 "src/Compiler/pars.fsy" +//# 6463 "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) ) -//# 6448 "src/Compiler/pars.fsy" +//# 6463 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 17817 "pars.fs" +//# 17854 "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 ( ( -//# 6456 "src/Compiler/pars.fsy" +//# 6471 "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) ) -//# 6456 "src/Compiler/pars.fsy" +//# 6471 "src/Compiler/pars.fsy" : 'gentype_opName)); -//# 17831 "pars.fs" +//# 17868 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 6461 "src/Compiler/pars.fsy" +//# 6476 "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) ) -//# 6461 "src/Compiler/pars.fsy" +//# 6476 "src/Compiler/pars.fsy" : 'gentype_opName)); -//# 17845 "pars.fs" +//# 17882 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6467 "src/Compiler/pars.fsy" +//# 6482 "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) ) -//# 6467 "src/Compiler/pars.fsy" +//# 6482 "src/Compiler/pars.fsy" : 'gentype_opName)); -//# 17858 "pars.fs" +//# 17895 "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 ( ( -//# 6474 "src/Compiler/pars.fsy" +//# 6489 "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) ) -//# 6474 "src/Compiler/pars.fsy" +//# 6489 "src/Compiler/pars.fsy" : 'gentype_opName)); -//# 17873 "pars.fs" +//# 17910 "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 ( ( -//# 6481 "src/Compiler/pars.fsy" +//# 6496 "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) ) -//# 6481 "src/Compiler/pars.fsy" +//# 6496 "src/Compiler/pars.fsy" : 'gentype_opName)); -//# 17888 "pars.fs" +//# 17925 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6489 "src/Compiler/pars.fsy" +//# 6504 "src/Compiler/pars.fsy" if not (IsValidPrefixOperatorDefinitionName _1) then reportParseErrorAt (lhs parseState) (FSComp.SR.parsInvalidPrefixOperatorDefinition()) _1 ) -//# 6489 "src/Compiler/pars.fsy" +//# 6504 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 17901 "pars.fs" +//# 17938 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6494 "src/Compiler/pars.fsy" +//# 6509 "src/Compiler/pars.fsy" _1 ) -//# 6494 "src/Compiler/pars.fsy" +//# 6509 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 17912 "pars.fs" +//# 17949 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6497 "src/Compiler/pars.fsy" +//# 6512 "src/Compiler/pars.fsy" _1 ) -//# 6497 "src/Compiler/pars.fsy" +//# 6512 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 17923 "pars.fs" +//# 17960 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6500 "src/Compiler/pars.fsy" +//# 6515 "src/Compiler/pars.fsy" _1 ) -//# 6500 "src/Compiler/pars.fsy" +//# 6515 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 17934 "pars.fs" +//# 17971 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6503 "src/Compiler/pars.fsy" +//# 6518 "src/Compiler/pars.fsy" _1 ) -//# 6503 "src/Compiler/pars.fsy" +//# 6518 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 17945 "pars.fs" +//# 17982 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6506 "src/Compiler/pars.fsy" +//# 6521 "src/Compiler/pars.fsy" _1 ) -//# 6506 "src/Compiler/pars.fsy" +//# 6521 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 17956 "pars.fs" +//# 17993 "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" +//# 6524 "src/Compiler/pars.fsy" _1 ) -//# 6509 "src/Compiler/pars.fsy" +//# 6524 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 17967 "pars.fs" +//# 18004 "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" +//# 6527 "src/Compiler/pars.fsy" _1 ) -//# 6512 "src/Compiler/pars.fsy" +//# 6527 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 17978 "pars.fs" +//# 18015 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6515 "src/Compiler/pars.fsy" +//# 6530 "src/Compiler/pars.fsy" "$" ) -//# 6515 "src/Compiler/pars.fsy" +//# 6530 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 17988 "pars.fs" +//# 18025 "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" +//# 6533 "src/Compiler/pars.fsy" _1 ) -//# 6518 "src/Compiler/pars.fsy" +//# 6533 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 17999 "pars.fs" +//# 18036 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6521 "src/Compiler/pars.fsy" +//# 6536 "src/Compiler/pars.fsy" "-" ) -//# 6521 "src/Compiler/pars.fsy" +//# 6536 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18009 "pars.fs" +//# 18046 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6524 "src/Compiler/pars.fsy" +//# 6539 "src/Compiler/pars.fsy" "*" ) -//# 6524 "src/Compiler/pars.fsy" +//# 6539 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18019 "pars.fs" +//# 18056 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6527 "src/Compiler/pars.fsy" +//# 6542 "src/Compiler/pars.fsy" "=" ) -//# 6527 "src/Compiler/pars.fsy" +//# 6542 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18029 "pars.fs" +//# 18066 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6530 "src/Compiler/pars.fsy" +//# 6545 "src/Compiler/pars.fsy" "or" ) -//# 6530 "src/Compiler/pars.fsy" +//# 6545 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18039 "pars.fs" +//# 18076 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 6533 "src/Compiler/pars.fsy" +//# 6548 "src/Compiler/pars.fsy" "<" ) -//# 6533 "src/Compiler/pars.fsy" +//# 6548 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18050 "pars.fs" +//# 18087 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 6536 "src/Compiler/pars.fsy" +//# 6551 "src/Compiler/pars.fsy" ">" ) -//# 6536 "src/Compiler/pars.fsy" +//# 6551 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18061 "pars.fs" +//# 18098 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6539 "src/Compiler/pars.fsy" +//# 6554 "src/Compiler/pars.fsy" "?" ) -//# 6539 "src/Compiler/pars.fsy" +//# 6554 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18071 "pars.fs" +//# 18108 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6542 "src/Compiler/pars.fsy" +//# 6557 "src/Compiler/pars.fsy" "&" ) -//# 6542 "src/Compiler/pars.fsy" +//# 6557 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18081 "pars.fs" +//# 18118 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6545 "src/Compiler/pars.fsy" +//# 6560 "src/Compiler/pars.fsy" "&&" ) -//# 6545 "src/Compiler/pars.fsy" +//# 6560 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18091 "pars.fs" +//# 18128 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6548 "src/Compiler/pars.fsy" +//# 6563 "src/Compiler/pars.fsy" "||" ) -//# 6548 "src/Compiler/pars.fsy" +//# 6563 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18101 "pars.fs" +//# 18138 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6551 "src/Compiler/pars.fsy" +//# 6566 "src/Compiler/pars.fsy" ":=" ) -//# 6551 "src/Compiler/pars.fsy" +//# 6566 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18111 "pars.fs" +//# 18148 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6554 "src/Compiler/pars.fsy" +//# 6569 "src/Compiler/pars.fsy" if _1 <> ".[]" && _1 <> ".()" && _1 <> ".()<-" then deprecatedOperator (lhs parseState) _1 ) -//# 6554 "src/Compiler/pars.fsy" +//# 6569 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18124 "pars.fs" +//# 18161 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6559 "src/Compiler/pars.fsy" +//# 6574 "src/Compiler/pars.fsy" _1 ) -//# 6559 "src/Compiler/pars.fsy" +//# 6574 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18135 "pars.fs" +//# 18172 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6562 "src/Compiler/pars.fsy" +//# 6577 "src/Compiler/pars.fsy" ".." ) -//# 6562 "src/Compiler/pars.fsy" +//# 6577 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18145 "pars.fs" +//# 18182 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6565 "src/Compiler/pars.fsy" +//# 6580 "src/Compiler/pars.fsy" ".. .." ) -//# 6565 "src/Compiler/pars.fsy" +//# 6580 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18155 "pars.fs" +//# 18192 "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 ( ( -//# 6568 "src/Compiler/pars.fsy" +//# 6583 "src/Compiler/pars.fsy" if _1 <> _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMismatchedQuotationName(fst _1)) fst _1 ) -//# 6568 "src/Compiler/pars.fsy" +//# 6583 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 18168 "pars.fs" +//# 18205 "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" +//# 6589 "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 ) -//# 6574 "src/Compiler/pars.fsy" +//# 6589 "src/Compiler/pars.fsy" : 'gentype_activePatternCaseName)); -//# 18181 "pars.fs" +//# 18218 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_activePatternCaseName in Microsoft.FSharp.Core.Operators.box ( ( -//# 6581 "src/Compiler/pars.fsy" +//# 6596 "src/Compiler/pars.fsy" [_2] ) -//# 6581 "src/Compiler/pars.fsy" +//# 6596 "src/Compiler/pars.fsy" : 'gentype_activePatternCaseNames)); -//# 18192 "pars.fs" +//# 18229 "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 ( ( -//# 6584 "src/Compiler/pars.fsy" +//# 6599 "src/Compiler/pars.fsy" _3 :: _1 ) -//# 6584 "src/Compiler/pars.fsy" +//# 6599 "src/Compiler/pars.fsy" : 'gentype_activePatternCaseNames)); -//# 18204 "pars.fs" +//# 18241 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 6589 "src/Compiler/pars.fsy" +//# 6604 "src/Compiler/pars.fsy" SynIdent(_1, None) ) -//# 6589 "src/Compiler/pars.fsy" +//# 6604 "src/Compiler/pars.fsy" : 'gentype_identOrOp)); -//# 18215 "pars.fs" +//# 18252 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opName in Microsoft.FSharp.Core.Operators.box ( ( -//# 6592 "src/Compiler/pars.fsy" +//# 6607 "src/Compiler/pars.fsy" let ident, trivia = _1 SynIdent(ident, Some trivia) ) -//# 6592 "src/Compiler/pars.fsy" +//# 6607 "src/Compiler/pars.fsy" : 'gentype_identOrOp)); -//# 18227 "pars.fs" +//# 18264 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 6599 "src/Compiler/pars.fsy" +//# 6614 "src/Compiler/pars.fsy" SynLongIdent([_1], [], [None]) ) -//# 6599 "src/Compiler/pars.fsy" +//# 6614 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 18238 "pars.fs" +//# 18275 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opName in Microsoft.FSharp.Core.Operators.box ( ( -//# 6602 "src/Compiler/pars.fsy" +//# 6617 "src/Compiler/pars.fsy" let ident, trivia = _1 SynLongIdent([ident], [], [Some trivia]) ) -//# 6602 "src/Compiler/pars.fsy" +//# 6617 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 18250 "pars.fs" +//# 18287 "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 ( ( -//# 6606 "src/Compiler/pars.fsy" +//# 6621 "src/Compiler/pars.fsy" prependIdentInLongIdentWithTrivia (SynIdent(_1, None)) (rhs parseState 2) _3 ) -//# 6606 "src/Compiler/pars.fsy" +//# 6621 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 18262 "pars.fs" +//# 18299 "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 ( ( -//# 6609 "src/Compiler/pars.fsy" +//# 6624 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsIdentifierExpected()) SynLongIdent([_1], [rhs parseState 2], [None]) ) -//# 6609 "src/Compiler/pars.fsy" +//# 6624 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 18275 "pars.fs" +//# 18312 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_identOrOp in Microsoft.FSharp.Core.Operators.box ( ( -//# 6615 "src/Compiler/pars.fsy" +//# 6630 "src/Compiler/pars.fsy" _1 ) -//# 6615 "src/Compiler/pars.fsy" +//# 6630 "src/Compiler/pars.fsy" : 'gentype_nameop)); -//# 18286 "pars.fs" +//# 18323 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 6619 "src/Compiler/pars.fsy" +//# 6634 "src/Compiler/pars.fsy" if _1.idText = "" then SynExpr.FromParseError(SynExpr.Ident(_1), _1.idRange) else SynExpr.Ident(_1) ) -//# 6619 "src/Compiler/pars.fsy" +//# 6634 "src/Compiler/pars.fsy" : 'gentype_identExpr)); -//# 18300 "pars.fs" +//# 18337 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opName in Microsoft.FSharp.Core.Operators.box ( ( -//# 6625 "src/Compiler/pars.fsy" +//# 6640 "src/Compiler/pars.fsy" let m = lhs parseState let ident, trivia = _1 SynExpr.LongIdent(false, SynLongIdent([ident], [], [Some trivia]), None, m) ) -//# 6625 "src/Compiler/pars.fsy" +//# 6640 "src/Compiler/pars.fsy" : 'gentype_identExpr)); -//# 18313 "pars.fs" +//# 18350 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6630 "src/Compiler/pars.fsy" +//# 6645 "src/Compiler/pars.fsy" ) -//# 6630 "src/Compiler/pars.fsy" +//# 6645 "src/Compiler/pars.fsy" : 'gentype_topSeparator)); -//# 18323 "pars.fs" +//# 18360 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6631 "src/Compiler/pars.fsy" +//# 6646 "src/Compiler/pars.fsy" ) -//# 6631 "src/Compiler/pars.fsy" +//# 6646 "src/Compiler/pars.fsy" : 'gentype_topSeparator)); -//# 18333 "pars.fs" +//# 18370 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6632 "src/Compiler/pars.fsy" +//# 6647 "src/Compiler/pars.fsy" ) -//# 6632 "src/Compiler/pars.fsy" +//# 6647 "src/Compiler/pars.fsy" : 'gentype_topSeparator)); -//# 18343 "pars.fs" +//# 18380 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topSeparator in Microsoft.FSharp.Core.Operators.box ( ( -//# 6635 "src/Compiler/pars.fsy" +//# 6650 "src/Compiler/pars.fsy" ) -//# 6635 "src/Compiler/pars.fsy" +//# 6650 "src/Compiler/pars.fsy" : 'gentype_topSeparators)); -//# 18354 "pars.fs" +//# 18391 "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 ( ( -//# 6636 "src/Compiler/pars.fsy" +//# 6651 "src/Compiler/pars.fsy" ) -//# 6636 "src/Compiler/pars.fsy" +//# 6651 "src/Compiler/pars.fsy" : 'gentype_topSeparators)); -//# 18366 "pars.fs" +//# 18403 "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 ( ( -//# 6639 "src/Compiler/pars.fsy" +//# 6654 "src/Compiler/pars.fsy" ) -//# 6639 "src/Compiler/pars.fsy" +//# 6654 "src/Compiler/pars.fsy" : 'gentype_opt_topSeparators)); -//# 18378 "pars.fs" +//# 18415 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6640 "src/Compiler/pars.fsy" +//# 6655 "src/Compiler/pars.fsy" ) -//# 6640 "src/Compiler/pars.fsy" +//# 6655 "src/Compiler/pars.fsy" : 'gentype_opt_topSeparators)); -//# 18388 "pars.fs" +//# 18425 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6644 "src/Compiler/pars.fsy" +//# 6659 "src/Compiler/pars.fsy" ) -//# 6644 "src/Compiler/pars.fsy" +//# 6659 "src/Compiler/pars.fsy" : 'gentype_seps)); -//# 18398 "pars.fs" +//# 18435 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6645 "src/Compiler/pars.fsy" +//# 6660 "src/Compiler/pars.fsy" ) -//# 6645 "src/Compiler/pars.fsy" +//# 6660 "src/Compiler/pars.fsy" : 'gentype_seps)); -//# 18408 "pars.fs" +//# 18445 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6646 "src/Compiler/pars.fsy" +//# 6661 "src/Compiler/pars.fsy" ) -//# 6646 "src/Compiler/pars.fsy" +//# 6661 "src/Compiler/pars.fsy" : 'gentype_seps)); -//# 18418 "pars.fs" +//# 18455 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6647 "src/Compiler/pars.fsy" +//# 6662 "src/Compiler/pars.fsy" ) -//# 6647 "src/Compiler/pars.fsy" +//# 6662 "src/Compiler/pars.fsy" : 'gentype_seps)); -//# 18428 "pars.fs" +//# 18465 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 6652 "src/Compiler/pars.fsy" +//# 6667 "src/Compiler/pars.fsy" ) -//# 6652 "src/Compiler/pars.fsy" +//# 6667 "src/Compiler/pars.fsy" : 'gentype_declEnd)); -//# 18439 "pars.fs" +//# 18476 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6654 "src/Compiler/pars.fsy" +//# 6669 "src/Compiler/pars.fsy" ) -//# 6654 "src/Compiler/pars.fsy" +//# 6669 "src/Compiler/pars.fsy" : 'gentype_declEnd)); -//# 18449 "pars.fs" +//# 18486 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6656 "src/Compiler/pars.fsy" +//# 6671 "src/Compiler/pars.fsy" ) -//# 6656 "src/Compiler/pars.fsy" +//# 6671 "src/Compiler/pars.fsy" : 'gentype_declEnd)); -//# 18459 "pars.fs" +//# 18496 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 6661 "src/Compiler/pars.fsy" +//# 6676 "src/Compiler/pars.fsy" ) -//# 6661 "src/Compiler/pars.fsy" +//# 6676 "src/Compiler/pars.fsy" : 'gentype_opt_declEnd)); -//# 18470 "pars.fs" +//# 18507 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6663 "src/Compiler/pars.fsy" +//# 6678 "src/Compiler/pars.fsy" ) -//# 6663 "src/Compiler/pars.fsy" +//# 6678 "src/Compiler/pars.fsy" : 'gentype_opt_declEnd)); -//# 18480 "pars.fs" +//# 18517 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6665 "src/Compiler/pars.fsy" +//# 6680 "src/Compiler/pars.fsy" ) -//# 6665 "src/Compiler/pars.fsy" +//# 6680 "src/Compiler/pars.fsy" : 'gentype_opt_declEnd)); -//# 18490 "pars.fs" +//# 18527 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6667 "src/Compiler/pars.fsy" +//# 6682 "src/Compiler/pars.fsy" ) -//# 6667 "src/Compiler/pars.fsy" +//# 6682 "src/Compiler/pars.fsy" : 'gentype_opt_declEnd)); -//# 18500 "pars.fs" +//# 18537 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 6670 "src/Compiler/pars.fsy" +//# 6685 "src/Compiler/pars.fsy" ) -//# 6670 "src/Compiler/pars.fsy" +//# 6685 "src/Compiler/pars.fsy" : 'gentype_opt_ODECLEND)); -//# 18511 "pars.fs" +//# 18548 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6671 "src/Compiler/pars.fsy" +//# 6686 "src/Compiler/pars.fsy" ) -//# 6671 "src/Compiler/pars.fsy" +//# 6686 "src/Compiler/pars.fsy" : 'gentype_opt_ODECLEND)); -//# 18521 "pars.fs" +//# 18558 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6674 "src/Compiler/pars.fsy" +//# 6689 "src/Compiler/pars.fsy" deprecatedWithError (FSComp.SR.parsNoEqualShouldFollowNamespace()) (lhs parseState); () ) -//# 6674 "src/Compiler/pars.fsy" +//# 6689 "src/Compiler/pars.fsy" : 'gentype_deprecated_opt_equals)); -//# 18531 "pars.fs" +//# 18568 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6675 "src/Compiler/pars.fsy" +//# 6690 "src/Compiler/pars.fsy" ) -//# 6675 "src/Compiler/pars.fsy" +//# 6690 "src/Compiler/pars.fsy" : 'gentype_deprecated_opt_equals)); -//# 18541 "pars.fs" +//# 18578 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6679 "src/Compiler/pars.fsy" +//# 6694 "src/Compiler/pars.fsy" let mEquals = rhs parseState 1 Some mEquals ) -//# 6679 "src/Compiler/pars.fsy" +//# 6694 "src/Compiler/pars.fsy" : 'gentype_opt_equals)); -//# 18552 "pars.fs" +//# 18589 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6681 "src/Compiler/pars.fsy" +//# 6696 "src/Compiler/pars.fsy" None ) -//# 6681 "src/Compiler/pars.fsy" +//# 6696 "src/Compiler/pars.fsy" : 'gentype_opt_equals)); -//# 18562 "pars.fs" +//# 18599 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6684 "src/Compiler/pars.fsy" +//# 6699 "src/Compiler/pars.fsy" ) -//# 6684 "src/Compiler/pars.fsy" +//# 6699 "src/Compiler/pars.fsy" : 'gentype_opt_OBLOCKSEP)); -//# 18572 "pars.fs" +//# 18609 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6685 "src/Compiler/pars.fsy" +//# 6700 "src/Compiler/pars.fsy" ) -//# 6685 "src/Compiler/pars.fsy" +//# 6700 "src/Compiler/pars.fsy" : 'gentype_opt_OBLOCKSEP)); -//# 18582 "pars.fs" +//# 18619 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_seps in Microsoft.FSharp.Core.Operators.box ( ( -//# 6688 "src/Compiler/pars.fsy" +//# 6703 "src/Compiler/pars.fsy" ) -//# 6688 "src/Compiler/pars.fsy" +//# 6703 "src/Compiler/pars.fsy" : 'gentype_opt_seps)); -//# 18593 "pars.fs" +//# 18630 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6689 "src/Compiler/pars.fsy" +//# 6704 "src/Compiler/pars.fsy" ) -//# 6689 "src/Compiler/pars.fsy" +//# 6704 "src/Compiler/pars.fsy" : 'gentype_opt_seps)); -//# 18603 "pars.fs" +//# 18640 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6692 "src/Compiler/pars.fsy" +//# 6707 "src/Compiler/pars.fsy" true ) -//# 6692 "src/Compiler/pars.fsy" +//# 6707 "src/Compiler/pars.fsy" : 'gentype_opt_rec)); -//# 18613 "pars.fs" +//# 18650 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6693 "src/Compiler/pars.fsy" +//# 6708 "src/Compiler/pars.fsy" false ) -//# 6693 "src/Compiler/pars.fsy" +//# 6708 "src/Compiler/pars.fsy" : 'gentype_opt_rec)); -//# 18623 "pars.fs" +//# 18660 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6696 "src/Compiler/pars.fsy" +//# 6711 "src/Compiler/pars.fsy" ) -//# 6696 "src/Compiler/pars.fsy" +//# 6711 "src/Compiler/pars.fsy" : 'gentype_opt_bar)); -//# 18633 "pars.fs" +//# 18670 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6697 "src/Compiler/pars.fsy" +//# 6712 "src/Compiler/pars.fsy" ) -//# 6697 "src/Compiler/pars.fsy" +//# 6712 "src/Compiler/pars.fsy" : 'gentype_opt_bar)); -//# 18643 "pars.fs" +//# 18680 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6700 "src/Compiler/pars.fsy" +//# 6715 "src/Compiler/pars.fsy" Some(rhs parseState 1) ) -//# 6700 "src/Compiler/pars.fsy" +//# 6715 "src/Compiler/pars.fsy" : 'gentype_opt_inline)); -//# 18653 "pars.fs" +//# 18690 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6701 "src/Compiler/pars.fsy" +//# 6716 "src/Compiler/pars.fsy" None ) -//# 6701 "src/Compiler/pars.fsy" +//# 6716 "src/Compiler/pars.fsy" : 'gentype_opt_inline)); -//# 18663 "pars.fs" +//# 18700 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6704 "src/Compiler/pars.fsy" - true +//# 6719 "src/Compiler/pars.fsy" + Some(rhs parseState 1) ) -//# 6704 "src/Compiler/pars.fsy" +//# 6719 "src/Compiler/pars.fsy" : 'gentype_opt_mutable)); -//# 18673 "pars.fs" +//# 18710 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6705 "src/Compiler/pars.fsy" - false +//# 6720 "src/Compiler/pars.fsy" + None ) -//# 6705 "src/Compiler/pars.fsy" +//# 6720 "src/Compiler/pars.fsy" : 'gentype_opt_mutable)); -//# 18683 "pars.fs" +//# 18720 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6709 "src/Compiler/pars.fsy" +//# 6724 "src/Compiler/pars.fsy" ) -//# 6709 "src/Compiler/pars.fsy" +//# 6724 "src/Compiler/pars.fsy" : 'gentype_doToken)); -//# 18693 "pars.fs" +//# 18730 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6710 "src/Compiler/pars.fsy" +//# 6725 "src/Compiler/pars.fsy" ) -//# 6710 "src/Compiler/pars.fsy" +//# 6725 "src/Compiler/pars.fsy" : 'gentype_doToken)); -//# 18703 "pars.fs" +//# 18740 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6714 "src/Compiler/pars.fsy" +//# 6729 "src/Compiler/pars.fsy" rhs parseState 1 ) -//# 6714 "src/Compiler/pars.fsy" +//# 6729 "src/Compiler/pars.fsy" : 'gentype_doneDeclEnd)); -//# 18713 "pars.fs" +//# 18750 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 6716 "src/Compiler/pars.fsy" +//# 6731 "src/Compiler/pars.fsy" _1 ) -//# 6716 "src/Compiler/pars.fsy" +//# 6731 "src/Compiler/pars.fsy" : 'gentype_doneDeclEnd)); -//# 18724 "pars.fs" +//# 18761 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6720 "src/Compiler/pars.fsy" +//# 6735 "src/Compiler/pars.fsy" if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then mlCompatError (FSComp.SR.mlCompatStructEndNoLongerSupported()) (lhs parseState) else mlCompatWarning (FSComp.SR.parsSyntaxModuleStructEndDeprecated()) (lhs parseState) ) -//# 6720 "src/Compiler/pars.fsy" +//# 6735 "src/Compiler/pars.fsy" : 'gentype_structOrBegin)); -//# 18738 "pars.fs" +//# 18775 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6725 "src/Compiler/pars.fsy" +//# 6740 "src/Compiler/pars.fsy" ) -//# 6725 "src/Compiler/pars.fsy" +//# 6740 "src/Compiler/pars.fsy" : 'gentype_structOrBegin)); -//# 18748 "pars.fs" +//# 18785 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6729 "src/Compiler/pars.fsy" +//# 6744 "src/Compiler/pars.fsy" if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then mlCompatError (FSComp.SR.mlCompatSigEndNoLongerSupported())(lhs parseState) else mlCompatWarning (FSComp.SR.parsSyntaxModuleSigEndDeprecated()) (lhs parseState) ) -//# 6729 "src/Compiler/pars.fsy" +//# 6744 "src/Compiler/pars.fsy" : 'gentype_sigOrBegin)); -//# 18762 "pars.fs" +//# 18799 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6734 "src/Compiler/pars.fsy" +//# 6749 "src/Compiler/pars.fsy" ) -//# 6734 "src/Compiler/pars.fsy" +//# 6749 "src/Compiler/pars.fsy" : 'gentype_sigOrBegin)); -//# 18772 "pars.fs" +//# 18809 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6738 "src/Compiler/pars.fsy" +//# 6753 "src/Compiler/pars.fsy" if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then mlCompatError (FSComp.SR.mlCompatSigColonNoLongerSupported())(lhs parseState) else @@ -18782,77 +18819,77 @@ let _fsyacc_reductions = lazy [| None ) -//# 6738 "src/Compiler/pars.fsy" +//# 6753 "src/Compiler/pars.fsy" : 'gentype_colonOrEquals)); -//# 18787 "pars.fs" +//# 18824 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6745 "src/Compiler/pars.fsy" +//# 6760 "src/Compiler/pars.fsy" let mEquals = rhs parseState 1 Some mEquals ) -//# 6745 "src/Compiler/pars.fsy" +//# 6760 "src/Compiler/pars.fsy" : 'gentype_colonOrEquals)); -//# 18798 "pars.fs" +//# 18835 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * SynStringKind * ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 6751 "src/Compiler/pars.fsy" +//# 6766 "src/Compiler/pars.fsy" let (s, synStringKind, _) = _1 s, synStringKind ) -//# 6751 "src/Compiler/pars.fsy" +//# 6766 "src/Compiler/pars.fsy" : 'gentype_string)); -//# 18810 "pars.fs" +//# 18847 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6755 "src/Compiler/pars.fsy" +//# 6770 "src/Compiler/pars.fsy" _1 ) -//# 6755 "src/Compiler/pars.fsy" +//# 6770 "src/Compiler/pars.fsy" : 'gentype_sourceIdentifier)); -//# 18821 "pars.fs" +//# 18858 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 6759 "src/Compiler/pars.fsy" +//# 6774 "src/Compiler/pars.fsy" (_1, None) ) -//# 6759 "src/Compiler/pars.fsy" +//# 6774 "src/Compiler/pars.fsy" : 'gentype_interpolatedStringFill)); -//# 18832 "pars.fs" +//# 18869 "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 ( ( -//# 6762 "src/Compiler/pars.fsy" +//# 6777 "src/Compiler/pars.fsy" (_1, Some _3) ) -//# 6762 "src/Compiler/pars.fsy" +//# 6777 "src/Compiler/pars.fsy" : 'gentype_interpolatedStringFill)); -//# 18844 "pars.fs" +//# 18881 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 6766 "src/Compiler/pars.fsy" +//# 6781 "src/Compiler/pars.fsy" [ SynInterpolatedStringPart.String(fst _1, rhs parseState 1) ] ) -//# 6766 "src/Compiler/pars.fsy" +//# 6781 "src/Compiler/pars.fsy" : 'gentype_interpolatedStringParts)); -//# 18855 "pars.fs" +//# 18892 "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 @@ -18860,27 +18897,27 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6769 "src/Compiler/pars.fsy" +//# 6784 "src/Compiler/pars.fsy" SynInterpolatedStringPart.String(fst _1, rhs parseState 1) :: SynInterpolatedStringPart.FillExpr _2 :: _3 ) -//# 6769 "src/Compiler/pars.fsy" +//# 6784 "src/Compiler/pars.fsy" : 'gentype_interpolatedStringParts)); -//# 18868 "pars.fs" +//# 18905 "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 ( ( -//# 6772 "src/Compiler/pars.fsy" +//# 6787 "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 ) -//# 6772 "src/Compiler/pars.fsy" +//# 6787 "src/Compiler/pars.fsy" : 'gentype_interpolatedStringParts)); -//# 18883 "pars.fs" +//# 18920 "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 @@ -18888,371 +18925,371 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6782 "src/Compiler/pars.fsy" +//# 6797 "src/Compiler/pars.fsy" let s, synStringKind, _ = _1 SynInterpolatedStringPart.String(s, rhs parseState 1) :: SynInterpolatedStringPart.FillExpr _2 :: _3, synStringKind ) -//# 6782 "src/Compiler/pars.fsy" +//# 6797 "src/Compiler/pars.fsy" : 'gentype_interpolatedString)); -//# 18897 "pars.fs" +//# 18934 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * SynStringKind * ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 6786 "src/Compiler/pars.fsy" +//# 6801 "src/Compiler/pars.fsy" let s, synStringKind, _ = _1 [ SynInterpolatedStringPart.String(s, rhs parseState 1) ], synStringKind ) -//# 6786 "src/Compiler/pars.fsy" +//# 6801 "src/Compiler/pars.fsy" : 'gentype_interpolatedString)); -//# 18909 "pars.fs" +//# 18946 "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 ( ( -//# 6790 "src/Compiler/pars.fsy" +//# 6805 "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 ) -//# 6790 "src/Compiler/pars.fsy" +//# 6805 "src/Compiler/pars.fsy" : 'gentype_interpolatedString)); -//# 18925 "pars.fs" +//# 18962 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6797 "src/Compiler/pars.fsy" +//# 6812 "src/Compiler/pars.fsy" ) -//# 6797 "src/Compiler/pars.fsy" +//# 6812 "src/Compiler/pars.fsy" : 'gentype_opt_HIGH_PRECEDENCE_APP)); -//# 18935 "pars.fs" +//# 18972 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6798 "src/Compiler/pars.fsy" +//# 6813 "src/Compiler/pars.fsy" ) -//# 6798 "src/Compiler/pars.fsy" +//# 6813 "src/Compiler/pars.fsy" : 'gentype_opt_HIGH_PRECEDENCE_APP)); -//# 18945 "pars.fs" +//# 18982 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6799 "src/Compiler/pars.fsy" +//# 6814 "src/Compiler/pars.fsy" ) -//# 6799 "src/Compiler/pars.fsy" +//# 6814 "src/Compiler/pars.fsy" : 'gentype_opt_HIGH_PRECEDENCE_APP)); -//# 18955 "pars.fs" +//# 18992 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6802 "src/Compiler/pars.fsy" +//# 6817 "src/Compiler/pars.fsy" ) -//# 6802 "src/Compiler/pars.fsy" +//# 6817 "src/Compiler/pars.fsy" : 'gentype_opt_HIGH_PRECEDENCE_TYAPP)); -//# 18965 "pars.fs" +//# 19002 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6803 "src/Compiler/pars.fsy" +//# 6818 "src/Compiler/pars.fsy" ) -//# 6803 "src/Compiler/pars.fsy" +//# 6818 "src/Compiler/pars.fsy" : 'gentype_opt_HIGH_PRECEDENCE_TYAPP)); -//# 18975 "pars.fs" +//# 19012 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typeKeyword in Microsoft.FSharp.Core.Operators.box ( ( -//# 6807 "src/Compiler/pars.fsy" +//# 6822 "src/Compiler/pars.fsy" ) -//# 6807 "src/Compiler/pars.fsy" +//# 6822 "src/Compiler/pars.fsy" : 'gentype_typeKeyword)); -//# 18986 "pars.fs" +//# 19023 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6808 "src/Compiler/pars.fsy" +//# 6823 "src/Compiler/pars.fsy" ) -//# 6808 "src/Compiler/pars.fsy" +//# 6823 "src/Compiler/pars.fsy" : 'gentype_typeKeyword)); -//# 18996 "pars.fs" +//# 19033 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6809 "src/Compiler/pars.fsy" +//# 6824 "src/Compiler/pars.fsy" ) -//# 6809 "src/Compiler/pars.fsy" +//# 6824 "src/Compiler/pars.fsy" : 'gentype_typeKeyword)); -//# 19006 "pars.fs" +//# 19043 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_moduleKeyword in Microsoft.FSharp.Core.Operators.box ( ( -//# 6813 "src/Compiler/pars.fsy" +//# 6828 "src/Compiler/pars.fsy" ) -//# 6813 "src/Compiler/pars.fsy" +//# 6828 "src/Compiler/pars.fsy" : 'gentype_moduleKeyword)); -//# 19017 "pars.fs" +//# 19054 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6814 "src/Compiler/pars.fsy" +//# 6829 "src/Compiler/pars.fsy" ) -//# 6814 "src/Compiler/pars.fsy" +//# 6829 "src/Compiler/pars.fsy" : 'gentype_moduleKeyword)); -//# 19027 "pars.fs" +//# 19064 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6815 "src/Compiler/pars.fsy" +//# 6830 "src/Compiler/pars.fsy" ) -//# 6815 "src/Compiler/pars.fsy" +//# 6830 "src/Compiler/pars.fsy" : 'gentype_moduleKeyword)); -//# 19037 "pars.fs" +//# 19074 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 6818 "src/Compiler/pars.fsy" +//# 6833 "src/Compiler/pars.fsy" ) -//# 6818 "src/Compiler/pars.fsy" +//# 6833 "src/Compiler/pars.fsy" : 'gentype_rbrace)); -//# 19048 "pars.fs" +//# 19085 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6819 "src/Compiler/pars.fsy" +//# 6834 "src/Compiler/pars.fsy" ) -//# 6819 "src/Compiler/pars.fsy" +//# 6834 "src/Compiler/pars.fsy" : 'gentype_rbrace)); -//# 19058 "pars.fs" +//# 19095 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 6820 "src/Compiler/pars.fsy" +//# 6835 "src/Compiler/pars.fsy" ) -//# 6820 "src/Compiler/pars.fsy" +//# 6835 "src/Compiler/pars.fsy" : 'gentype_rbrace)); -//# 19069 "pars.fs" +//# 19106 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6823 "src/Compiler/pars.fsy" +//# 6838 "src/Compiler/pars.fsy" ) -//# 6823 "src/Compiler/pars.fsy" +//# 6838 "src/Compiler/pars.fsy" : 'gentype_bar_rbrace)); -//# 19079 "pars.fs" +//# 19116 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 6826 "src/Compiler/pars.fsy" +//# 6841 "src/Compiler/pars.fsy" ) -//# 6826 "src/Compiler/pars.fsy" +//# 6841 "src/Compiler/pars.fsy" : 'gentype_rparen)); -//# 19090 "pars.fs" +//# 19127 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6827 "src/Compiler/pars.fsy" +//# 6842 "src/Compiler/pars.fsy" ) -//# 6827 "src/Compiler/pars.fsy" +//# 6842 "src/Compiler/pars.fsy" : 'gentype_rparen)); -//# 19100 "pars.fs" +//# 19137 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6828 "src/Compiler/pars.fsy" +//# 6843 "src/Compiler/pars.fsy" ) -//# 6828 "src/Compiler/pars.fsy" +//# 6843 "src/Compiler/pars.fsy" : 'gentype_rparen)); -//# 19110 "pars.fs" +//# 19147 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 6831 "src/Compiler/pars.fsy" +//# 6846 "src/Compiler/pars.fsy" ) -//# 6831 "src/Compiler/pars.fsy" +//# 6846 "src/Compiler/pars.fsy" : 'gentype_oblockend)); -//# 19121 "pars.fs" +//# 19158 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6832 "src/Compiler/pars.fsy" +//# 6847 "src/Compiler/pars.fsy" ) -//# 6832 "src/Compiler/pars.fsy" +//# 6847 "src/Compiler/pars.fsy" : 'gentype_oblockend)); -//# 19131 "pars.fs" +//# 19168 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 6833 "src/Compiler/pars.fsy" +//# 6848 "src/Compiler/pars.fsy" ) -//# 6833 "src/Compiler/pars.fsy" +//# 6848 "src/Compiler/pars.fsy" : 'gentype_oblockend)); -//# 19142 "pars.fs" +//# 19179 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6836 "src/Compiler/pars.fsy" +//# 6851 "src/Compiler/pars.fsy" false ) -//# 6836 "src/Compiler/pars.fsy" +//# 6851 "src/Compiler/pars.fsy" : 'gentype_ends_other_than_rparen_coming_soon_or_recover)); -//# 19152 "pars.fs" +//# 19189 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6837 "src/Compiler/pars.fsy" +//# 6852 "src/Compiler/pars.fsy" false ) -//# 6837 "src/Compiler/pars.fsy" +//# 6852 "src/Compiler/pars.fsy" : 'gentype_ends_other_than_rparen_coming_soon_or_recover)); -//# 19162 "pars.fs" +//# 19199 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6838 "src/Compiler/pars.fsy" +//# 6853 "src/Compiler/pars.fsy" false ) -//# 6838 "src/Compiler/pars.fsy" +//# 6853 "src/Compiler/pars.fsy" : 'gentype_ends_other_than_rparen_coming_soon_or_recover)); -//# 19172 "pars.fs" +//# 19209 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6839 "src/Compiler/pars.fsy" +//# 6854 "src/Compiler/pars.fsy" false ) -//# 6839 "src/Compiler/pars.fsy" +//# 6854 "src/Compiler/pars.fsy" : 'gentype_ends_other_than_rparen_coming_soon_or_recover)); -//# 19182 "pars.fs" +//# 19219 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 6840 "src/Compiler/pars.fsy" +//# 6855 "src/Compiler/pars.fsy" _1 ) -//# 6840 "src/Compiler/pars.fsy" +//# 6855 "src/Compiler/pars.fsy" : 'gentype_ends_other_than_rparen_coming_soon_or_recover)); -//# 19193 "pars.fs" +//# 19230 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6843 "src/Compiler/pars.fsy" +//# 6858 "src/Compiler/pars.fsy" false ) -//# 6843 "src/Compiler/pars.fsy" +//# 6858 "src/Compiler/pars.fsy" : 'gentype_ends_coming_soon_or_recover)); -//# 19203 "pars.fs" +//# 19240 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6844 "src/Compiler/pars.fsy" +//# 6859 "src/Compiler/pars.fsy" false ) -//# 6844 "src/Compiler/pars.fsy" +//# 6859 "src/Compiler/pars.fsy" : 'gentype_ends_coming_soon_or_recover)); -//# 19213 "pars.fs" +//# 19250 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6845 "src/Compiler/pars.fsy" +//# 6860 "src/Compiler/pars.fsy" false ) -//# 6845 "src/Compiler/pars.fsy" +//# 6860 "src/Compiler/pars.fsy" : 'gentype_ends_coming_soon_or_recover)); -//# 19223 "pars.fs" +//# 19260 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6846 "src/Compiler/pars.fsy" +//# 6861 "src/Compiler/pars.fsy" false ) -//# 6846 "src/Compiler/pars.fsy" +//# 6861 "src/Compiler/pars.fsy" : 'gentype_ends_coming_soon_or_recover)); -//# 19233 "pars.fs" +//# 19270 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6847 "src/Compiler/pars.fsy" +//# 6862 "src/Compiler/pars.fsy" false ) -//# 6847 "src/Compiler/pars.fsy" +//# 6862 "src/Compiler/pars.fsy" : 'gentype_ends_coming_soon_or_recover)); -//# 19243 "pars.fs" +//# 19280 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 6848 "src/Compiler/pars.fsy" +//# 6863 "src/Compiler/pars.fsy" _1 ) -//# 6848 "src/Compiler/pars.fsy" +//# 6863 "src/Compiler/pars.fsy" : 'gentype_ends_coming_soon_or_recover)); |] -//# 19255 "pars.fs" +//# 19292 "pars.fs" let tables : Internal.Utilities.Text.Parsing.Tables<_> = { reductions = _fsyacc_reductions.Value; endOfInputTag = _fsyacc_endOfInputTag; diff --git a/src/fcs-fable/fcs-fable.fsproj b/src/fcs-fable/fcs-fable.fsproj index e9260e4063..ec9d66a412 100644 --- a/src/fcs-fable/fcs-fable.fsproj +++ b/src/fcs-fable/fcs-fable.fsproj @@ -43,6 +43,8 @@ + + @@ -91,6 +93,8 @@ + + diff --git a/src/fcs-fable/src/Compiler/AbstractIL/il.fs b/src/fcs-fable/src/Compiler/AbstractIL/il.fs index 9091577216..9528f2c01c 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/il.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/il.fs @@ -3,6 +3,7 @@ module FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.IO +open Internal.Utilities.Library #nowarn "49" #nowarn "343" // The type 'ILAssemblyRef' implements 'System.IComparable' explicitly but provides no corresponding override for 'Object.Equals'. @@ -31,16 +32,14 @@ let _ = if logging then dprintn "* warning: Il.logging is on" -let notlazy v = Lazy<_>.CreateFromValue v - /// A little ugly, but the idea is that if a data structure does not /// contain lazy values then we don't add laziness. So if the thing to map /// is already evaluated then immediately apply the function. -let lazyMap f (x: Lazy<_>) = +let lazyMap f (x: InterruptibleLazy<_>) = if x.IsValueCreated then notlazy (f (x.Force())) else - lazy (f (x.Force())) + InterruptibleLazy(fun _ -> f (x.Force())) [] type PrimaryAssembly = @@ -167,7 +166,7 @@ let splitTypeNameRight nm = // -------------------------------------------------------------------- /// This is used to store event, property and field maps. -type LazyOrderedMultiMap<'Key, 'Data when 'Key: equality>(keyf: 'Data -> 'Key, lazyItems: Lazy<'Data list>) = +type LazyOrderedMultiMap<'Key, 'Data when 'Key: equality>(keyf: 'Data -> 'Key, lazyItems: InterruptibleLazy<'Data list>) = let quickMap = lazyItems @@ -435,8 +434,8 @@ let AssemblyRefUniqueStampGenerator = UniqueStampGenerator() type ILAssemblyRef(data) = let pkToken key = match key with - | Some (PublicKey bytes) -> Some(PublicKey(SHA1.sha1HashBytes bytes)) - | Some (PublicKeyToken token) -> Some(PublicKey token) + | Some(PublicKey bytes) -> Some(PublicKey(SHA1.sha1HashBytes bytes)) + | Some(PublicKeyToken token) -> Some(PublicKey token) | None -> None let uniqueStamp = @@ -654,9 +653,9 @@ type ILCallingConv = | Callconv of ILThisConvention * ILArgConvention - member x.ThisConv = let (Callconv (a, _b)) = x in a + member x.ThisConv = let (Callconv(a, _b)) = x in a - member x.BasicConv = let (Callconv (_a, b)) = x in b + member x.BasicConv = let (Callconv(_a, b)) = x in b member x.IsInstance = match x.ThisConv with @@ -890,8 +889,8 @@ and [ "!" + string n - | ILType.Modified (_, _ty1, ty2) -> ty2.BasicQualifiedName - | ILType.Array (ILArrayShape s, ty) -> ty.BasicQualifiedName + "[" + String(',', s.Length - 1) + "]" + | ILType.Modified(_, _ty1, ty2) -> ty2.BasicQualifiedName + | ILType.Array(ILArrayShape s, ty) -> ty.BasicQualifiedName + "[" + String(',', s.Length - 1) + "]" | ILType.Value tr | ILType.Boxed tr -> tr.BasicQualifiedName | ILType.Void -> "void" @@ -902,8 +901,8 @@ and [ basic - | ILType.Modified (_, _ty1, ty2) -> ty2.AddQualifiedNameExtension basic - | ILType.Array (ILArrayShape (_s), ty) -> ty.AddQualifiedNameExtension basic + | ILType.Modified(_, _ty1, ty2) -> ty2.AddQualifiedNameExtension basic + | ILType.Array(ILArrayShape(_s), ty) -> ty.AddQualifiedNameExtension basic | ILType.Value tr | ILType.Boxed tr -> tr.AddQualifiedNameExtension basic | ILType.Void -> failwith "void" @@ -1195,18 +1194,18 @@ type ILAttribute = member x.Method = match x with - | Encoded (method, _, _) - | Decoded (method, _, _) -> method + | Encoded(method, _, _) + | Decoded(method, _, _) -> method member x.Elements = match x with - | Encoded (_, _, elements) -> elements - | Decoded (_, fixedArgs, namedArgs) -> fixedArgs @ (namedArgs |> List.map (fun (_, _, _, e) -> e)) + | Encoded(_, _, elements) -> elements + | Decoded(_, fixedArgs, namedArgs) -> fixedArgs @ (namedArgs |> List.map (fun (_, _, _, e) -> e)) member x.WithMethod(method: ILMethodSpec) = match x with - | Encoded (_, data, elements) -> Encoded(method, data, elements) - | Decoded (_, fixedArgs, namedArgs) -> Decoded(method, fixedArgs, namedArgs) + | Encoded(_, data, elements) -> Encoded(method, data, elements) + | Decoded(_, fixedArgs, namedArgs) -> Decoded(method, fixedArgs, namedArgs) /// For debugging [] @@ -1809,9 +1808,9 @@ type ILReturn = type ILOverridesSpec = | OverridesSpec of ILMethodRef * ILType - member x.MethodRef = let (OverridesSpec (mr, _ty)) = x in mr + member x.MethodRef = let (OverridesSpec(mr, _ty)) = x in mr - member x.DeclaringType = let (OverridesSpec (_mr, ty)) = x in ty + member x.DeclaringType = let (OverridesSpec(_mr, ty)) = x in ty override x.ToString() = "overrides " + x.DeclaringType.ToString() + "::" + x.MethodRef.ToString() @@ -1826,7 +1825,7 @@ type ILMethodVirtualInfo = [] type MethodBody = - | IL of Lazy + | IL of InterruptibleLazy | PInvoke of Lazy (* platform invoke to native *) | Abstract | Native @@ -1907,7 +1906,7 @@ type ILMethodDef callingConv: ILCallingConv, parameters: ILParameters, ret: ILReturn, - body: Lazy, + body: InterruptibleLazy, isEntryPoint: bool, genericParams: ILGenericParameterDefs, securityDeclsStored: ILSecurityDeclsStored, @@ -1966,7 +1965,7 @@ type ILMethodDef ?callingConv: ILCallingConv, ?parameters: ILParameters, ?ret: ILReturn, - ?body: Lazy, + ?body: InterruptibleLazy, ?securityDecls: ILSecurityDecls, ?isEntryPoint: bool, ?genericParams: ILGenericParameterDefs, @@ -2146,24 +2145,21 @@ type ILMethodDef type MethodDefMap = Map [] -type ILMethodDefs(f: unit -> ILMethodDef[]) = - - let mutable array = InlineDelayInit<_>(f) +type ILMethodDefs(f) = + inherit DelayInitArrayMap(f) - let mutable dict = - InlineDelayInit<_>(fun () -> - let arr = array.Value - let t = Dictionary<_, _>() + override this.CreateDictionary(arr) = + let t = Dictionary(arr.Length) - for i = arr.Length - 1 downto 0 do - let y = arr[i] - let key = y.Name + for i = arr.Length - 1 downto 0 do + let y = arr[i] + let key = y.Name - match t.TryGetValue key with - | true, m -> t[key] <- y :: m - | _ -> t[key] <- [ y ] + match t.TryGetValue key with + | true, m -> t[key] <- y :: m + | _ -> t[key] <- [ y ] - t) + t interface IEnumerable with member x.GetEnumerator() = @@ -2171,14 +2167,13 @@ type ILMethodDefs(f: unit -> ILMethodDef[]) = interface IEnumerable with member x.GetEnumerator() = - (array.Value :> IEnumerable).GetEnumerator() - - member x.AsArray() = array.Value + (x.GetArray() :> IEnumerable).GetEnumerator() - member x.AsList() = array.Value |> Array.toList + member x.AsArray() = x.GetArray() + member x.AsList() = x.GetArray() |> Array.toList member x.FindByName nm = - match dict.Value.TryGetValue nm with + match x.GetDictionary().TryGetValue nm with | true, m -> m | _ -> [] @@ -2476,7 +2471,7 @@ type ILMethodImplDef = // Index table by name and arity. type ILMethodImplDefs = - | ILMethodImpls of Lazy + | ILMethodImpls of InterruptibleLazy member x.AsList() = let (ILMethodImpls ltab) = x in Map.foldBack (fun _x y r -> y @ r) (ltab.Force()) [] @@ -2834,29 +2829,26 @@ type ILTypeDef override x.ToString() = "type " + x.Name and [] ILTypeDefs(f: unit -> ILPreTypeDef[]) = + inherit DelayInitArrayMap(f) - let mutable array = InlineDelayInit<_>(f) - - let mutable dict = - InlineDelayInit<_>(fun () -> - let arr = array.Value - let t = Dictionary<_, _>(HashIdentity.Structural) + override this.CreateDictionary(arr) = + let t = Dictionary(arr.Length, HashIdentity.Structural) - for pre in arr do - let key = pre.Namespace, pre.Name - t[key] <- pre + for pre in arr do + let key = pre.Namespace, pre.Name + t[key] <- pre #if FABLE_COMPILER - t) + t #else - ReadOnlyDictionary t) + ReadOnlyDictionary t #endif - member _.AsArray() = - [| for pre in array.Value -> pre.GetTypeDef() |] + member x.AsArray() = + [| for pre in x.GetArray() -> pre.GetTypeDef() |] - member _.AsList() = - [ for pre in array.Value -> pre.GetTypeDef() ] + member x.AsList() = + [ for pre in x.GetArray() -> pre.GetTypeDef() ] interface IEnumerable with member x.GetEnumerator() = @@ -2864,17 +2856,17 @@ and [] ILTypeDefs(f: unit -> ILPreTypeDef[]) = interface IEnumerable with member x.GetEnumerator() = - (seq { for pre in array.Value -> pre.GetTypeDef() }).GetEnumerator() + (seq { for pre in x.GetArray() -> pre.GetTypeDef() }).GetEnumerator() - member _.AsArrayOfPreTypeDefs() = array.Value + member x.AsArrayOfPreTypeDefs() = x.GetArray() - member _.FindByName nm = + member x.FindByName nm = let ns, n = splitILTypeName nm - dict.Value[ (ns, n) ].GetTypeDef() + x.GetDictionary().[(ns, n)].GetTypeDef() - member _.ExistsByName nm = + member x.ExistsByName nm = let ns, n = splitILTypeName nm - dict.Value.ContainsKey((ns, n)) + x.GetDictionary().ContainsKey((ns, n)) and [] ILPreTypeDef = abstract Namespace: string list @@ -2884,6 +2876,7 @@ 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 interface ILPreTypeDef with member _.Namespace = nameSpace @@ -2892,17 +2885,24 @@ and [] ILPreTypeDefImpl(nameSpace: string list, name: string, metadataIn member x.GetTypeDef() = match box store with | null -> - match storage with - | ILTypeDefStored.Given td -> - store <- td - td -#if FABLE_COMPILER - | ILTypeDefStored.Computed f -> store <- f(); store - | ILTypeDefStored.Reader f -> store <- f metadataIndex; store -#else - | ILTypeDefStored.Computed f -> LazyInitializer.EnsureInitialized(&store, Func<_>(fun () -> f ())) - | ILTypeDefStored.Reader f -> LazyInitializer.EnsureInitialized(&store, Func<_>(fun () -> f metadataIndex)) -#endif + 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 and ILTypeDefStored = @@ -2926,7 +2926,7 @@ type ILNestedExportedType = override x.ToString() = "exported type " + x.Name and ILNestedExportedTypes = - | ILNestedExportedTypes of Lazy> + | ILNestedExportedTypes of InterruptibleLazy> member x.AsList() = let (ILNestedExportedTypes ltab) = x in Map.foldBack (fun _x y r -> y :: r) (ltab.Force()) [] @@ -2950,7 +2950,7 @@ and [] ILExportedTypeOrForwarder = override x.ToString() = "exported type " + x.Name and ILExportedTypesAndForwarders = - | ILExportedTypesAndForwarders of Lazy> + | ILExportedTypesAndForwarders of InterruptibleLazy> member x.AsList() = let (ILExportedTypesAndForwarders ltab) = x in Map.foldBack (fun _x y r -> y :: r) (ltab.Force()) [] @@ -3357,7 +3357,7 @@ let isILArrTy ty = let destILArrTy ty = match ty with - | ILType.Array (shape, ty) -> (shape, ty) + | ILType.Array(shape, ty) -> (shape, ty) | _ -> failwith "destILArrTy" // -------------------------------------------------------------------- @@ -3567,7 +3567,7 @@ let isILValueTy = let rec stripILModifiedFromTy (ty: ILType) = match ty with - | ILType.Modified (_, _, ty) -> stripILModifiedFromTy ty + | ILType.Modified(_, _, ty) -> stripILModifiedFromTy ty | _ -> ty let isBuiltInTySpec (ilg: ILGlobals) (tspec: ILTypeSpec) n = @@ -3675,7 +3675,7 @@ and rescopeILType scoref ty = let cr2 = rescopeILTypeSpec scoref cr1 if cr1 === cr2 then ty else mkILBoxedType cr2 - | ILType.Array (s, ety1) -> + | ILType.Array(s, ety1) -> let ety2 = rescopeILType scoref ety1 if ety1 === ety2 then ty else ILType.Array(s, ety2) @@ -3683,7 +3683,7 @@ and rescopeILType scoref ty = let cr2 = rescopeILTypeSpec scoref cr1 if cr1 === cr2 then ty else ILType.Value cr2 - | ILType.Modified (b, tref, ty) -> ILType.Modified(b, rescopeILTypeRef scoref tref, rescopeILType scoref ty) + | ILType.Modified(b, tref, ty) -> ILType.Modified(b, rescopeILTypeRef scoref tref, rescopeILType scoref ty) | x -> x and rescopeILTypes scoref i = @@ -3720,7 +3720,7 @@ and instILTypeAux numFree (inst: ILGenericArgs) ty = match ty with | ILType.Ptr t -> ILType.Ptr(instILTypeAux numFree inst t) | ILType.FunctionPointer t -> ILType.FunctionPointer(instILCallSigAux numFree inst t) - | ILType.Array (a, t) -> ILType.Array(a, instILTypeAux numFree inst t) + | ILType.Array(a, t) -> ILType.Array(a, instILTypeAux numFree inst t) | ILType.Byref t -> ILType.Byref(instILTypeAux numFree inst t) | ILType.Boxed cr -> mkILBoxedType (instILTypeSpecAux numFree inst cr) | ILType.Value cr -> ILType.Value(instILTypeSpecAux numFree inst cr) @@ -3803,7 +3803,7 @@ let mkILMethodBody (initlocals, locals, maxstack, code, tag, imports) : ILMethod let mkMethodBody (zeroinit, locals, maxstack, code, tag, imports) = let ilCode = mkILMethodBody (zeroinit, locals, maxstack, code, tag, imports) - MethodBody.IL(lazy ilCode) + MethodBody.IL(InterruptibleLazy.FromValue ilCode) // -------------------------------------------------------------------- // Make a constructor @@ -3842,7 +3842,7 @@ let mkILCtor (access, args, impl) = let mkCallBaseConstructor (ty, args: ILType list) = [ mkLdarg0 ] @ List.mapi (fun i _ -> mkLdarg (uint16 (i + 1))) args - @ [ mkNormalCall (mkILCtorMethSpecForTy (ty, [])) ] + @ [ mkNormalCall (mkILCtorMethSpecForTy (ty, [])) ] let mkNormalStfld fspec = I_stfld(Aligned, Nonvolatile, fspec) @@ -4117,7 +4117,7 @@ let mkILExportedTypes l = ILExportedTypesAndForwarders(notlazy (List.foldBack addExportedTypeToTable l Map.empty)) let mkILExportedTypesLazy (l: Lazy<_>) = - ILExportedTypesAndForwarders(lazy (List.foldBack addExportedTypeToTable (l.Force()) Map.empty)) + ILExportedTypesAndForwarders(InterruptibleLazy(fun _ -> List.foldBack addExportedTypeToTable (l.Force()) Map.empty)) let addNestedExportedTypeToTable (y: ILNestedExportedType) tab = Map.add y.Name y tab @@ -4135,7 +4135,7 @@ let mkILNestedExportedTypes l = ILNestedExportedTypes(notlazy (List.foldBack addNestedExportedTypeToTable l Map.empty)) let mkILNestedExportedTypesLazy (l: Lazy<_>) = - ILNestedExportedTypes(lazy (List.foldBack addNestedExportedTypeToTable (l.Force()) Map.empty)) + ILNestedExportedTypes(InterruptibleLazy(fun _ -> List.foldBack addNestedExportedTypeToTable (l.Force()) Map.empty)) let mkILResources l = ILResources l let emptyILResources = ILResources [] @@ -4149,7 +4149,7 @@ let mkILMethodImpls l = ILMethodImpls(notlazy (List.foldBack addMethodImplToTable l Map.empty)) let mkILMethodImplsLazy l = - ILMethodImpls(lazy (List.foldBack addMethodImplToTable (Lazy.force l) Map.empty)) + ILMethodImpls(InterruptibleLazy(fun _ -> List.foldBack addMethodImplToTable (Lazy.force l) Map.empty)) let emptyILMethodImpls = mkILMethodImpls [] @@ -4663,7 +4663,7 @@ let rec encodeCustomAttrElemType x = | ILType.Boxed tspec when tspec.Name = tname_Object -> [| 0x51uy |] | ILType.Boxed tspec when tspec.Name = tname_Type -> [| 0x50uy |] | ILType.Value tspec -> Array.append [| 0x55uy |] (encodeCustomAttrString tspec.TypeRef.QualifiedName) - | ILType.Array (shape, elemType) when shape = ILArrayShape.SingleDimensional -> + | ILType.Array(shape, elemType) when shape = ILArrayShape.SingleDimensional -> Array.append [| et_SZARRAY |] (encodeCustomAttrElemType elemType) | _ -> failwith "encodeCustomAttrElemType: unrecognized custom element type" @@ -4686,7 +4686,7 @@ let rec encodeCustomAttrElemTypeForObject x = | ILAttribElem.Null -> [| et_STRING |] // yes, the 0xe prefix is used when passing a "null" to a property or argument of type "object" here | ILAttribElem.Single _ -> [| et_R4 |] | ILAttribElem.Double _ -> [| et_R8 |] - | ILAttribElem.Array (elemTy, _) -> [| yield et_SZARRAY; yield! encodeCustomAttrElemType elemTy |] + | ILAttribElem.Array(elemTy, _) -> [| yield et_SZARRAY; yield! encodeCustomAttrElemType elemTy |] let tspan = TimeSpan(DateTime.UtcNow.Ticks - DateTime(2000, 1, 1).Ticks) @@ -4800,7 +4800,7 @@ let rec encodeCustomAttrPrimValue c = | ILAttribElem.Type None | ILAttribElem.TypeRef None | ILAttribElem.Null -> [| 0xFFuy |] - | ILAttribElem.String (Some s) -> encodeCustomAttrString s + | ILAttribElem.String(Some s) -> encodeCustomAttrString s | ILAttribElem.Char x -> u16AsBytes (uint16 x) | ILAttribElem.SByte x -> i8AsBytes x | ILAttribElem.Int16 x -> i16AsBytes x @@ -4812,9 +4812,9 @@ let rec encodeCustomAttrPrimValue c = | ILAttribElem.UInt64 x -> u64AsBytes x | ILAttribElem.Single x -> ieee32AsBytes x | ILAttribElem.Double x -> ieee64AsBytes x - | ILAttribElem.Type (Some ty) -> encodeCustomAttrString ty.QualifiedName - | ILAttribElem.TypeRef (Some tref) -> encodeCustomAttrString tref.QualifiedName - | ILAttribElem.Array (_, elems) -> + | ILAttribElem.Type(Some ty) -> encodeCustomAttrString ty.QualifiedName + | ILAttribElem.TypeRef(Some tref) -> encodeCustomAttrString tref.QualifiedName + | ILAttribElem.Array(_, elems) -> [| yield! i32AsBytes elems.Length for elem in elems do @@ -4828,8 +4828,8 @@ and encodeCustomAttrValue ty c = yield! encodeCustomAttrElemTypeForObject c yield! encodeCustomAttrPrimValue c |] - | ILType.Array (shape, _), ILAttribElem.Null when shape = ILArrayShape.SingleDimensional -> [| yield! i32AsBytes 0xFFFFFFFF |] - | ILType.Array (shape, elemType), ILAttribElem.Array (_, elems) when shape = ILArrayShape.SingleDimensional -> + | ILType.Array(shape, _), ILAttribElem.Null when shape = ILArrayShape.SingleDimensional -> [| yield! i32AsBytes 0xFFFFFFFF |] + | ILType.Array(shape, elemType), ILAttribElem.Array(_, elems) when shape = ILArrayShape.SingleDimensional -> [| yield! i32AsBytes elems.Length for elem in elems do @@ -4869,8 +4869,8 @@ let mkILCustomAttribute (tref, argTys, argvs, propvs) = let getCustomAttrData cattr = match cattr with - | ILAttribute.Encoded (_, data, _) -> data - | ILAttribute.Decoded (mspec, fixedArgs, namedArgs) -> encodeCustomAttrArgs mspec fixedArgs namedArgs + | ILAttribute.Encoded(_, data, _) -> data + | ILAttribute.Decoded(mspec, fixedArgs, namedArgs) -> encodeCustomAttrArgs mspec fixedArgs namedArgs // ILSecurityDecl is a 'blob' having the following format: // - A byte containing a period (.). @@ -5101,8 +5101,8 @@ type ILTypeSigParser(tstring: string) = let decodeILAttribData (ca: ILAttribute) = match ca with - | ILAttribute.Decoded (_, fixedArgs, namedArgs) -> fixedArgs, namedArgs - | ILAttribute.Encoded (_, bytes, _) -> + | ILAttribute.Decoded(_, fixedArgs, namedArgs) -> fixedArgs, namedArgs + | ILAttribute.Encoded(_, bytes, _) -> let sigptr = 0 let bb0, sigptr = sigptr_get_byte bytes sigptr @@ -5148,7 +5148,7 @@ let decodeILAttribData (ca: ILAttribute) = ILAttribElem.Char(char (int32 n)), sigptr | ILType.Value tspec when tspec.Name = "System.Boolean" -> let n, sigptr = sigptr_get_byte bytes sigptr - ILAttribElem.Bool(not (n = 0)), sigptr + ILAttribElem.Bool(n <> 0), sigptr | ILType.Boxed tspec when tspec.Name = "System.String" -> let n, sigptr = sigptr_get_serstring_possibly_null bytes sigptr ILAttribElem.String n, sigptr @@ -5171,7 +5171,7 @@ let decodeILAttribData (ca: ILAttribute) = else let ty, sigptr = decodeCustomAttrElemType bytes sigptr et parseVal ty sigptr - | ILType.Array (shape, elemTy) when shape = ILArrayShape.SingleDimensional -> + | ILType.Array(shape, elemTy) when shape = ILArrayShape.SingleDimensional -> let n, sigptr = sigptr_get_i32 bytes sigptr if n = 0xFFFFFFFF then @@ -5295,10 +5295,10 @@ let rec refsOfILType s x = match x with | ILType.Void | ILType.TypeVar _ -> () - | ILType.Modified (_, ty1, ty2) -> + | ILType.Modified(_, ty1, ty2) -> refsOfILTypeRef s ty1 refsOfILType s ty2 - | ILType.Array (_, ty) + | ILType.Array(_, ty) | ILType.Ptr ty | ILType.Byref ty -> refsOfILType s ty | ILType.Value tr @@ -5328,7 +5328,7 @@ and refsOfILFieldRef s x = refsOfILType s x.Type s.refsFs.Add x |> ignore -and refsOfILOverridesSpec s (OverridesSpec (mref, ty)) = +and refsOfILOverridesSpec s (OverridesSpec(mref, ty)) = refsOfILMethodRef s mref refsOfILType s ty @@ -5351,9 +5351,9 @@ and refsOfILToken s x = and refsOfILCustomAttrElem s (elem: ILAttribElem) = match elem with - | Type (Some ty) -> refsOfILType s ty - | TypeRef (Some tref) -> refsOfILTypeRef s tref - | Array (ty, els) -> + | Type(Some ty) -> refsOfILType s ty + | TypeRef(Some tref) -> refsOfILTypeRef s tref + | Array(ty, els) -> refsOfILType s ty refsOfILCustomAttrElems s els | _ -> () @@ -5372,41 +5372,41 @@ and refsOfILVarArgs s tyso = Option.iter (refsOfILTypes s) tyso and refsOfILInstr s x = match x with - | I_call (_, mr, varargs) - | I_newobj (mr, varargs) - | I_callvirt (_, mr, varargs) -> + | I_call(_, mr, varargs) + | I_newobj(mr, varargs) + | I_callvirt(_, mr, varargs) -> refsOfILMethodSpec s mr refsOfILVarArgs s varargs - | I_callconstraint (_, _, tr, mr, varargs) -> + | I_callconstraint(_, _, tr, mr, varargs) -> refsOfILType s tr refsOfILMethodSpec s mr refsOfILVarArgs s varargs - | I_calli (_, callsig, varargs) -> + | I_calli(_, callsig, varargs) -> refsOfILCallsig s callsig refsOfILVarArgs s varargs | I_jmp mr | I_ldftn mr | I_ldvirtftn mr -> refsOfILMethodSpec s mr - | I_ldsfld (_, fr) - | I_ldfld (_, _, fr) + | I_ldsfld(_, fr) + | I_ldfld(_, _, fr) | I_ldsflda fr | I_ldflda fr - | I_stsfld (_, fr) - | I_stfld (_, _, fr) -> refsOfILFieldSpec s fr + | I_stsfld(_, fr) + | I_stfld(_, _, fr) -> refsOfILFieldSpec s fr | I_isinst ty | I_castclass ty | I_cpobj ty | I_initobj ty - | I_ldobj (_, _, ty) - | I_stobj (_, _, ty) + | I_ldobj(_, _, ty) + | I_stobj(_, _, ty) | I_box ty | I_unbox ty | I_unbox_any ty | I_sizeof ty - | I_ldelem_any (_, ty) - | I_ldelema (_, _, _, ty) - | I_stelem_any (_, ty) - | I_newarr (_, ty) + | I_ldelem_any(_, ty) + | I_ldelema(_, _, _, ty) + | I_stelem_any(_, ty) + | I_newarr(_, ty) | I_mkrefany ty | I_refanyval ty | EI_ilzero ty -> refsOfILType s ty @@ -5482,7 +5482,7 @@ and refsOfILCode s (c: ILCode) = for exnClause in c.Exceptions do match exnClause.Clause with - | ILExceptionClause.TypeCatch (ilTy, _) -> refsOfILType s ilTy + | ILExceptionClause.TypeCatch(ilTy, _) -> refsOfILType s ilTy | _ -> () and refsOfILMethodBody s (il: ILMethodBody) = @@ -5565,7 +5565,7 @@ and refsOfILExportedTypes s (tab: ILExportedTypesAndForwarders) = and refsOfILResourceLocation s x = match x with | ILResourceLocation.Local _ -> () - | ILResourceLocation.File (mref, _) -> refsOfILModuleRef s mref + | ILResourceLocation.File(mref, _) -> refsOfILModuleRef s mref | ILResourceLocation.Assembly aref -> refsOfILAssemblyRef s aref and refsOfILResource s x = @@ -5629,9 +5629,9 @@ and unscopeILType ty = | ILType.FunctionPointer t -> ILType.FunctionPointer(unscopeILCallSig t) | ILType.Byref t -> ILType.Byref(unscopeILType t) | ILType.Boxed cr -> mkILBoxedType (unscopeILTypeSpec cr) - | ILType.Array (s, ty) -> ILType.Array(s, unscopeILType ty) + | ILType.Array(s, ty) -> ILType.Array(s, unscopeILType ty) | ILType.Value cr -> ILType.Value(unscopeILTypeSpec cr) - | ILType.Modified (b, tref, ty) -> ILType.Modified(b, unscopeILTypeRef tref, unscopeILType ty) + | ILType.Modified(b, tref, ty) -> ILType.Modified(b, unscopeILTypeRef tref, unscopeILType ty) | x -> x and unscopeILTypes i = diff --git a/src/fcs-fable/src/Compiler/AbstractIL/il.fsi b/src/fcs-fable/src/Compiler/AbstractIL/il.fsi index 76774ef471..660b08a4a5 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/il.fsi +++ b/src/fcs-fable/src/Compiler/AbstractIL/il.fsi @@ -7,6 +7,7 @@ module rec FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.IO open System.Collections.Generic open System.Reflection +open Internal.Utilities.Library /// Represents the target primary assembly [] @@ -40,6 +41,7 @@ type ILPlatform = type ILSourceDocument = static member Create: language: ILGuid option * vendor: ILGuid option * documentType: ILGuid option * file: string -> ILSourceDocument + member Language: ILGuid option member Vendor: ILGuid option member DocumentType: ILGuid option @@ -49,6 +51,7 @@ type ILSourceDocument = type internal ILDebugPoint = static member Create: document: ILSourceDocument * line: int * column: int * endLine: int * endColumn: int -> ILDebugPoint + member Document: ILSourceDocument member Line: int member Column: int @@ -985,7 +988,7 @@ type internal ILOverridesSpec = [] type MethodBody = - | IL of Lazy + | IL of InterruptibleLazy | PInvoke of Lazy | Abstract | Native @@ -1034,7 +1037,7 @@ type ILMethodDef = callingConv: ILCallingConv * parameters: ILParameters * ret: ILReturn * - body: Lazy * + body: InterruptibleLazy * isEntryPoint: bool * genericParams: ILGenericParameterDefs * securityDeclsStored: ILSecurityDeclsStored * @@ -1050,7 +1053,7 @@ type ILMethodDef = callingConv: ILCallingConv * parameters: ILParameters * ret: ILReturn * - body: Lazy * + body: InterruptibleLazy * isEntryPoint: bool * genericParams: ILGenericParameterDefs * securityDecls: ILSecurityDecls * @@ -1141,7 +1144,7 @@ type ILMethodDef = ?callingConv: ILCallingConv * ?parameters: ILParameters * ?ret: ILReturn * - ?body: Lazy * + ?body: InterruptibleLazy * ?securityDecls: ILSecurityDecls * ?isEntryPoint: bool * ?genericParams: ILGenericParameterDefs * @@ -1181,8 +1184,9 @@ type ILMethodDef = /// Tables of methods. Logically equivalent to a list of methods but /// the table is kept in a form optimized for looking up methods by /// name and arity. -[] +[] type ILMethodDefs = + inherit DelayInitArrayMap interface IEnumerable @@ -1460,8 +1464,10 @@ type ILTypeDefKind = | Delegate /// Tables of named type definitions. -[] +[] type ILTypeDefs = + inherit DelayInitArrayMap + interface IEnumerable member internal AsArray: unit -> ILTypeDef[] @@ -1990,6 +1996,7 @@ val internal mkILNonGenericStaticMethSpecInTy: ILType * string * ILType list * I /// Construct references to constructors. val internal mkILCtorMethSpecForTy: ILType * ILType list -> ILMethodSpec +val internal mkILNonGenericCtorMethSpec: ILTypeRef * ILType list -> ILMethodSpec /// Construct references to fields. val internal mkILFieldRef: ILTypeRef * string * ILType -> ILFieldRef @@ -2077,11 +2084,11 @@ val internal mkILMethodBody: val internal mkMethodBody: bool * ILLocals * int * ILCode * ILDebugPoint option * ILDebugImports option -> MethodBody -val internal methBodyNotAvailable: Lazy +val internal methBodyNotAvailable: InterruptibleLazy -val internal methBodyAbstract: Lazy +val internal methBodyAbstract: InterruptibleLazy -val internal methBodyNative: Lazy +val internal methBodyNative: InterruptibleLazy val internal mkILCtor: ILMemberAccess * ILParameter list * MethodBody -> ILMethodDef @@ -2219,11 +2226,11 @@ val storeILSecurityDecls: ILSecurityDecls -> ILSecurityDeclsStored val internal mkILSecurityDeclsReader: (int32 -> ILSecurityDecl[]) -> ILSecurityDeclsStored val mkILEvents: ILEventDef list -> ILEventDefs -val mkILEventsLazy: Lazy -> ILEventDefs +val mkILEventsLazy: InterruptibleLazy -> ILEventDefs val emptyILEvents: ILEventDefs val mkILProperties: ILPropertyDef list -> ILPropertyDefs -val mkILPropertiesLazy: Lazy -> ILPropertyDefs +val mkILPropertiesLazy: InterruptibleLazy -> ILPropertyDefs val emptyILProperties: ILPropertyDefs val mkILMethods: ILMethodDef list -> ILMethodDefs @@ -2232,7 +2239,7 @@ val mkILMethodsComputed: (unit -> ILMethodDef[]) -> ILMethodDefs val emptyILMethods: ILMethodDefs val mkILFields: ILFieldDef list -> ILFieldDefs -val mkILFieldsLazy: Lazy -> ILFieldDefs +val mkILFieldsLazy: InterruptibleLazy -> ILFieldDefs val emptyILFields: ILFieldDefs val mkILMethodImpls: ILMethodImplDef list -> ILMethodImplDefs diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilbinary.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilbinary.fs index f07c714bb3..7dfdda08b8 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilbinary.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilbinary.fs @@ -689,7 +689,7 @@ let noArgInstrs = let isNoArgInstr i = match i with - | AI_ldc (DT_I4, ILConst.I4 n) when -1 <= n && n <= 8 -> true + | AI_ldc(DT_I4, ILConst.I4 n) when -1 <= n && n <= 8 -> true | I_stloc n | I_ldloc n | I_ldarg n when n <= 3us -> true diff --git a/src/fcs-fable/src/Compiler/AbstractIL/illex.fsl b/src/fcs-fable/src/Compiler/AbstractIL/illex.fsl index 36429f0362..74c20658b1 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/illex.fsl +++ b/src/fcs-fable/src/Compiler/AbstractIL/illex.fsl @@ -73,16 +73,16 @@ let kwdInstrTable = (let t = HashMultiMap(1000, HashIdentity.Structural) List.iter t.Add (Lazy.force keywords); let addTable f l = List.iter (fun (x,i) -> t.Add (String.concat "." x,f i)) (Lazy.force l) - addTable (fun i -> INSTR_NONE i) NoArgInstrs; - addTable (fun i -> INSTR_I i) Int32Instrs; - addTable (fun i -> INSTR_I32_I32 i) Int32Int32Instrs; - addTable (fun i -> INSTR_I8 i) Int64Instrs; - addTable (fun i -> INSTR_R i) DoubleInstrs; - addTable (fun i -> INSTR_TYPE i) TypeInstrs; - addTable (fun i -> INSTR_INT_TYPE i) IntTypeInstrs; - addTable (fun i -> INSTR_VALUETYPE i) ValueTypeInstrs; - addTable (fun i -> INSTR_STRING i) StringInstrs; - addTable (fun i -> INSTR_TOK i) TokenInstrs; + addTable (INSTR_NONE) NoArgInstrs; + addTable (INSTR_I) Int32Instrs; + addTable (INSTR_I32_I32) Int32Int32Instrs; + addTable (INSTR_I8) Int64Instrs; + addTable (INSTR_R) DoubleInstrs; + addTable (INSTR_TYPE) TypeInstrs; + addTable (INSTR_INT_TYPE) IntTypeInstrs; + addTable (INSTR_VALUETYPE) ValueTypeInstrs; + addTable (INSTR_STRING) StringInstrs; + addTable (INSTR_TOK) TokenInstrs; t) let kwdOrInstr s = (Lazy.force kwdInstrTable).[s] (* words *) diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fs index 5f8ceb6fc4..b430579107 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fs @@ -57,7 +57,7 @@ let code_instr2instr_ty2ty (finstr, fTy) (code: ILCode) = for exnSpec in codeR.Exceptions do let clause = match exnSpec.Clause with - | ILExceptionClause.TypeCatch (ilTy, b) -> ILExceptionClause.TypeCatch(fTy ilTy, b) + | ILExceptionClause.TypeCatch(ilTy, b) -> ILExceptionClause.TypeCatch(fTy ilTy, b) | cl -> cl { exnSpec with Clause = clause } @@ -81,9 +81,9 @@ let rec morphILTypeRefsInILType f x = | ILType.Byref t -> ILType.Byref(morphILTypeRefsInILType f t) | ILType.Boxed cr -> mkILBoxedType (tspec_tref2tref f cr) | ILType.Value ir -> ILType.Value(tspec_tref2tref f ir) - | ILType.Array (s, ty) -> ILType.Array(s, morphILTypeRefsInILType f ty) + | ILType.Array(s, ty) -> ILType.Array(s, morphILTypeRefsInILType f ty) | ILType.TypeVar v -> ILType.TypeVar v - | ILType.Modified (req, tref, ty) -> ILType.Modified(req, f tref, morphILTypeRefsInILType f ty) + | ILType.Modified(req, tref, ty) -> ILType.Modified(req, f tref, morphILTypeRefsInILType f ty) | ILType.Void -> ILType.Void and tspec_tref2tref f (tspec: ILTypeSpec) = @@ -96,7 +96,7 @@ let rec ty_scoref2scoref_tyvar2ty ((_fscope, fTyvar) as fs) ty = | ILType.Byref elemTy -> ILType.Byref(ty_scoref2scoref_tyvar2ty fs elemTy) | ILType.Boxed tspec -> mkILBoxedType (tspec_scoref2scoref_tyvar2ty fs tspec) | ILType.Value tspec -> ILType.Value(tspec_scoref2scoref_tyvar2ty fs tspec) - | ILType.Array (shape, elemTy) -> ILType.Array(shape, ty_scoref2scoref_tyvar2ty fs elemTy) + | ILType.Array(shape, elemTy) -> ILType.Array(shape, ty_scoref2scoref_tyvar2ty fs elemTy) | ILType.TypeVar idx -> fTyvar idx | x -> x @@ -163,9 +163,9 @@ let fspec_ty2ty ((factualTy, fformalTy: formal_scopeCtxt -> ILType -> ILType)) f let rec celem_ty2ty f celem = match celem with - | ILAttribElem.Type (Some ty) -> ILAttribElem.Type(Some(f ty)) - | ILAttribElem.TypeRef (Some tref) -> ILAttribElem.TypeRef(Some (f (mkILBoxedType (mkILNonGenericTySpec tref))).TypeRef) - | ILAttribElem.Array (elemTy, elems) -> ILAttribElem.Array(f elemTy, List.map (celem_ty2ty f) elems) + | ILAttribElem.Type(Some ty) -> ILAttribElem.Type(Some(f ty)) + | ILAttribElem.TypeRef(Some tref) -> ILAttribElem.TypeRef(Some (f (mkILBoxedType (mkILNonGenericTySpec tref))).TypeRef) + | ILAttribElem.Array(elemTy, elems) -> ILAttribElem.Array(f elemTy, List.map (celem_ty2ty f) elems) | _ -> celem let cnamedarg_ty2ty f ((nm, ty, isProp, elem): ILAttributeNamedArg) = (nm, f ty, isProp, celem_ty2ty f elem) @@ -204,33 +204,33 @@ let morphILTypesInILInstr ((factualTy, fformalTy)) i = mspec_ty2ty (factualTy, fformalTy (Some i)) mr match i with - | I_calli (a, mref, varargs) -> I_calli(a, callsig_ty2ty factualTy mref, morphILVarArgs factualTy varargs) - | I_call (a, mr, varargs) -> I_call(a, conv_mspec mr, morphILVarArgs factualTy varargs) - | I_callvirt (a, mr, varargs) -> I_callvirt(a, conv_mspec mr, morphILVarArgs factualTy varargs) - | I_callconstraint (callvirt, a, ty, mr, varargs) -> + | I_calli(a, mref, varargs) -> I_calli(a, callsig_ty2ty factualTy mref, morphILVarArgs factualTy varargs) + | I_call(a, mr, varargs) -> I_call(a, conv_mspec mr, morphILVarArgs factualTy varargs) + | I_callvirt(a, mr, varargs) -> I_callvirt(a, conv_mspec mr, morphILVarArgs factualTy varargs) + | I_callconstraint(callvirt, a, ty, mr, varargs) -> I_callconstraint(callvirt, a, factualTy ty, conv_mspec mr, morphILVarArgs factualTy varargs) - | I_newobj (mr, varargs) -> I_newobj(conv_mspec mr, morphILVarArgs factualTy varargs) + | I_newobj(mr, varargs) -> I_newobj(conv_mspec mr, morphILVarArgs factualTy varargs) | I_ldftn mr -> I_ldftn(conv_mspec mr) | I_ldvirtftn mr -> I_ldvirtftn(conv_mspec mr) - | I_ldfld (a, b, fr) -> I_ldfld(a, b, conv_fspec fr) - | I_ldsfld (a, fr) -> I_ldsfld(a, conv_fspec fr) + | I_ldfld(a, b, fr) -> I_ldfld(a, b, conv_fspec fr) + | I_ldsfld(a, fr) -> I_ldsfld(a, conv_fspec fr) | I_ldsflda fr -> I_ldsflda(conv_fspec fr) | I_ldflda fr -> I_ldflda(conv_fspec fr) - | I_stfld (a, b, fr) -> I_stfld(a, b, conv_fspec fr) - | I_stsfld (a, fr) -> I_stsfld(a, conv_fspec fr) + | I_stfld(a, b, fr) -> I_stfld(a, b, conv_fspec fr) + | I_stsfld(a, fr) -> I_stsfld(a, conv_fspec fr) | I_castclass ty -> I_castclass(factualTy ty) | I_isinst ty -> I_isinst(factualTy ty) | I_initobj ty -> I_initobj(factualTy ty) | I_cpobj ty -> I_cpobj(factualTy ty) - | I_stobj (al, vol, ty) -> I_stobj(al, vol, factualTy ty) - | I_ldobj (al, vol, ty) -> I_ldobj(al, vol, factualTy ty) + | I_stobj(al, vol, ty) -> I_stobj(al, vol, factualTy ty) + | I_ldobj(al, vol, ty) -> I_ldobj(al, vol, factualTy ty) | I_box ty -> I_box(factualTy ty) | I_unbox ty -> I_unbox(factualTy ty) | I_unbox_any ty -> I_unbox_any(factualTy ty) - | I_ldelem_any (shape, ty) -> I_ldelem_any(shape, factualTy ty) - | I_stelem_any (shape, ty) -> I_stelem_any(shape, factualTy ty) - | I_newarr (shape, ty) -> I_newarr(shape, factualTy ty) - | I_ldelema (ro, isNativePtr, shape, ty) -> I_ldelema(ro, isNativePtr, shape, factualTy ty) + | I_ldelem_any(shape, ty) -> I_ldelem_any(shape, factualTy ty) + | I_stelem_any(shape, ty) -> I_stelem_any(shape, factualTy ty) + | I_newarr(shape, ty) -> I_newarr(shape, factualTy ty) + | I_ldelema(ro, isNativePtr, shape, ty) -> I_ldelema(ro, isNativePtr, shape, factualTy ty) | I_sizeof ty -> I_sizeof(factualTy ty) | I_ldtoken tok -> match tok with @@ -305,10 +305,10 @@ let morphILMethodBody fMethBody (x: MethodBody) = match x with | MethodBody.IL il -> let ilCode = fMethBody il.Value // Eager - MethodBody.IL(lazy ilCode) + MethodBody.IL(InterruptibleLazy.FromValue ilCode) | x -> x -let ospec_ty2ty f (OverridesSpec (mref, ty)) = OverridesSpec(mref_ty2ty f mref, f ty) +let ospec_ty2ty f (OverridesSpec(mref, ty)) = OverridesSpec(mref_ty2ty f mref, f ty) let mdef_ty2ty_ilmbody2ilmbody fs (md: ILMethodDef) = let fTyInCtxt, fMethBody = fs diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilnativeres.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilnativeres.fs index b37ae327c4..0d0b6a1c98 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilnativeres.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilnativeres.fs @@ -54,7 +54,7 @@ type CvtResFile() = let mutable resourceNames = List() // The stream might be empty, so let's check - if not (reader.PeekChar() = -1) then + if reader.PeekChar() <> -1 then let mutable startPos = stream.Position let mutable initial32Bits = reader.ReadUInt32() @@ -437,7 +437,7 @@ type VersionHelper() = if not (Char.IsDigit elements[i].[idx]) then invalidFormat <- true - VersionHelper.TryGetValue((elements[ i ].Substring(0, idx)), ref values[i]) + VersionHelper.TryGetValue((elements[i].Substring(0, idx)), ref values[i]) |> ignore breakLoop <- true @@ -697,7 +697,8 @@ type VersionResourceSerializer() = Array.zeroCreate ( VersionResourceSerializer.KEYBYTES VersionResourceSerializer.vsVersionInfoKey - VersionResourceSerializer.vsVersionInfoKey.Length * 2 - ): byte[] + ) + : byte[] ) Debug.Assert(writer.BaseStream.Position &&& 3L = 0L) @@ -720,7 +721,8 @@ type VersionResourceSerializer() = Array.zeroCreate ( VersionResourceSerializer.KEYBYTES VersionResourceSerializer.varFileInfoKey - VersionResourceSerializer.varFileInfoKey.Length * 2 - ): byte[] + ) + : byte[] ) Debug.Assert(writer.BaseStream.Position &&& 3L = 0L) @@ -741,7 +743,8 @@ type VersionResourceSerializer() = Array.zeroCreate ( VersionResourceSerializer.KEYBYTES VersionResourceSerializer.translationKey - VersionResourceSerializer.translationKey.Length * 2 - ): byte[] + ) + : byte[] ) Debug.Assert(writer.BaseStream.Position &&& 3L = 0L) @@ -766,7 +769,8 @@ type VersionResourceSerializer() = Array.zeroCreate ( VersionResourceSerializer.KEYBYTES VersionResourceSerializer.stringFileInfoKey - VersionResourceSerializer.stringFileInfoKey.Length * 2 - ): byte[] + ) + : byte[] ) Debug.Assert(writer.BaseStream.Position &&& 3L = 0L) @@ -787,7 +791,8 @@ type VersionResourceSerializer() = Array.zeroCreate ( VersionResourceSerializer.KEYBYTES this._langIdAndCodePageKey - this._langIdAndCodePageKey.Length * 2 - ): byte[] + ) + : byte[] ) Debug.Assert(writer.BaseStream.Position &&& 3L = 0L) @@ -1019,7 +1024,7 @@ type NativeResourceWriter() = String.Compare(xString, yString, StringComparison.OrdinalIgnoreCase) static member SortResources(resources: IEnumerable) = - resources.OrderBy((fun d -> d), Comparer<_>.Create (Comparison<_> NativeResourceWriter.CompareResources)) + resources.OrderBy((fun d -> d), Comparer<_>.Create(Comparison<_> NativeResourceWriter.CompareResources)) :> IEnumerable static member SerializeWin32Resources(builder: BlobBuilder, theResources: IEnumerable, resourcesRva: int) = diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilnativeres.fsi b/src/fcs-fable/src/Compiler/AbstractIL/ilnativeres.fsi index d695d225b5..c4968006f7 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilnativeres.fsi +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilnativeres.fsi @@ -32,6 +32,7 @@ type Win32Resource = new: data: byte[] * codePage: DWORD * languageId: DWORD * id: int * name: string * typeId: int * typeName: string -> Win32Resource + member CodePage: DWORD member Data: byte[] member Id: int @@ -47,6 +48,7 @@ type CvtResFile = [] type Win32ResourceConversions = static member AppendIconToResourceStream: resStream: Stream * iconStream: Stream -> unit + static member AppendVersionToResourceStream: resStream: Stream * isDll: Boolean * @@ -62,12 +64,14 @@ type Win32ResourceConversions = ?comments: string * ?companyName: string -> unit + static member AppendManifestToResourceStream: resStream: Stream * manifestStream: Stream * isDll: Boolean -> unit // Write native resources [] type NativeResourceWriter = static member SortResources: resources: IEnumerable -> IEnumerable + static member SerializeWin32Resources: builder: BlobBuilder * theResources: IEnumerable * resourcesRva: int -> unit (* diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilprint.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilprint.fs index 5ecdd91986..9d278dbe31 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilprint.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilprint.fs @@ -253,7 +253,7 @@ and goutput_typ env os ty = output_string os " " goutput_gactuals env os tspec.GenericArgs | ILType.Void -> output_string os "void" - | ILType.Array (bounds, ty) -> + | ILType.Array(bounds, ty) -> goutput_typ env os ty output_string os "[" output_arr_bounds os bounds @@ -272,7 +272,7 @@ and output_tyvar os d = and goutput_typ_with_shortened_class_syntax env os = function - | ILType.Boxed tspec when tspec.GenericArgs = [] -> goutput_tref env os tspec.TypeRef + | ILType.Boxed tspec when List.isEmpty tspec.GenericArgs -> goutput_tref env os tspec.TypeRef | typ2 -> goutput_typ env os typ2 and goutput_gactuals env os inst = @@ -334,7 +334,7 @@ and goutput_permission _env os p = | ILSecurityAction.DemandChoice -> "demandchoice") match p with - | ILSecurityDecl (sa, b) -> + | ILSecurityDecl(sa, b) -> output_string os " .permissionset " output_security_action os sa output_string os " = (" @@ -366,7 +366,7 @@ and output_bcc os bcc = | ILArgConvention.Default -> " " | ILArgConvention.VarArg -> "vararg ") -and output_callconv os (Callconv (hasthis, cc)) = +and output_callconv os (Callconv(hasthis, cc)) = output_string os (match hasthis with @@ -562,13 +562,13 @@ let goutput_fdef _tref env os (fd: ILFieldDef) = let rec goutput_apps env os = function - | Apps_tyapp (actual, cs) -> + | Apps_tyapp(actual, cs) -> output_angled (goutput_gactual env) os actual output_string os " " output_angled (goutput_gparam env) os (mkILSimpleTypar "T") output_string os " " goutput_apps env os cs - | Apps_app (ty, cs) -> + | Apps_app(ty, cs) -> output_parens (goutput_typ env) os ty output_string os " " goutput_apps env os cs @@ -856,11 +856,11 @@ and output_init_semantics os f = and goutput_lambdas env os lambdas = match lambdas with - | Lambdas_forall (gf, l) -> + | Lambdas_forall(gf, l) -> output_angled (goutput_gparam env) os gf output_string os " " (goutput_lambdas env) os l - | Lambdas_lambda (ps, l) -> + | Lambdas_lambda(ps, l) -> output_parens (goutput_param env) os ps output_string os " " (goutput_lambdas env) os l @@ -905,7 +905,7 @@ let goutput_resource env os r = match r.Location with | ILResourceLocation.Local _ -> output_string os " /* loc nyi */ " - | ILResourceLocation.File (mref, off) -> + | ILResourceLocation.File(mref, off) -> output_string os " .file " output_sqstring os mref.Name output_string os " at " diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilread.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilread.fs index 893556851d..854f6e0be9 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilread.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilread.fs @@ -50,14 +50,13 @@ let stronglyHeldReaderCacheSize = stronglyHeldReaderCacheSizeDefault #else //!FABLE_COMPILER let noStableFileHeuristic = try - (Environment.GetEnvironmentVariable("FSharp_NoStableFileHeuristic") <> null) + not (isNull (Environment.GetEnvironmentVariable "FSharp_NoStableFileHeuristic")) with _ -> false let alwaysMemoryMapFSC = try - (Environment.GetEnvironmentVariable("FSharp_AlwaysMemoryMapCommandLineCompiler") - <> null) + not (isNull (Environment.GetEnvironmentVariable "FSharp_AlwaysMemoryMapCommandLineCompiler")) with _ -> false @@ -265,7 +264,7 @@ type WeakByteFile(fileName: string, chunk: (int * int) option) = match chunk with | None -> stream.ReadAllBytes() - | Some (start, length) -> stream.ReadBytes(start, length) + | Some(start, length) -> stream.ReadBytes(start, length) tg <- bytes @@ -658,9 +657,9 @@ let instrs () = | Some ty -> I_callconstraint(true, tl, ty, mspec, y) | None -> I_callvirt(tl, mspec, y)) )) - i_leave_s, I_unconditional_i8_instr(noPrefixes (fun x -> I_leave x)) + i_leave_s, I_unconditional_i8_instr(noPrefixes I_leave) i_br_s, I_unconditional_i8_instr(noPrefixes I_br) - i_leave, I_unconditional_i32_instr(noPrefixes (fun x -> I_leave x)) + i_leave, I_unconditional_i32_instr(noPrefixes I_leave) i_br, I_unconditional_i32_instr(noPrefixes I_br) i_brtrue_s, I_conditional_i8_instr(noPrefixes (fun x -> I_brcmp(BI_brtrue, x))) i_brfalse_s, I_conditional_i8_instr(noPrefixes (fun x -> I_brcmp(BI_brfalse, x))) @@ -868,37 +867,37 @@ let kindIllegal = RowKind [] // kind of element in that column. //--------------------------------------------------------------------- -let hcCompare (TaggedIndex (t1: HasConstantTag, idx1: int)) (TaggedIndex (t2: HasConstantTag, idx2)) = +let hcCompare (TaggedIndex(t1: HasConstantTag, idx1: int)) (TaggedIndex(t2: HasConstantTag, idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag -let hsCompare (TaggedIndex (t1: HasSemanticsTag, idx1: int)) (TaggedIndex (t2: HasSemanticsTag, idx2)) = +let hsCompare (TaggedIndex(t1: HasSemanticsTag, idx1: int)) (TaggedIndex(t2: HasSemanticsTag, idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag -let hcaCompare (TaggedIndex (t1: HasCustomAttributeTag, idx1: int)) (TaggedIndex (t2: HasCustomAttributeTag, idx2)) = +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 mfCompare (TaggedIndex (t1: MemberForwardedTag, idx1: int)) (TaggedIndex (t2: MemberForwardedTag, idx2)) = +let mfCompare (TaggedIndex(t1: MemberForwardedTag, idx1: int)) (TaggedIndex(t2: MemberForwardedTag, idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag -let hdsCompare (TaggedIndex (t1: HasDeclSecurityTag, idx1: int)) (TaggedIndex (t2: HasDeclSecurityTag, idx2)) = +let hdsCompare (TaggedIndex(t1: HasDeclSecurityTag, idx1: int)) (TaggedIndex(t2: HasDeclSecurityTag, idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag -let hfmCompare (TaggedIndex (t1: HasFieldMarshalTag, idx1)) (TaggedIndex (t2: HasFieldMarshalTag, idx2)) = +let hfmCompare (TaggedIndex(t1: HasFieldMarshalTag, idx1)) (TaggedIndex(t2: HasFieldMarshalTag, idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag -let tomdCompare (TaggedIndex (t1: TypeOrMethodDefTag, idx1)) (TaggedIndex (t2: TypeOrMethodDefTag, idx2)) = +let tomdCompare (TaggedIndex(t1: TypeOrMethodDefTag, idx1)) (TaggedIndex(t2: TypeOrMethodDefTag, idx2)) = if idx1 < idx2 then -1 elif idx1 > idx2 then 1 else compare t1.Tag t2.Tag @@ -1148,7 +1147,7 @@ type ILMetadataReader = mdfile: BinaryFile pectxtCaptured: PEReader option // only set when reading full PE including code etc. for static linking entryPointToken: TableName * int - dataEndPoints: Lazy + dataEndPoints: InterruptibleLazy fileName: string getNumRows: TableName -> int userStringsStreamPhysicalLoc: int32 @@ -1226,9 +1225,12 @@ type CustomAttributeRow = val mutable typeIndex: TaggedIndex val mutable valueIndex: int -let seekReadIndexedRowsByInterface numRows binaryChop (reader: ISeekReadIndexedRowReader) = +let seekReadIndexedRowsRange numRows binaryChop (reader: ISeekReadIndexedRowReader) = let mutable row = ref Unchecked.defaultof + let mutable startRid = -1 + let mutable endRid = -1 + if binaryChop then let mutable low = 0 let mutable high = numRows + 1 @@ -1247,12 +1249,13 @@ let seekReadIndexedRowsByInterface numRows binaryChop (reader: ISeekReadIndexedR elif c < 0 then high <- mid else fin <- true - let res = ImmutableArray.CreateBuilder() - if high - low > 1 then // now read off rows, forward and backwards let mid = (low + high) / 2 + startRid <- mid + endRid <- mid + // read backwards let mutable fin = false let mutable curr = mid - 1 @@ -1264,17 +1267,15 @@ let seekReadIndexedRowsByInterface numRows binaryChop (reader: ISeekReadIndexedR reader.GetRow(curr, row) if reader.CompareKey(reader.GetKey(row)) = 0 then - res.Add(reader.ConvertRow(row)) + startRid <- curr else fin <- true curr <- curr - 1 - res.Reverse() - // read forward let mutable fin = false - let mutable curr = mid + let mutable curr = mid + 1 while not fin do if curr > numRows then @@ -1283,23 +1284,49 @@ let seekReadIndexedRowsByInterface numRows binaryChop (reader: ISeekReadIndexedR reader.GetRow(curr, row) if reader.CompareKey(reader.GetKey(row)) = 0 then - res.Add(reader.ConvertRow(row)) + endRid <- curr else fin <- true curr <- curr + 1 - res.ToArray() else - let res = ImmutableArray.CreateBuilder() + let mutable rid = 1 + + while rid <= numRows && startRid = -1 do + reader.GetRow(rid, row) + + if reader.CompareKey(reader.GetKey(row)) = 0 then + startRid <- rid + endRid <- rid + + rid <- rid + 1 - for i = 1 to numRows do - reader.GetRow(i, row) + let mutable fin = false + + while rid <= numRows && not fin do + reader.GetRow(rid, row) if reader.CompareKey(reader.GetKey(row)) = 0 then - res.Add(reader.ConvertRow(row)) + endRid <- rid + else + fin <- true + + rid <- rid + 1 - res.ToArray() + startRid, endRid + +let seekReadIndexedRowsByInterface numRows binaryChop (reader: ISeekReadIndexedRowReader) = + let startRid, endRid = seekReadIndexedRowsRange numRows binaryChop reader + + if startRid <= 0 || endRid < startRid then + [||] + else + + Array.init (endRid - startRid + 1) (fun i -> + let mutable row = ref Unchecked.defaultof + reader.GetRow(startRid + i, row) + reader.ConvertRow(row)) let inline rowAddr (ctxt: ILMetadataReader) (tn: TableName) (idx: int) = ref (ctxt.rowAddr tn idx) @@ -1792,7 +1819,7 @@ let readNativeResources (pectxt: PEReader) = ] let getDataEndPointsDelayed (pectxt: PEReader) ctxtH = - lazy + InterruptibleLazy(fun _ -> let (ctxt: ILMetadataReader) = getHole ctxtH let mdv = ctxt.mdfile.GetView() @@ -1802,7 +1829,7 @@ let getDataEndPointsDelayed (pectxt: PEReader) ctxtH = let rva, _fidx = seekReadFieldRVARow ctxt mdv i ("field", rva) for i = 1 to ctxt.getNumRows TableNames.ManifestResource do - let offset, _, _, TaggedIndex (_tag, idx) = seekReadManifestResourceRow ctxt mdv i + let offset, _, _, TaggedIndex(_tag, idx) = seekReadManifestResourceRow ctxt mdv i if idx = 0 then let rva = pectxt.resourcesAddr + offset @@ -1832,34 +1859,34 @@ let getDataEndPointsDelayed (pectxt: PEReader) ctxtH = @ [ for virtAddr, _virtSize, _physLoc in pectxt.sectionHeaders do yield ("section start", virtAddr) - ] - @ [ ("md", pectxt.metadataAddr) ] - @ (if pectxt.nativeResourcesAddr = 0x0 then - [] - else - [ ("native resources", pectxt.nativeResourcesAddr) ]) - @ (if pectxt.resourcesAddr = 0x0 then - [] - else - [ ("managed resources", pectxt.resourcesAddr) ]) - @ (if pectxt.strongnameAddr = 0x0 then - [] - else - [ ("managed strongname", pectxt.strongnameAddr) ]) - @ (if pectxt.vtableFixupsAddr = 0x0 then - [] - else - [ ("managed vtable_fixups", pectxt.vtableFixupsAddr) ]) - @ methodRVAs))) + ] + @ [ ("md", pectxt.metadataAddr) ] + @ (if pectxt.nativeResourcesAddr = 0x0 then + [] + else + [ ("native resources", pectxt.nativeResourcesAddr) ]) + @ (if pectxt.resourcesAddr = 0x0 then + [] + else + [ ("managed resources", pectxt.resourcesAddr) ]) + @ (if pectxt.strongnameAddr = 0x0 then + [] + else + [ ("managed strongname", pectxt.strongnameAddr) ]) + @ (if pectxt.vtableFixupsAddr = 0x0 then + [] + else + [ ("managed vtable_fixups", pectxt.vtableFixupsAddr) ]) + @ methodRVAs))) |> List.distinct - |> List.sort + |> List.sort) let rvaToData (ctxt: ILMetadataReader) (pectxt: PEReader) nm rva = if rva = 0x0 then failwith "rva is zero" let start = pectxt.anyV2P (nm, rva) - let endPoints = (Lazy.force ctxt.dataEndPoints) + let endPoints = ctxt.dataEndPoints.Value let rec look l = match l with @@ -1945,7 +1972,12 @@ and seekReadAssemblyManifest (ctxt: ILMetadataReader) pectxt idx = Name = name AuxModuleHashAlgorithm = hash SecurityDeclsStored = ctxt.securityDeclsReader_Assembly - PublicKey = pubkey + PublicKey = + // The runtime and C# treat a 0 length publicKey as an unsigned assembly, so if a public record exists with a length of 0 + // treat it as unsigned + match pubkey with + | Some pkBytes when pkBytes.Length > 0 -> pubkey + | _ -> None Version = Some(ILVersionInfo(v1, v2, v3, v4)) Locale = readStringHeapOption ctxt localeIdx CustomAttrsStored = ctxt.customAttrsReader_Assembly @@ -2036,7 +2068,7 @@ and seekReadClassLayout (ctxt: ILMetadataReader) mdv idx = match res with | None -> { Size = None; Pack = None } - | Some (pack, size) -> { Size = Some size; Pack = Some pack } + | Some(pack, size) -> { Size = Some size; Pack = Some pack } and typeAccessOfFlags flags = let f = (flags &&& 0x00000007) @@ -2195,7 +2227,7 @@ and seekReadInterfaceImpls (ctxt: ILMetadataReader) mdv numTypars tidx = and seekReadGenericParams ctxt numTypars (a, b) : ILGenericParameterDefs = ctxt.seekReadGenericParams (GenericParamsIdx(numTypars, a, b)) -and seekReadGenericParamsUncached ctxtH (GenericParamsIdx (numTypars, a, b)) = +and seekReadGenericParamsUncached ctxtH (GenericParamsIdx(numTypars, a, b)) = let (ctxt: ILMetadataReader) = getHole ctxtH let mdv = ctxt.mdfile.GetView() @@ -2246,7 +2278,7 @@ and seekReadGenericParamConstraints (ctxt: ILMetadataReader) mdv numTypars gpidx and seekReadTypeDefAsType (ctxt: ILMetadataReader) boxity (ginst: ILTypes) idx = ctxt.seekReadTypeDefAsType (TypeDefAsTypIdx(boxity, ginst, idx)) -and seekReadTypeDefAsTypeUncached ctxtH (TypeDefAsTypIdx (boxity, ginst, idx)) = +and seekReadTypeDefAsTypeUncached ctxtH (TypeDefAsTypIdx(boxity, ginst, idx)) = let ctxt = getHole ctxtH mkILTy boxity (ILTypeSpec.Create(seekReadTypeDefAsTypeRef ctxt idx, ginst)) @@ -2285,11 +2317,11 @@ and seekReadTypeRefUncached ctxtH idx = and seekReadTypeRefAsType (ctxt: ILMetadataReader) boxity ginst idx = ctxt.seekReadTypeRefAsType (TypeRefAsTypIdx(boxity, ginst, idx)) -and seekReadTypeRefAsTypeUncached ctxtH (TypeRefAsTypIdx (boxity, ginst, idx)) = +and seekReadTypeRefAsTypeUncached ctxtH (TypeRefAsTypIdx(boxity, ginst, idx)) = let ctxt = getHole ctxtH mkILTy boxity (ILTypeSpec.Create(seekReadTypeRef ctxt idx, ginst)) -and seekReadTypeDefOrRef (ctxt: ILMetadataReader) numTypars boxity (ginst: ILTypes) (TaggedIndex (tag, idx)) = +and seekReadTypeDefOrRef (ctxt: ILMetadataReader) numTypars boxity (ginst: ILTypes) (TaggedIndex(tag, idx)) = let mdv = ctxt.mdfile.GetView() match tag with @@ -2302,7 +2334,7 @@ and seekReadTypeDefOrRef (ctxt: ILMetadataReader) numTypars boxity (ginst: ILTyp readBlobHeapAsType ctxt numTypars (seekReadTypeSpecRow ctxt mdv idx) | _ -> failwith "seekReadTypeDefOrRef ctxt" -and seekReadTypeDefOrRefAsTypeRef (ctxt: ILMetadataReader) (TaggedIndex (tag, idx)) = +and seekReadTypeDefOrRefAsTypeRef (ctxt: ILMetadataReader) (TaggedIndex(tag, idx)) = match tag with | tag when tag = tdor_TypeDef -> seekReadTypeDefAsTypeRef ctxt idx | tag when tag = tdor_TypeRef -> seekReadTypeRef ctxt idx @@ -2311,13 +2343,13 @@ and seekReadTypeDefOrRefAsTypeRef (ctxt: ILMetadataReader) (TaggedIndex (tag, id PrimaryAssemblyILGlobals.typ_Object.TypeRef | _ -> failwith "seekReadTypeDefOrRefAsTypeRef_readTypeDefOrRefOrSpec" -and seekReadMethodRefParent (ctxt: ILMetadataReader) mdv numTypars (TaggedIndex (tag, idx)) = +and seekReadMethodRefParent (ctxt: ILMetadataReader) mdv numTypars (TaggedIndex(tag, idx)) = match tag with | tag when tag = mrp_TypeRef -> seekReadTypeRefAsType ctxt AsObject (* not ok - no way to tell if a member ref parent is a value type or not *) List.empty idx | tag when tag = mrp_ModuleRef -> mkILTypeForGlobalFunctions (ILScopeRef.Module(seekReadModuleRef ctxt mdv idx)) | tag when tag = mrp_MethodDef -> - let (MethodData (enclTy, cc, nm, argTys, retTy, methInst)) = + let (MethodData(enclTy, cc, nm, argTys, retTy, methInst)) = seekReadMethodDefAsMethodData ctxt idx let mspec = mkILMethSpecInTy (enclTy, cc, nm, argTys, retTy, methInst) @@ -2325,10 +2357,10 @@ and seekReadMethodRefParent (ctxt: ILMetadataReader) mdv numTypars (TaggedIndex | tag when tag = mrp_TypeSpec -> readBlobHeapAsType ctxt numTypars (seekReadTypeSpecRow ctxt mdv idx) | _ -> failwith "seekReadMethodRefParent" -and seekReadMethodDefOrRef (ctxt: ILMetadataReader) numTypars (TaggedIndex (tag, idx)) = +and seekReadMethodDefOrRef (ctxt: ILMetadataReader) numTypars (TaggedIndex(tag, idx)) = match tag with | tag when tag = mdor_MethodDef -> - let (MethodData (enclTy, cc, nm, argTys, retTy, methInst)) = + let (MethodData(enclTy, cc, nm, argTys, retTy, methInst)) = seekReadMethodDefAsMethodData ctxt idx VarArgMethodData(enclTy, cc, nm, argTys, None, retTy, methInst) @@ -2336,7 +2368,7 @@ and seekReadMethodDefOrRef (ctxt: ILMetadataReader) numTypars (TaggedIndex (tag, | _ -> failwith "seekReadMethodDefOrRef" and seekReadMethodDefOrRefNoVarargs (ctxt: ILMetadataReader) numTypars x = - let (VarArgMethodData (enclTy, cc, nm, argTys, varargs, retTy, methInst)) = + let (VarArgMethodData(enclTy, cc, nm, argTys, varargs, retTy, methInst)) = seekReadMethodDefOrRef ctxt numTypars x if varargs <> None then @@ -2344,21 +2376,21 @@ and seekReadMethodDefOrRefNoVarargs (ctxt: ILMetadataReader) numTypars x = MethodData(enclTy, cc, nm, argTys, retTy, methInst) -and seekReadCustomAttrType (ctxt: ILMetadataReader) (TaggedIndex (tag, idx)) = +and seekReadCustomAttrType (ctxt: ILMetadataReader) (TaggedIndex(tag, idx)) = match tag with | tag when tag = cat_MethodDef -> - let (MethodData (enclTy, cc, nm, argTys, retTy, methInst)) = + let (MethodData(enclTy, cc, nm, argTys, retTy, methInst)) = seekReadMethodDefAsMethodData ctxt idx mkILMethSpecInTy (enclTy, cc, nm, argTys, retTy, methInst) | tag when tag = cat_MemberRef -> - let (MethodData (enclTy, cc, nm, argTys, retTy, methInst)) = + let (MethodData(enclTy, cc, nm, argTys, retTy, methInst)) = seekReadMemberRefAsMethDataNoVarArgs ctxt 0 idx mkILMethSpecInTy (enclTy, cc, nm, argTys, retTy, methInst) | _ -> failwith "seekReadCustomAttrType ctxt" -and seekReadImplAsScopeRef (ctxt: ILMetadataReader) mdv (TaggedIndex (tag, idx)) = +and seekReadImplAsScopeRef (ctxt: ILMetadataReader) mdv (TaggedIndex(tag, idx)) = if idx = 0 then ILScopeRef.Local else @@ -2368,7 +2400,7 @@ and seekReadImplAsScopeRef (ctxt: ILMetadataReader) mdv (TaggedIndex (tag, idx)) | tag when tag = i_ExportedType -> failwith "seekReadImplAsScopeRef" | _ -> failwith "seekReadImplAsScopeRef" -and seekReadTypeRefScope (ctxt: ILMetadataReader) mdv (TaggedIndex (tag, idx)) = +and seekReadTypeRefScope (ctxt: ILMetadataReader) mdv (TaggedIndex(tag, idx)) = match tag with | tag when tag = rs_Module -> ILScopeRef.Local, [] | tag when tag = rs_ModuleRef -> ILScopeRef.Module(seekReadModuleRef ctxt mdv idx), [] @@ -2450,14 +2482,14 @@ and seekReadField ctxt mdv (numTypars, hasLayout) (idx: int) = and seekReadFields (ctxt: ILMetadataReader) (numTypars, hasLayout) fidx1 fidx2 = mkILFieldsLazy ( - lazy + InterruptibleLazy(fun _ -> let mdv = ctxt.mdfile.GetView() [ if fidx1 > 0 then for i = fidx1 to fidx2 - 1 do yield seekReadField ctxt mdv (numTypars, hasLayout) i - ] + ]) ) and seekReadMethods (ctxt: ILMetadataReader) numTypars midx1 midx2 = @@ -2633,7 +2665,7 @@ and sigptrGetLocal (ctxt: ILMetadataReader) numTypars bytes sigptr = and readBlobHeapAsMethodSig (ctxt: ILMetadataReader) numTypars blobIdx = ctxt.readBlobHeapAsMethodSig (BlobAsMethodSigIdx(numTypars, blobIdx)) -and readBlobHeapAsMethodSigUncached ctxtH (BlobAsMethodSigIdx (numTypars, blobIdx)) = +and readBlobHeapAsMethodSigUncached ctxtH (BlobAsMethodSigIdx(numTypars, blobIdx)) = let (ctxt: ILMetadataReader) = getHole ctxtH let bytes = readBlobHeap ctxt blobIdx let sigptr = 0 @@ -2662,7 +2694,7 @@ and readBlobHeapAsType ctxt numTypars blobIdx = and readBlobHeapAsFieldSig ctxt numTypars blobIdx = ctxt.readBlobHeapAsFieldSig (BlobAsFieldSigIdx(numTypars, blobIdx)) -and readBlobHeapAsFieldSigUncached ctxtH (BlobAsFieldSigIdx (numTypars, blobIdx)) = +and readBlobHeapAsFieldSigUncached ctxtH (BlobAsFieldSigIdx(numTypars, blobIdx)) = let ctxt = getHole ctxtH let bytes = readBlobHeap ctxt blobIdx let sigptr = 0 @@ -2677,7 +2709,7 @@ and readBlobHeapAsFieldSigUncached ctxtH (BlobAsFieldSigIdx (numTypars, blobIdx) and readBlobHeapAsPropertySig (ctxt: ILMetadataReader) numTypars blobIdx = ctxt.readBlobHeapAsPropertySig (BlobAsPropSigIdx(numTypars, blobIdx)) -and readBlobHeapAsPropertySigUncached ctxtH (BlobAsPropSigIdx (numTypars, blobIdx)) = +and readBlobHeapAsPropertySigUncached ctxtH (BlobAsPropSigIdx(numTypars, blobIdx)) = let ctxt = getHole ctxtH let bytes = readBlobHeap ctxt blobIdx let sigptr = 0 @@ -2696,7 +2728,7 @@ and readBlobHeapAsPropertySigUncached ctxtH (BlobAsPropSigIdx (numTypars, blobId and readBlobHeapAsLocalsSig (ctxt: ILMetadataReader) numTypars blobIdx = ctxt.readBlobHeapAsLocalsSig (BlobAsLocalSigIdx(numTypars, blobIdx)) -and readBlobHeapAsLocalsSigUncached ctxtH (BlobAsLocalSigIdx (numTypars, blobIdx)) = +and readBlobHeapAsLocalsSigUncached ctxtH (BlobAsLocalSigIdx(numTypars, blobIdx)) = let ctxt = getHole ctxtH let bytes = readBlobHeap ctxt blobIdx let sigptr = 0 @@ -2745,7 +2777,7 @@ and byteAsCallConv b = and seekReadMemberRefAsMethodData ctxt numTypars idx : VarArgMethodData = ctxt.seekReadMemberRefAsMethodData (MemberRefAsMspecIdx(numTypars, idx)) -and seekReadMemberRefAsMethodDataUncached ctxtH (MemberRefAsMspecIdx (numTypars, idx)) = +and seekReadMemberRefAsMethodDataUncached ctxtH (MemberRefAsMspecIdx(numTypars, idx)) = let (ctxt: ILMetadataReader) = getHole ctxtH let mdv = ctxt.mdfile.GetView() let mrpIdx, nameIdx, typeIdx = seekReadMemberRefRow ctxt mdv idx @@ -2759,7 +2791,7 @@ and seekReadMemberRefAsMethodDataUncached ctxtH (MemberRefAsMspecIdx (numTypars, (VarArgMethodData(enclTy, cc, nm, argTys, varargs, retTy, methInst)) and seekReadMemberRefAsMethDataNoVarArgs ctxt numTypars idx : MethodData = - let (VarArgMethodData (enclTy, cc, nm, argTys, varargs, retTy, methInst)) = + let (VarArgMethodData(enclTy, cc, nm, argTys, varargs, retTy, methInst)) = seekReadMemberRefAsMethodData ctxt numTypars idx if Option.isSome varargs then @@ -2770,12 +2802,12 @@ and seekReadMemberRefAsMethDataNoVarArgs ctxt numTypars idx : MethodData = and seekReadMethodSpecAsMethodData (ctxt: ILMetadataReader) numTypars idx = ctxt.seekReadMethodSpecAsMethodData (MethodSpecAsMspecIdx(numTypars, idx)) -and seekReadMethodSpecAsMethodDataUncached ctxtH (MethodSpecAsMspecIdx (numTypars, idx)) = +and seekReadMethodSpecAsMethodDataUncached ctxtH (MethodSpecAsMspecIdx(numTypars, idx)) = let (ctxt: ILMetadataReader) = getHole ctxtH let mdv = ctxt.mdfile.GetView() let mdorIdx, instIdx = seekReadMethodSpecRow ctxt mdv idx - let (VarArgMethodData (enclTy, cc, nm, argTys, varargs, retTy, _)) = + let (VarArgMethodData(enclTy, cc, nm, argTys, varargs, retTy, _)) = seekReadMethodDefOrRef ctxt numTypars mdorIdx let methInst = @@ -2799,7 +2831,7 @@ and seekReadMethodSpecAsMethodDataUncached ctxtH (MethodSpecAsMspecIdx (numTypar and seekReadMemberRefAsFieldSpec (ctxt: ILMetadataReader) numTypars idx = ctxt.seekReadMemberRefAsFieldSpec (MemberRefAsFspecIdx(numTypars, idx)) -and seekReadMemberRefAsFieldSpecUncached ctxtH (MemberRefAsFspecIdx (numTypars, idx)) = +and seekReadMemberRefAsFieldSpecUncached ctxtH (MemberRefAsFspecIdx(numTypars, idx)) = let (ctxt: ILMetadataReader) = getHole ctxtH let mdv = ctxt.mdfile.GetView() let mrpIdx, nameIdx, typeIdx = seekReadMemberRefRow ctxt mdv idx @@ -2824,7 +2856,7 @@ and seekReadMethodDefAsMethodDataUncached ctxtH idx = seekReadIndexedRow ( ctxt.getNumRows TableNames.TypeDef, (fun i -> i, seekReadTypeDefRowWithExtents ctxt i), - (fun r -> r), + id, (fun (_, ((_, _, _, _, _, methodsIdx), (_, endMethodsIdx))) -> if endMethodsIdx <= idx then 1 elif methodsIdx <= idx && idx < endMethodsIdx then 0 @@ -2872,7 +2904,7 @@ and seekReadFieldDefAsFieldSpecUncached ctxtH idx = seekReadIndexedRow ( ctxt.getNumRows TableNames.TypeDef, (fun i -> i, seekReadTypeDefRowWithExtents ctxt i), - (fun r -> r), + id, (fun (_, ((_, _, _, _, fieldsIdx, _), (endFieldsIdx, _))) -> if endFieldsIdx <= idx then 1 elif fieldsIdx <= idx && idx < endFieldsIdx then 0 @@ -3030,12 +3062,12 @@ and seekReadMethodImpls (ctxt: ILMetadataReader) numTypars tidx = |> List.map (fun (b, c) -> { OverrideBy = - let (MethodData (enclTy, cc, nm, argTys, retTy, methInst)) = + let (MethodData(enclTy, cc, nm, argTys, retTy, methInst)) = seekReadMethodDefOrRefNoVarargs ctxt numTypars b mkILMethSpecInTy (enclTy, cc, nm, argTys, retTy, methInst) Overrides = - let (MethodData (enclTy, cc, nm, argTys, retTy, methInst)) = + let (MethodData(enclTy, cc, nm, argTys, retTy, methInst)) = seekReadMethodDefOrRefNoVarargs ctxt numTypars c let mspec = mkILMethSpecInTy (enclTy, cc, nm, argTys, retTy, methInst) @@ -3051,7 +3083,7 @@ and seekReadMultipleMethodSemantics (ctxt: ILMetadataReader) (flags, id) = hsCompare id, isSorted ctxt TableNames.MethodSemantics, (fun (a, b, _c) -> - let (MethodData (enclTy, cc, nm, argTys, retTy, methInst)) = + let (MethodData(enclTy, cc, nm, argTys, retTy, methInst)) = seekReadMethodDefAsMethodData ctxt b a, (mkILMethSpecInTy (enclTy, cc, nm, argTys, retTy, methInst)).MethodRef) @@ -3090,7 +3122,7 @@ and seekReadEvent ctxt mdv numTypars idx = (* REVIEW: can substantially reduce numbers of EventMap and PropertyMap reads by first checking if the whole table mdv sorted according to ILTypeDef tokens and then doing a binary chop *) and seekReadEvents (ctxt: ILMetadataReader) numTypars tidx = mkILEventsLazy ( - lazy + InterruptibleLazy(fun _ -> let mdv = ctxt.mdfile.GetView() match @@ -3104,7 +3136,7 @@ and seekReadEvents (ctxt: ILMetadataReader) numTypars tidx = ) with | None -> [] - | Some (rowNum, beginEventIdx) -> + | Some(rowNum, beginEventIdx) -> let endEventIdx = if rowNum >= ctxt.getNumRows TableNames.EventMap then ctxt.getNumRows TableNames.Event + 1 @@ -3116,7 +3148,7 @@ and seekReadEvents (ctxt: ILMetadataReader) numTypars tidx = if beginEventIdx > 0 then for i in beginEventIdx .. endEventIdx - 1 do yield seekReadEvent ctxt mdv numTypars i - ] + ]) ) and seekReadProperty ctxt mdv numTypars idx = @@ -3157,7 +3189,7 @@ and seekReadProperty ctxt mdv numTypars idx = and seekReadProperties (ctxt: ILMetadataReader) numTypars tidx = mkILPropertiesLazy ( - lazy + InterruptibleLazy(fun _ -> let mdv = ctxt.mdfile.GetView() match @@ -3171,7 +3203,7 @@ and seekReadProperties (ctxt: ILMetadataReader) numTypars tidx = ) with | None -> [] - | Some (rowNum, beginPropIdx) -> + | Some(rowNum, beginPropIdx) -> let endPropIdx = if rowNum >= ctxt.getNumRows TableNames.PropertyMap then ctxt.getNumRows TableNames.Property + 1 @@ -3183,7 +3215,7 @@ and seekReadProperties (ctxt: ILMetadataReader) numTypars tidx = if beginPropIdx > 0 then for i in beginPropIdx .. endPropIdx - 1 do yield seekReadProperty ctxt mdv numTypars i - ] + ]) ) and customAttrsReader ctxtH tag : ILAttributesStored = @@ -3206,10 +3238,10 @@ and customAttrsReader ctxtH tag : ILAttributesStored = seekReadIndexedRowsByInterface (ctxt.getNumRows TableNames.CustomAttribute) (isSorted ctxt TableNames.CustomAttribute) reader) -and seekReadCustomAttr ctxt (TaggedIndex (cat, idx), b) = +and seekReadCustomAttr ctxt (TaggedIndex(cat, idx), b) = ctxt.seekReadCustomAttr (CustomAttrIdx(cat, idx, b)) -and seekReadCustomAttrUncached ctxtH (CustomAttrIdx (cat, idx, valIdx)) = +and seekReadCustomAttrUncached ctxtH (CustomAttrIdx(cat, idx, valIdx)) = let ctxt = getHole ctxtH let method = seekReadCustomAttrType ctxt (TaggedIndex(cat, idx)) @@ -3277,7 +3309,7 @@ and seekReadConstant (ctxt: ILMetadataReader) idx = | _ -> ILFieldInit.Null and seekReadImplMap (ctxt: ILMetadataReader) nm midx = - lazy + InterruptibleLazy(fun _ -> MethodBody.PInvoke( lazy let mdv = ctxt.mdfile.GetView() @@ -3365,7 +3397,7 @@ and seekReadImplMap (ctxt: ILMetadataReader) nm midx = | Some nm2 -> nm2) Where = seekReadModuleRef ctxt mdv scopeIdx } - ) + )) and seekReadTopCode (ctxt: ILMetadataReader) pev mdv numTypars (sz: int) start = let labelsOfRawOffsets = Dictionary<_, _>(sz / 2) @@ -3531,7 +3563,7 @@ and seekReadTopCode (ctxt: ILMetadataReader) pev mdv numTypars (sz: int) start = let tab, idx = seekReadUncodedToken pev (start + curr) curr <- curr + 4 - let (VarArgMethodData (enclTy, cc, nm, argTys, varargs, retTy, methInst)) = + let (VarArgMethodData(enclTy, cc, nm, argTys, varargs, retTy, methInst)) = if tab = TableNames.Method then seekReadMethodDefOrRef ctxt numTypars (TaggedIndex(mdor_MethodDef, idx)) elif tab = TableNames.MemberRef then @@ -3542,7 +3574,7 @@ and seekReadTopCode (ctxt: ILMetadataReader) pev mdv numTypars (sz: int) start = failwith "bad table in MethodDefOrRefOrSpec" match enclTy with - | ILType.Array (shape, ty) -> + | ILType.Array(shape, ty) -> match nm with | "Get" -> I_ldelem_any(shape, ty) | "Set" -> I_stelem_any(shape, ty) @@ -3606,7 +3638,7 @@ and seekReadTopCode (ctxt: ILMetadataReader) pev mdv numTypars (sz: int) start = tab = TableNames.Method || tab = TableNames.MemberRef (* REVIEW: generics or tab = TableNames.MethodSpec *) then - let (MethodData (enclTy, cc, nm, argTys, retTy, methInst)) = + let (MethodData(enclTy, cc, nm, argTys, retTy, methInst)) = seekReadMethodDefOrRefNoVarargs ctxt numTypars (uncodedTokenToMethodDefOrRef (tab, idx)) ILToken.ILMethod(mkILMethSpecInTy (enclTy, cc, nm, argTys, retTy, methInst)) @@ -3659,7 +3691,7 @@ and seekReadTopCode (ctxt: ILMetadataReader) pev mdv numTypars (sz: int) start = instrs, rawToLabel, lab2pc and seekReadMethodRVA (pectxt: PEReader) (ctxt: ILMetadataReader) (nm, noinline, aggressiveinline, numTypars) rva = - lazy + InterruptibleLazy(fun _ -> let pev = pectxt.pefile.GetView() let baseRVA = pectxt.anyV2P ("method rva", rva) // ": reading body of method "+nm+" at rva "+string rva+", phys "+string baseRVA @@ -3676,7 +3708,7 @@ and seekReadMethodRVA (pectxt: PEReader) (ctxt: ILMetadataReader) (nm, noinline, else MethodBody.IL( - lazy + InterruptibleLazy(fun _ -> let pev = pectxt.pefile.GetView() let mdv = ctxt.mdfile.GetView() @@ -3829,7 +3861,7 @@ and seekReadMethodRVA (pectxt: PEReader) (ctxt: ILMetadataReader) (nm, noinline, | _ -> sehMap[key] <- [ clause ] ([], sehMap) - ||> Seq.fold (fun acc (KeyValue (key, bs)) -> + ||> Seq.fold (fun acc (KeyValue(key, bs)) -> [ for b in bs -> { Range = key; Clause = b }: ILExceptionSpec ] @ acc) seh <- sehClauses @@ -3850,8 +3882,8 @@ and seekReadMethodRVA (pectxt: PEReader) (ctxt: ILMetadataReader) (nm, noinline, Code = code DebugRange = None DebugImports = None - } - ) + }) + )) and int32AsILVariantType (ctxt: ILMetadataReader) (n: int32) = if List.memAssoc n (Lazy.force ILVariantTypeRevMap) then @@ -4034,7 +4066,7 @@ and seekReadTopExportedTypes (ctxt: ILMetadataReader) = (let nested = [| for _i in 1..numRows -> [] |] for i = 1 to numRows do - let flags, _, _, _, TaggedIndex (tag, idx) = exported[i - 1] + let flags, _, _, _, TaggedIndex(tag, idx) = exported[i - 1] if not (isTopTypeDef flags) && (tag = i_ExportedType) then nested[idx - 1] <- i :: nested[idx - 1] @@ -4045,7 +4077,7 @@ and seekReadTopExportedTypes (ctxt: ILMetadataReader) = [ for i = 1 to numRows do let flags, _tok, nameIdx, namespaceIdx, implIdx = exported[i - 1] - let (TaggedIndex (tag, _idx)) = implIdx + let (TaggedIndex(tag, _idx)) = implIdx // if not a nested type if (isTopTypeDef flags) && (tag <> i_ExportedType) then @@ -4938,7 +4970,7 @@ let createByteFileChunk opts fileName chunk = match chunk with | None -> stream.ReadAllBytes() - | Some (start, length) -> stream.ReadBytes(start, length) + | Some(start, length) -> stream.ReadBytes(start, length) ByteFile(fileName, bytes) :> BinaryFile @@ -4991,7 +5023,7 @@ let ClearAllILModuleReaderCache () = let OpenILModuleReader fileName opts = // Pseudo-normalize the paths. - let ILModuleReaderCacheKey (fullPath, writeStamp, _, _, _) as key, keyOk = + let ILModuleReaderCacheKey(fullPath, writeStamp, _, _, _) as key, keyOk = try let fullPath = FileSystem.GetFullPathShim fileName let writeTime = FileSystem.GetLastWriteTimeShim fileName @@ -5052,7 +5084,7 @@ let OpenILModuleReader fileName opts = // See if tryGetMetadata gives us a BinaryFile for the metadata section alone. let mdfileOpt = match opts.tryGetMetadataSnapshot (fullPath, writeStamp) with - | Some (obj, start, len) -> Some(RawMemoryFile(fullPath, obj, start, len) :> BinaryFile) + | Some(obj, start, len) -> Some(RawMemoryFile(fullPath, obj, start, len) :> BinaryFile) | None -> None // For metadata-only, always use a temporary, short-lived PE file reader, preferably over a memory mapped file. diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilreflect.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilreflect.fs index 0d56377e36..748ecafda2 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilreflect.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilreflect.fs @@ -265,12 +265,12 @@ type TypeBuilder with let t = typB.CreateTypeAndLog() let m = - if box t <> null then + if not (isNull (box t)) then t.GetMethod(nm, (args |> Seq.map (fun x -> x.GetType()) |> Seq.toArray)) else null - if m <> null then + if not (isNull m) then m.Invoke(null, args) else raise (MissingMethodException nm) @@ -445,8 +445,8 @@ let convAssemblyRef (aref: ILAssemblyRef) = (match aref.PublicKey with | None -> () - | Some (PublicKey bytes) -> asmName.SetPublicKey bytes - | Some (PublicKeyToken bytes) -> asmName.SetPublicKeyToken bytes) + | Some(PublicKey bytes) -> asmName.SetPublicKey bytes + | Some(PublicKeyToken bytes) -> asmName.SetPublicKeyToken bytes) let setVersion (version: ILVersionInfo) = asmName.Version <- Version(int32 version.Major, int32 version.Minor, int32 version.Build, int32 version.Revision) @@ -472,12 +472,12 @@ type cenv = let convResolveAssemblyRef (cenv: cenv) (asmref: ILAssemblyRef) qualifiedName = let assembly = match cenv.resolveAssemblyRef asmref with - | Some (Choice1Of2 path) -> + | Some(Choice1Of2 path) -> // asmRef is a path but the runtime is smarter with assembly names so make one let asmName = AssemblyName.GetAssemblyName(path) asmName.CodeBase <- path FileSystem.AssemblyLoader.AssemblyLoad asmName - | Some (Choice2Of2 assembly) -> assembly + | Some(Choice2Of2 assembly) -> assembly | None -> let asmName = convAssemblyRef asmref FileSystem.AssemblyLoader.AssemblyLoad asmName @@ -575,8 +575,8 @@ let envUpdateCreatedTypeRef emEnv (tref: ILTypeRef) = let convTypeRef cenv emEnv preferCreated (tref: ILTypeRef) = match Zmap.tryFind tref emEnv.emTypMap with - | Some (_typT, _typB, _typeDef, Some createdTy) when preferCreated -> createdTy - | Some (typT, _typB, _typeDef, _) -> typT + | Some(_typT, _typB, _typeDef, Some createdTy) when preferCreated -> createdTy + | Some(typT, _typB, _typeDef, _) -> typT | None -> convTypeRefAux cenv tref let envBindConsRef emEnv (mref: ILMethodRef) consB = @@ -667,7 +667,7 @@ let envPopEntryPts emEnv = // convCallConv //---------------------------------------------------------------------------- -let convCallConv (Callconv (hasThis, basic)) = +let convCallConv (Callconv(hasThis, basic)) = let ccA = match hasThis with | ILThisConvention.Static -> CallingConventions.Standard @@ -707,7 +707,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.Array (shape, eltType) -> + | ILType.Array(shape, eltType) -> let baseT = convTypeAux cenv emEnv preferCreated eltType let nDims = shape.Rank // MakeArrayType() returns "eltType[]" @@ -728,7 +728,7 @@ and convTypeAux cenv emEnv preferCreated ty = let baseT = convTypeAux cenv emEnv preferCreated eltType baseT.MakeByRefType() | ILType.TypeVar tv -> envGetTyvar emEnv tv - | ILType.Modified (_, _, modifiedTy) -> + | ILType.Modified(_, _, modifiedTy) -> convTypeAux cenv emEnv preferCreated modifiedTy @@ -772,7 +772,7 @@ let convCreatedTypeRef cenv emEnv ty = convTypeRef cenv emEnv true ty let rec convParamModifiersOfType cenv emEnv (paramTy: ILType) = [| match paramTy with - | ILType.Modified (modreq, ty, modifiedTy) -> + | ILType.Modified(modreq, ty, modifiedTy) -> yield (modreq, convTypeRef cenv emEnv false ty) yield! convParamModifiersOfType cenv emEnv modifiedTy | _ -> () @@ -874,9 +874,8 @@ let convFieldSpec cenv emEnv fspec = // NOTE: if "convType becomes convCreatedType", then handle queryable types here too. [bug 4063] (necessary? what repro?) let fieldB = envGetFieldB emEnv fref nonQueryableTypeGetField parentTI fieldB - else - // Prior type. - if + else if + // Prior type. typeIsNotQueryable parentTI then let parentT = getTypeConstructor parentTI @@ -1049,9 +1048,8 @@ let convMethodRef cenv emEnv (parentTI: Type) (mref: ILMethodRef) = // Emitted type, can get fully generic MethodBuilder from env. let methB = envGetMethB emEnv mref nonQueryableTypeGetMethod parentTI methB - else - // Prior type. - if + else if + // Prior type. typeIsNotQueryable parentTI then let parentT = getTypeConstructor parentTI @@ -1126,9 +1124,8 @@ let convConstructorSpec cenv emEnv (mspec: ILMethodSpec) = if isEmittedTypeRef emEnv mref.DeclaringTypeRef then let consB = envGetConsB emEnv mref nonQueryableTypeGetConstructor parentTI consB - else - // Prior type. - if + else if + // Prior type. typeIsNotQueryable parentTI then let parentT = getTypeConstructor parentTI @@ -1298,14 +1295,14 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr = | AI_pop -> ilG.EmitAndLog OpCodes.Pop | AI_ckfinite -> ilG.EmitAndLog OpCodes.Ckfinite | AI_nop -> ilG.EmitAndLog OpCodes.Nop - | AI_ldc (DT_I4, ILConst.I4 i32) -> ilG.EmitAndLog(OpCodes.Ldc_I4, i32) - | AI_ldc (DT_I8, ILConst.I8 i64) -> ilG.Emit(OpCodes.Ldc_I8, i64) - | AI_ldc (DT_R4, ILConst.R4 r32) -> ilG.Emit(OpCodes.Ldc_R4, r32) - | AI_ldc (DT_R8, ILConst.R8 r64) -> ilG.Emit(OpCodes.Ldc_R8, r64) + | AI_ldc(DT_I4, ILConst.I4 i32) -> ilG.EmitAndLog(OpCodes.Ldc_I4, i32) + | AI_ldc(DT_I8, ILConst.I8 i64) -> ilG.Emit(OpCodes.Ldc_I8, i64) + | AI_ldc(DT_R4, ILConst.R4 r32) -> ilG.Emit(OpCodes.Ldc_R4, r32) + | AI_ldc(DT_R8, ILConst.R8 r64) -> ilG.Emit(OpCodes.Ldc_R8, r64) | AI_ldc _ -> failwith "emitInstrI_arith (AI_ldc (ty, const)) iltyped" | I_ldarg u16 -> ilG.EmitAndLog(OpCodes.Ldarg, int16 u16) | I_ldarga u16 -> ilG.EmitAndLog(OpCodes.Ldarga, int16 u16) - | I_ldind (align, vol, dt) -> + | I_ldind(align, vol, dt) -> emitInstrAlign ilG align emitInstrVolatile ilG vol @@ -1327,7 +1324,7 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr = | I_ldloc u16 -> ilG.EmitAndLog(OpCodes.Ldloc, int16 u16) | I_ldloca u16 -> ilG.EmitAndLog(OpCodes.Ldloca, int16 u16) | I_starg u16 -> ilG.EmitAndLog(OpCodes.Starg, int16 u16) - | I_stind (align, vol, dt) -> + | I_stind(align, vol, dt) -> emitInstrAlign ilG align emitInstrVolatile ilG vol @@ -1349,24 +1346,24 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr = | I_stloc u16 -> ilG.EmitAndLog(OpCodes.Stloc, int16 u16) | I_br targ -> ilG.EmitAndLog(OpCodes.Br, envGetLabel emEnv targ) | I_jmp mspec -> ilG.EmitAndLog(OpCodes.Jmp, convMethodSpec cenv emEnv mspec) - | I_brcmp (comp, targ) -> emitInstrCompare emEnv ilG comp targ + | I_brcmp(comp, targ) -> emitInstrCompare emEnv ilG comp targ | I_switch labels -> ilG.Emit(OpCodes.Switch, Array.ofList (List.map (envGetLabel emEnv) labels)) | I_ret -> ilG.EmitAndLog OpCodes.Ret - | I_call (tail, mspec, varargs) -> + | I_call(tail, mspec, varargs) -> emitSilverlightCheck ilG emitInstrCall cenv emEnv ilG OpCodes.Call tail mspec varargs - | I_callvirt (tail, mspec, varargs) -> + | I_callvirt(tail, mspec, varargs) -> emitSilverlightCheck ilG emitInstrCall cenv emEnv ilG OpCodes.Callvirt tail mspec varargs - | I_callconstraint (callvirt, tail, ty, mspec, varargs) -> + | I_callconstraint(callvirt, tail, ty, mspec, varargs) -> ilG.Emit(OpCodes.Constrained, convType cenv emEnv ty) let instr = if callvirt then OpCodes.Callvirt else OpCodes.Call emitInstrCall cenv emEnv ilG instr tail mspec varargs - | I_calli (tail, callsig, None) -> + | I_calli(tail, callsig, None) -> emitInstrTail cenv ilG tail (fun () -> ilG.EmitCalli( OpCodes.Calli, @@ -1376,7 +1373,7 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr = Unchecked.defaultof )) - | I_calli (tail, callsig, Some varargTys) -> + | I_calli(tail, callsig, Some varargTys) -> emitInstrTail cenv ilG tail (fun () -> ilG.EmitCalli( OpCodes.Calli, @@ -1388,27 +1385,27 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr = | I_ldftn mspec -> ilG.EmitAndLog(OpCodes.Ldftn, convMethodSpec cenv emEnv mspec) - | I_newobj (mspec, varargs) -> emitInstrNewobj cenv emEnv ilG mspec varargs + | I_newobj(mspec, varargs) -> emitInstrNewobj cenv emEnv ilG mspec varargs | I_throw -> ilG.EmitAndLog OpCodes.Throw | I_endfinally -> ilG.EmitAndLog OpCodes.Endfinally | I_endfilter -> ilG.EmitAndLog OpCodes.Endfilter | I_leave label -> ilG.EmitAndLog(OpCodes.Leave, envGetLabel emEnv label) - | I_ldsfld (vol, fspec) -> + | I_ldsfld(vol, fspec) -> emitInstrVolatile ilG vol ilG.EmitAndLog(OpCodes.Ldsfld, convFieldSpec cenv emEnv fspec) - | I_ldfld (align, vol, fspec) -> + | I_ldfld(align, vol, fspec) -> emitInstrAlign ilG align emitInstrVolatile ilG vol ilG.EmitAndLog(OpCodes.Ldfld, convFieldSpec cenv emEnv fspec) | I_ldsflda fspec -> ilG.EmitAndLog(OpCodes.Ldsflda, convFieldSpec cenv emEnv fspec) | I_ldflda fspec -> ilG.EmitAndLog(OpCodes.Ldflda, convFieldSpec cenv emEnv fspec) - | I_stsfld (vol, fspec) -> + | I_stsfld(vol, fspec) -> emitInstrVolatile ilG vol ilG.EmitAndLog(OpCodes.Stsfld, convFieldSpec cenv emEnv fspec) - | I_stfld (align, vol, fspec) -> + | I_stfld(align, vol, fspec) -> emitInstrAlign ilG align emitInstrVolatile ilG vol ilG.EmitAndLog(OpCodes.Stfld, convFieldSpec cenv emEnv fspec) @@ -1416,20 +1413,20 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr = | I_ldstr s -> ilG.EmitAndLog(OpCodes.Ldstr, s) | I_isinst ty -> ilG.EmitAndLog(OpCodes.Isinst, convType cenv emEnv ty) | I_castclass ty -> ilG.EmitAndLog(OpCodes.Castclass, convType cenv emEnv ty) - | I_ldtoken (ILToken.ILType ty) -> ilG.EmitAndLog(OpCodes.Ldtoken, convTypeOrTypeDef cenv emEnv ty) - | I_ldtoken (ILToken.ILMethod mspec) -> ilG.EmitAndLog(OpCodes.Ldtoken, convMethodSpec cenv emEnv mspec) - | I_ldtoken (ILToken.ILField fspec) -> ilG.EmitAndLog(OpCodes.Ldtoken, convFieldSpec cenv emEnv fspec) + | I_ldtoken(ILToken.ILType ty) -> ilG.EmitAndLog(OpCodes.Ldtoken, convTypeOrTypeDef cenv emEnv ty) + | I_ldtoken(ILToken.ILMethod mspec) -> ilG.EmitAndLog(OpCodes.Ldtoken, convMethodSpec cenv emEnv mspec) + | I_ldtoken(ILToken.ILField fspec) -> ilG.EmitAndLog(OpCodes.Ldtoken, convFieldSpec cenv emEnv fspec) | I_ldvirtftn mspec -> ilG.EmitAndLog(OpCodes.Ldvirtftn, convMethodSpec cenv emEnv mspec) // Value type instructions | I_cpobj ty -> ilG.EmitAndLog(OpCodes.Cpobj, convType cenv emEnv ty) | I_initobj ty -> ilG.EmitAndLog(OpCodes.Initobj, convType cenv emEnv ty) - | I_ldobj (align, vol, ty) -> + | I_ldobj(align, vol, ty) -> emitInstrAlign ilG align emitInstrVolatile ilG vol ilG.EmitAndLog(OpCodes.Ldobj, convType cenv emEnv ty) - | I_stobj (align, vol, ty) -> + | I_stobj(align, vol, ty) -> emitInstrAlign ilG align emitInstrVolatile ilG vol ilG.EmitAndLog(OpCodes.Stobj, convType cenv emEnv ty) @@ -1485,7 +1482,7 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr = | DT_U8 -> failwith "emitInstr cenv: stelem U8" | DT_REF -> ilG.EmitAndLog OpCodes.Stelem_Ref - | I_ldelema (ro, _isNativePtr, shape, ty) -> + | I_ldelema(ro, _isNativePtr, shape, ty) -> if (ro = ReadonlyAddress) then ilG.EmitAndLog OpCodes.Readonly @@ -1502,7 +1499,7 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr = ilG.EmitAndLog(OpCodes.Call, meth) - | I_ldelem_any (shape, ty) -> + | I_ldelem_any(shape, ty) -> if shape = ILArrayShape.SingleDimensional then ilG.EmitAndLog(OpCodes.Ldelem, convType cenv emEnv ty) else @@ -1514,7 +1511,7 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr = ilG.EmitAndLog(OpCodes.Call, meth) - | I_stelem_any (shape, ty) -> + | I_stelem_any(shape, ty) -> if shape = ILArrayShape.SingleDimensional then ilG.EmitAndLog(OpCodes.Stelem, convType cenv emEnv ty) else @@ -1532,7 +1529,7 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr = ilG.EmitAndLog(OpCodes.Call, meth) - | I_newarr (shape, ty) -> + | I_newarr(shape, ty) -> if shape = ILArrayShape.SingleDimensional then ilG.EmitAndLog(OpCodes.Newarr, convType cenv emEnv ty) else @@ -1553,17 +1550,17 @@ let rec emitInstr cenv (modB: ModuleBuilder) emEnv (ilG: ILGenerator) instr = | I_arglist -> ilG.EmitAndLog OpCodes.Arglist | I_localloc -> ilG.EmitAndLog OpCodes.Localloc - | I_cpblk (align, vol) -> + | I_cpblk(align, vol) -> emitInstrAlign ilG align emitInstrVolatile ilG vol ilG.EmitAndLog OpCodes.Cpblk - | I_initblk (align, vol) -> + | I_initblk(align, vol) -> emitInstrAlign ilG align emitInstrVolatile ilG vol ilG.EmitAndLog OpCodes.Initblk - | EI_ldlen_multi (_, m) -> + | EI_ldlen_multi(_, m) -> emitInstr cenv modB emEnv ilG (mkLdcInt32 m) emitInstr @@ -1589,7 +1586,7 @@ let emitCode cenv modB emEnv (ilG: ILGenerator) (code: ILCode) = let emEnv = (emEnv, code.Labels) - ||> Seq.fold (fun emEnv (KeyValue (label, pc)) -> + ||> Seq.fold (fun emEnv (KeyValue(label, pc)) -> let lab = ilG.DefineLabelAndLog() pc2lab[pc] <- @@ -1617,20 +1614,20 @@ let emitCode cenv modB emEnv (ilG: ILGenerator) (code: ILCode) = add startTry (fun () -> ilG.BeginExceptionBlockAndLog() |> ignore) match exnSpec.Clause with - | ILExceptionClause.Finally (startHandler, endHandler) -> + | ILExceptionClause.Finally(startHandler, endHandler) -> add startHandler ilG.BeginFinallyBlockAndLog add endHandler ilG.EndExceptionBlockAndLog - | ILExceptionClause.Fault (startHandler, endHandler) -> + | ILExceptionClause.Fault(startHandler, endHandler) -> add startHandler ilG.BeginFaultBlockAndLog add endHandler ilG.EndExceptionBlockAndLog - | ILExceptionClause.FilterCatch ((startFilter, _), (startHandler, endHandler)) -> + | ILExceptionClause.FilterCatch((startFilter, _), (startHandler, endHandler)) -> add startFilter ilG.BeginExceptFilterBlockAndLog add startHandler (fun () -> ilG.BeginCatchBlockAndLog null) add endHandler ilG.EndExceptionBlockAndLog - | ILExceptionClause.TypeCatch (ty, (startHandler, endHandler)) -> + | ILExceptionClause.TypeCatch(ty, (startHandler, endHandler)) -> add startHandler (fun () -> ilG.BeginCatchBlockAndLog(convType cenv emEnv ty)) add endHandler ilG.EndExceptionBlockAndLog @@ -1770,25 +1767,27 @@ let emitParameter cenv emEnv (defineParameter: int * ParameterAttributes * strin // Use reflection to invoke the api when we are executing on a platform that doesn't directly have this API. let definePInvokeMethod = - typeof.GetMethod - ("DefinePInvokeMethod", - [| - typeof - typeof - typeof - typeof - typeof - typeof - typeof - typeof - typeof - typeof - typeof - typeof - typeof - |]) - -let enablePInvoke = definePInvokeMethod <> null + typeof + .GetMethod( + "DefinePInvokeMethod", + [| + typeof + typeof + typeof + typeof + typeof + typeof + typeof + typeof + typeof + typeof + typeof + typeof + typeof + |] + ) + +let enablePInvoke = not (isNull definePInvokeMethod) let rec buildMethodPass2 cenv tref (typB: TypeBuilder) emEnv (mdef: ILMethodDef) = let attrs = mdef.Attributes @@ -1829,7 +1828,7 @@ let rec buildMethodPass2 cenv tref (typB: TypeBuilder) emEnv (mdef: ILMethodDef) // Use reflection to invoke the api when we are executing on a platform that doesn't directly have this API. let methB = - System.Diagnostics.Debug.Assert(definePInvokeMethod <> null, "Runtime does not have DefinePInvokeMethod") // Absolutely can't happen + System.Diagnostics.Debug.Assert(not (isNull definePInvokeMethod), "Runtime does not have DefinePInvokeMethod") // Absolutely can't happen definePInvokeMethod.Invoke( typB, @@ -1989,7 +1988,7 @@ let buildFieldPass2 cenv tref (typB: TypeBuilder) emEnv (fdef: ILFieldDef) = delayedFieldInits = (fun () -> fieldB.SetConstant(initial.AsObject())) :: emEnv.delayedFieldInits } - fdef.Offset |> Option.iter (fun offset -> fieldB.SetOffset offset) + fdef.Offset |> Option.iter (fieldB.SetOffset) // custom attributes: done on pass 3 as they may reference attribute constructors generated on // pass 2. let fref = mkILFieldRef (tref, fdef.Name, fdef.FieldType) @@ -2063,7 +2062,7 @@ let buildEventPass3 cenv (typB: TypeBuilder) emEnv (eventDef: ILEventDef) = let buildMethodImplsPass3 cenv _tref (typB: TypeBuilder) emEnv (mimpl: ILMethodImplDef) = let bodyMethInfo = convMethodRef cenv emEnv typB mimpl.OverrideBy.MethodRef // doc: must be MethodBuilder - let (OverridesSpec (mref, dtyp)) = mimpl.Overrides + let (OverridesSpec(mref, dtyp)) = mimpl.Overrides let declMethTI = convType cenv emEnv dtyp let declMethInfo = convMethodRef cenv emEnv declMethTI mref typB.DefineMethodOverride(bodyMethInfo, declMethInfo) @@ -2279,7 +2278,7 @@ let rec getTypeRefsInType (allTypes: CollectTypes) ty acc = | ILType.TypeVar _ -> acc | ILType.Ptr eltType | ILType.Byref eltType -> getTypeRefsInType allTypes eltType acc - | ILType.Array (_, eltType) -> + | ILType.Array(_, eltType) -> match allTypes with | CollectTypes.ValueTypesOnly -> acc | CollectTypes.All -> getTypeRefsInType allTypes eltType acc @@ -2375,7 +2374,7 @@ let createTypeRef (visited: Dictionary<_, _>, created: Dictionary<_, _>) emEnv t let typeRef = ILTypeRef.Create(ILScopeRef.Local, nestingToProbe, typeName) match emEnv.emTypMap.TryFind typeRef with - | Some (_, tb, _, _) -> + | Some(_, tb, _, _) -> if not (tb.IsCreated()) then tb.CreateTypeAndLog() |> ignore diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilsign.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilsign.fs index 80418aeca4..7a383d4a07 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilsign.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilsign.fs @@ -183,10 +183,10 @@ let toCLRKeyBlob (rsaParameters: RSAParameters) (algId: int) : byte array = raise (CryptographicException(getResourceString (FSComp.SR.ilSignInvalidAlgId ()))) // Validate the RSA structure first. - if rsaParameters.Modulus = null then + if isNull rsaParameters.Modulus then raise (CryptographicException(String.Format(getResourceString (FSComp.SR.ilSignInvalidRSAParams ()), "Modulus"))) - if rsaParameters.Exponent = null || 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 @@ -194,7 +194,7 @@ let toCLRKeyBlob (rsaParameters: RSAParameters) (algId: int) : byte array = // We assume that if P != null, then so are Q, DP, DQ, InverseQ and D and indicate KeyPair RSA Parameters let isPrivate = - if rsaParameters.P <> null then + if not (isNull rsaParameters.P) then validateRSAField rsaParameters.P halfModulusLength "P" validateRSAField rsaParameters.Q halfModulusLength "Q" validateRSAField rsaParameters.DP halfModulusLength "DP" @@ -213,7 +213,7 @@ let toCLRKeyBlob (rsaParameters: RSAParameters) (algId: int) : byte array = bw.Write(int (modulusLength + BLOBHEADER_LENGTH)) // CLRHeader.KeyLength // Write out the BLOBHEADER - bw.Write(byte (if isPrivate = true then PRIVATEKEYBLOB else PUBLICKEYBLOB)) // BLOBHEADER.bType + bw.Write(byte (if isPrivate then PRIVATEKEYBLOB else PUBLICKEYBLOB)) // BLOBHEADER.bType bw.Write(byte BLOBHEADER_CURRENT_BVERSION) // BLOBHEADER.bVersion bw.Write(int16 0) // BLOBHEADER.wReserved @@ -235,7 +235,7 @@ let toCLRKeyBlob (rsaParameters: RSAParameters) (algId: int) : byte array = bw.Write expAsDword // RSAPubKey.pubExp bw.Write(rsaParameters.Modulus |> Array.rev) // Copy over the modulus for both public and private - if isPrivate = true then + if isPrivate then do bw.Write(rsaParameters.P |> Array.rev) bw.Write(rsaParameters.Q |> Array.rev) diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fs index ecddf2460d..cd4e1bfe72 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fs @@ -1151,8 +1151,11 @@ 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): + // 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 - when mdef.IsVirtual || mdef.IsAbstract || mdef.IsNewSlot || mdef.IsFinal || mdef.IsEntryPoint -> true + when (mdef.IsHideBySig && mdef.IsStatic) || mdef.IsVirtual || mdef.IsAbstract || mdef.IsNewSlot || mdef.IsFinal || mdef.IsEntryPoint -> true // When emitting a reference assembly, only generate internal methods if the assembly contains a System.Runtime.CompilerServices.InternalsVisibleToAttribute. | ILMemberAccess.FamilyOrAssembly | ILMemberAccess.Assembly when cenv.hasInternalsVisibleToAttrib -> true @@ -1189,7 +1192,7 @@ let canGenPropertyDef cenv (prop: ILPropertyDef) = // If we have GetMethod or SetMethod set (i.e. not None), try and see if we have MethodDefs for them. // NOTE: They can be not-None and missing MethodDefs if we skip generating them for reference assembly in the earlier pass. // Only generate property if we have at least getter or setter, otherwise, we skip. - [| prop.GetMethod; prop.SetMethod |] + [| prop.GetMethod; prop.SetMethod |] |> Array.choose id |> Array.exists (MethodDefIdxExists cenv) @@ -1300,14 +1303,14 @@ 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) - events |> List.iter (GenEventDefPass2 cenv tidx) + tdef.Implements |> List.iter (GenImplementsPass2 cenv env tidx) tdef.Fields.AsList() |> List.iter (GenFieldDefPass2 tdef cenv tidx) tdef.Methods |> Seq.iter (GenMethodDefPass2 tdef cenv tidx) - // Generation of property definitions for **ref assemblies** is checking existence of generated method definitions. + // Generation of property & event definitions for **ref assemblies** is checking existence of generated method definitions. // Therefore, due to mutable state within "cenv", order of operations matters. // Who could have thought that using shared mutable state can bring unexpected bugs...? props |> List.iter (GenPropertyDefPass2 cenv tidx) + events |> List.iter (GenEventDefPass2 cenv tidx) tdef.NestedTypes.AsList() |> GenTypeDefsPass2 tidx (enc@[tdef.Name]) cenv with exn -> failwith ("Error in pass2 for type "+tdef.Name+", error: " + exn.Message) @@ -2678,7 +2681,7 @@ let GenMethodImplPass3 cenv env _tgparams tidx mimpl = let midx2Tag, midx2Row = GetOverridesSpecAsMethodDefOrRef cenv env mimpl.Overrides AddUnsharedRow cenv TableNames.MethodImpl (UnsharedRow - [| SimpleIndex (TableNames.TypeDef, tidx) + [| SimpleIndex (TableNames.TypeDef, tidx) MethodDefOrRef (midxTag, midxRow) MethodDefOrRef (midx2Tag, midx2Row) |]) |> ignore diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilwritepdb.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilwritepdb.fs index 9b969bae09..24082eea2b 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilwritepdb.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilwritepdb.fs @@ -324,7 +324,7 @@ let sortMethods info = let getRowCounts tableRowCounts = let builder = ImmutableArray.CreateBuilder(tableRowCounts |> Array.length) - tableRowCounts |> Seq.iter (fun x -> builder.Add x) + tableRowCounts |> Seq.iter (builder.Add) builder.MoveToImmutable() let scopeSorter (scope1: PdbMethodScope) (scope2: PdbMethodScope) = @@ -340,14 +340,7 @@ let scopeSorter (scope1: PdbMethodScope) (scope2: PdbMethodScope) = 0 type PortablePdbGenerator - ( - embedAllSource: bool, - embedSourceList: string list, - sourceLink: string, - checksumAlgorithm, - info: PdbData, - pathMap: PathMap - ) = + (embedAllSource: bool, embedSourceList: string list, sourceLink: string, checksumAlgorithm, info: PdbData, pathMap: PathMap) = let docs = match info.Documents with @@ -438,7 +431,7 @@ type PortablePdbGenerator // For F# Interactive, file name 'stdin' gets generated for interactive inputs let handle = match checkSum doc.File checksumAlgorithm with - | Some (hashAlg, checkSum) -> + | Some(hashAlg, checkSum) -> let dbgInfo = (serializeDocumentName doc.File, metadata.GetOrAddGuid hashAlg, diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilx.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilx.fs index 94bfda1db5..cc911ef6d4 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilx.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilx.fs @@ -57,21 +57,20 @@ type IlxUnionSpec = | IlxUnionSpec of IlxUnionRef * ILGenericArgs member x.DeclaringType = - let (IlxUnionSpec (IlxUnionRef (bx, tref, _, _, _), inst)) = x in mkILNamedTy bx tref inst + let (IlxUnionSpec(IlxUnionRef(bx, tref, _, _, _), inst)) = x in mkILNamedTy bx tref inst - member x.Boxity = let (IlxUnionSpec (IlxUnionRef (bx, _, _, _, _), _)) = x in bx + member x.Boxity = let (IlxUnionSpec(IlxUnionRef(bx, _, _, _, _), _)) = x in bx - member x.TypeRef = let (IlxUnionSpec (IlxUnionRef (_, tref, _, _, _), _)) = x in tref + member x.TypeRef = let (IlxUnionSpec(IlxUnionRef(_, tref, _, _, _), _)) = x in tref - member x.GenericArgs = let (IlxUnionSpec (_, inst)) = x in inst + member x.GenericArgs = let (IlxUnionSpec(_, inst)) = x in inst member x.AlternativesArray = - let (IlxUnionSpec (IlxUnionRef (_, _, alts, _, _), _)) = x in alts + let (IlxUnionSpec(IlxUnionRef(_, _, alts, _, _), _)) = x in alts - member x.IsNullPermitted = - let (IlxUnionSpec (IlxUnionRef (_, _, _, np, _), _)) = x in np + member x.IsNullPermitted = let (IlxUnionSpec(IlxUnionRef(_, _, _, np, _), _)) = x in np - member x.HasHelpers = let (IlxUnionSpec (IlxUnionRef (_, _, _, _, b), _)) = x in b + member x.HasHelpers = let (IlxUnionSpec(IlxUnionRef(_, _, _, _, b), _)) = x in b member x.Alternatives = Array.toList x.AlternativesArray @@ -93,14 +92,14 @@ type IlxClosureApps = let rec instAppsAux n inst apps = match apps with - | Apps_tyapp (ty, rest) -> Apps_tyapp(instILTypeAux n inst ty, instAppsAux n inst rest) - | Apps_app (domainTy, rest) -> Apps_app(instILTypeAux n inst domainTy, instAppsAux n inst rest) + | Apps_tyapp(ty, rest) -> Apps_tyapp(instILTypeAux n inst ty, instAppsAux n inst rest) + | Apps_app(domainTy, rest) -> Apps_app(instILTypeAux n inst domainTy, instAppsAux n inst rest) | Apps_done retTy -> Apps_done(instILTypeAux n inst retTy) let rec instLambdasAux n inst lambdas = match lambdas with - | Lambdas_forall (gpdef, bodyTy) -> Lambdas_forall(gpdef, instLambdasAux n inst bodyTy) - | Lambdas_lambda (pdef, bodyTy) -> + | Lambdas_forall(gpdef, bodyTy) -> Lambdas_forall(gpdef, instLambdasAux n inst bodyTy) + | Lambdas_lambda(pdef, bodyTy) -> Lambdas_lambda( { pdef with Type = instILTypeAux n inst pdef.Type @@ -130,20 +129,20 @@ type IlxClosureRef = IlxClosureRef of ILTypeRef * IlxClosureLambdas * IlxClosure type IlxClosureSpec = | IlxClosureSpec of IlxClosureRef * ILGenericArgs * ILType * useStaticField: bool - member x.TypeRef = let (IlxClosureRef (tref, _, _)) = x.ClosureRef in tref + member x.TypeRef = let (IlxClosureRef(tref, _, _)) = x.ClosureRef in tref - member x.ILType = let (IlxClosureSpec (_, _, ty, _)) = x in ty + member x.ILType = let (IlxClosureSpec(_, _, ty, _)) = x in ty - member x.ClosureRef = let (IlxClosureSpec (cloref, _, _, _)) = x in cloref + member x.ClosureRef = let (IlxClosureSpec(cloref, _, _, _)) = x in cloref - member x.FormalFreeVars = let (IlxClosureRef (_, _, fvs)) = x.ClosureRef in fvs + member x.FormalFreeVars = let (IlxClosureRef(_, _, fvs)) = x.ClosureRef in fvs - member x.FormalLambdas = let (IlxClosureRef (_, lambdas, _)) = x.ClosureRef in lambdas + member x.FormalLambdas = let (IlxClosureRef(_, lambdas, _)) = x.ClosureRef in lambdas - member x.GenericArgs = let (IlxClosureSpec (_, inst, _, _)) = x in inst + member x.GenericArgs = let (IlxClosureSpec(_, inst, _, _)) = x in inst static member Create(cloref, inst, useStaticField) = - let (IlxClosureRef (tref, _, _)) = cloref + let (IlxClosureRef(tref, _, _)) = cloref IlxClosureSpec(cloref, inst, mkILBoxedType (mkILTySpec (tref, inst)), useStaticField) member x.Constructor = @@ -152,7 +151,7 @@ type IlxClosureSpec = mkILCtorMethSpecForTy (cloTy, fields |> Array.map (fun fv -> fv.fvType) |> Array.toList) member x.UseStaticField = - let (IlxClosureSpec (_, _, _, useStaticField)) = x + let (IlxClosureSpec(_, _, _, useStaticField)) = x useStaticField member x.GetStaticFieldSpec() = @@ -167,7 +166,7 @@ type IlxClosureInfo = { cloStructure: IlxClosureLambdas cloFreeVars: IlxClosureFreeVar[] - cloCode: Lazy + cloCode: InterruptibleLazy cloUseStaticField: bool } @@ -200,7 +199,7 @@ type IlxUnionInfo = let destTyFuncApp input = match input with - | Apps_tyapp (b, c) -> b, c + | Apps_tyapp(b, c) -> b, c | _ -> failwith "destTyFuncApp" let mkILFormalCloRef gparams csig useStaticField = diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilx.fsi b/src/fcs-fable/src/Compiler/AbstractIL/ilx.fsi index a6a008434b..bb4a7344d8 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilx.fsi +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilx.fsi @@ -4,6 +4,7 @@ module internal FSharp.Compiler.AbstractIL.ILX.Types open FSharp.Compiler.AbstractIL.IL +open Internal.Utilities.Library /// Union case field [] @@ -118,7 +119,7 @@ type IlxClosureApps = type IlxClosureInfo = { cloStructure: IlxClosureLambdas cloFreeVars: IlxClosureFreeVar[] - cloCode: Lazy + cloCode: InterruptibleLazy cloUseStaticField: bool } /// Represents a discriminated union type prior to erasure diff --git a/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fs b/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fs index 63ba529b22..d3e9fb1d42 100644 --- a/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fs +++ b/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fs @@ -1,8 +1,8 @@ // Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. /// Generate the hash/compare functions we add to user-defined types by default. -module internal FSharp.Compiler.AugmentWithHashCompare - +module internal FSharp.Compiler.AugmentTypeDefinitions + open Internal.Utilities.Library open FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.DiagnosticsLogger @@ -14,687 +14,1013 @@ open FSharp.Compiler.TypedTreeBasics 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) - +let mkIComparableCompareToSlotSig (g: TcGlobals) = + TSlotSig("CompareTo", g.mk_IComparable_ty, [], [], [ [ TSlotParam(Some("obj"), g.obj_ty, false, false, false, []) ] ], Some g.int_ty) + let mkGenericIComparableCompareToSlotSig (g: TcGlobals) ty = - TSlotSig("CompareTo", (mkAppTy g.system_GenericIComparable_tcref [ty]), [], [], [[TSlotParam(Some("obj"), ty, false, false, false, [])]], Some g.int_ty) - + TSlotSig( + "CompareTo", + (mkAppTy g.system_GenericIComparable_tcref [ ty ]), + [], + [], + [ [ TSlotParam(Some("obj"), ty, false, false, false, []) ] ], + Some g.int_ty + ) + let mkIStructuralComparableCompareToSlotSig (g: TcGlobals) = - TSlotSig("CompareTo", g.mk_IStructuralComparable_ty, [], [], [[TSlotParam(None, (mkRefTupledTy g [g.obj_ty ; g.IComparer_ty]), false, false, false, [])]], Some g.int_ty) - + TSlotSig( + "CompareTo", + g.mk_IStructuralComparable_ty, + [], + [], + [ + [ + TSlotParam(None, (mkRefTupledTy g [ g.obj_ty; g.IComparer_ty ]), false, false, false, []) + ] + ], + Some g.int_ty + ) + let mkGenericIEquatableEqualsSlotSig (g: TcGlobals) ty = - TSlotSig("Equals", (mkAppTy g.system_GenericIEquatable_tcref [ty]), [], [], [[TSlotParam(Some("obj"), ty, false, false, false, [])]], Some g.bool_ty) - + TSlotSig( + "Equals", + (mkAppTy g.system_GenericIEquatable_tcref [ ty ]), + [], + [], + [ [ TSlotParam(Some("obj"), ty, false, false, false, []) ] ], + Some g.bool_ty + ) + let mkIStructuralEquatableEqualsSlotSig (g: TcGlobals) = - TSlotSig("Equals", g.mk_IStructuralEquatable_ty, [], [], [[TSlotParam(None, (mkRefTupledTy g [g.obj_ty ; g.IEqualityComparer_ty]), false, false, false, [])]], Some g.bool_ty) + TSlotSig( + "Equals", + g.mk_IStructuralEquatable_ty, + [], + [], + [ + [ + TSlotParam(None, (mkRefTupledTy g [ g.obj_ty; g.IEqualityComparer_ty ]), false, false, false, []) + ] + ], + Some g.bool_ty + ) let mkIStructuralEquatableGetHashCodeSlotSig (g: TcGlobals) = - TSlotSig("GetHashCode", g.mk_IStructuralEquatable_ty, [], [], [[TSlotParam(None, g.IEqualityComparer_ty, false, false, false, [])]], Some g.int_ty) - -let mkGetHashCodeSlotSig (g: TcGlobals) = - TSlotSig("GetHashCode", g.obj_ty, [], [], [[]], Some g.int_ty) + TSlotSig( + "GetHashCode", + g.mk_IStructuralEquatable_ty, + [], + [], + [ [ TSlotParam(None, g.IEqualityComparer_ty, false, false, false, []) ] ], + 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) +let mkGetHashCodeSlotSig (g: TcGlobals) = + TSlotSig("GetHashCode", g.obj_ty, [], [], [ [] ], 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) //------------------------------------------------------------------------- // Helpers associated with code-generation of comparison/hash augmentations -//------------------------------------------------------------------------- +//------------------------------------------------------------------------- -let mkThisTy g ty = if isStructTy g ty then mkByrefTy g ty else ty +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) +let mkCompareObjTy g ty = + mkFunTy g (mkThisTy g ty) (mkFunTy g g.obj_ty g.int_ty) -let mkCompareTy g ty = mkFunTy g (mkThisTy g ty) (mkFunTy g ty 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) +let mkCompareWithComparerTy g ty = + mkFunTy g (mkThisTy g ty) (mkFunTy g (mkRefTupledTy g [ g.obj_ty; g.IComparer_ty ]) g.int_ty) -let mkEqualsObjTy g ty = mkFunTy g (mkThisTy g ty) (mkFunTy g g.obj_ty g.bool_ty) +let mkEqualsObjTy g ty = + mkFunTy g (mkThisTy g ty) (mkFunTy g g.obj_ty g.bool_ty) -let mkEqualsTy g ty = mkFunTy g (mkThisTy g ty) (mkFunTy g ty 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) +let mkEqualsWithComparerTy g ty = + mkFunTy g (mkThisTy g ty) (mkFunTy g (mkRefTupledTy g [ g.obj_ty; g.IEqualityComparer_ty ]) g.bool_ty) -let mkHashTy g ty = mkFunTy g (mkThisTy g ty) (mkFunTy g g.unit_ty g.int_ty) +let mkHashTy g ty = + mkFunTy g (mkThisTy g ty) (mkFunTy g g.unit_ty g.int_ty) -let mkHashWithComparerTy g ty = mkFunTy g (mkThisTy g ty) (mkFunTy g g.IEqualityComparer_ty g.int_ty) +let mkHashWithComparerTy g ty = + mkFunTy g (mkThisTy g ty) (mkFunTy g g.IEqualityComparer_ty g.int_ty) + +let mkIsCaseTy g ty = + mkFunTy g (mkThisTy g ty) (mkFunTy g g.unit_ty g.bool_ty) //------------------------------------------------------------------------- // Polymorphic comparison -//------------------------------------------------------------------------- +//------------------------------------------------------------------------- -let mkRelBinOp (g: TcGlobals) op m e1 e2 = mkAsmExpr ([ op ], [], [e1; e2], [g.bool_ty], m) +let mkRelBinOp (g: TcGlobals) op m e1 e2 = + mkAsmExpr ([ op ], [], [ e1; e2 ], [ g.bool_ty ], m) -let mkClt g m e1 e2 = mkRelBinOp g AI_clt m e1 e2 +let mkClt g m e1 e2 = mkRelBinOp g AI_clt m e1 e2 let mkCgt g m e1 e2 = mkRelBinOp g AI_cgt m e1 e2 //------------------------------------------------------------------------- // REVIEW: make this a .constrained call, not a virtual call. -//------------------------------------------------------------------------- +//------------------------------------------------------------------------- -// for creating and using GenericComparer objects and for creating and using +// for creating and using GenericComparer objects and for creating and using // IStructuralComparable objects (Eg, Calling CompareTo(obj o, IComparer comp)) -let mkILLangPrimTy (g: TcGlobals) = mkILNonGenericBoxedTy g.tcref_LanguagePrimitives.CompiledRepresentationForNamedType +let mkILLangPrimTy (g: TcGlobals) = + mkILNonGenericBoxedTy g.tcref_LanguagePrimitives.CompiledRepresentationForNamedType + +let mkILCallGetComparer (g: TcGlobals) m = + let ty = + mkILNonGenericBoxedTy g.tcref_System_Collections_IComparer.CompiledRepresentationForNamedType + + let mspec = + mkILNonGenericStaticMethSpecInTy (mkILLangPrimTy g, "get_GenericComparer", [], ty) + + mkAsmExpr ([ mkNormalCall mspec ], [], [], [ g.IComparer_ty ], m) + +let mkILCallGetEqualityComparer (g: TcGlobals) m = + let ty = + mkILNonGenericBoxedTy g.tcref_System_Collections_IEqualityComparer.CompiledRepresentationForNamedType -let mkILCallGetComparer (g: TcGlobals) m = - let ty = mkILNonGenericBoxedTy g.tcref_System_Collections_IComparer.CompiledRepresentationForNamedType - let mspec = mkILNonGenericStaticMethSpecInTy (mkILLangPrimTy g, "get_GenericComparer", [], ty) - mkAsmExpr ([mkNormalCall mspec], [], [], [g.IComparer_ty], m) + let mspec = + mkILNonGenericStaticMethSpecInTy (mkILLangPrimTy g, "get_GenericEqualityComparer", [], ty) -let mkILCallGetEqualityComparer (g: TcGlobals) m = - let ty = mkILNonGenericBoxedTy g.tcref_System_Collections_IEqualityComparer.CompiledRepresentationForNamedType - let mspec = mkILNonGenericStaticMethSpecInTy (mkILLangPrimTy g, "get_GenericEqualityComparer", [], ty) - mkAsmExpr ([mkNormalCall mspec], [], [], [g.IEqualityComparer_ty], m) + mkAsmExpr ([ mkNormalCall mspec ], [], [], [ g.IEqualityComparer_ty ], m) -let mkThisVar g m ty = mkCompGenLocal m "this" (mkThisTy g ty) +let mkThisVar g m ty = mkCompGenLocal m "this" (mkThisTy g ty) -let mkShl g m acce n = mkAsmExpr ([ AI_shl ], [], [acce; mkInt g m n], [g.int_ty], m) +let mkShl g m acce n = + mkAsmExpr ([ AI_shl ], [], [ acce; mkInt g m n ], [ g.int_ty ], m) -let mkShr g m acce n = mkAsmExpr ([ AI_shr ], [], [acce; mkInt g m n], [g.int_ty], m) +let mkShr g m acce n = + mkAsmExpr ([ AI_shr ], [], [ acce; mkInt g m n ], [ g.int_ty ], m) + +let mkAdd (g: TcGlobals) m e1 e2 = + mkAsmExpr ([ AI_add ], [], [ e1; e2 ], [ g.int_ty ], m) -let mkAdd (g: TcGlobals) m e1 e2 = mkAsmExpr ([ AI_add ], [], [e1;e2], [g.int_ty], m) - let mkAddToHashAcc g m e accv acce = - mkValSet m accv - (mkAdd g m (mkInt g m 0x9e3779b9) - (mkAdd g m e - (mkAdd g m (mkShl g m acce 6) (mkShr g m acce 2)))) - + mkValSet m accv (mkAdd g m (mkInt g m 0x9e3779b9) (mkAdd g m e (mkAdd g m (mkShl g m acce 6) (mkShr g m acce 2)))) + let mkCombineHashGenerators g m exprs accv acce = - (acce, exprs) ||> List.fold (fun tm e -> mkCompGenSequential m (mkAddToHashAcc g m e accv acce) tm) + (acce, exprs) + ||> List.fold (fun tm e -> mkCompGenSequential m (mkAddToHashAcc g m e accv acce) tm) //------------------------------------------------------------------------- // Build comparison functions for union, record and exception types. -//------------------------------------------------------------------------- +//------------------------------------------------------------------------- -let mkThatAddrLocal g m ty = mkCompGenLocal m "obj" (mkThisTy g ty) +let mkThatAddrLocal g m ty = mkCompGenLocal m "obj" (mkThisTy g ty) -let mkThatAddrLocalIfNeeded g m tcve ty = - if isStructTy g ty then - let thataddrv, thataddre = mkCompGenLocal m "obj" (mkThisTy g ty) +let mkThatAddrLocalIfNeeded g m tcve ty = + if isStructTy g ty then + let thataddrv, thataddre = mkCompGenLocal m "obj" (mkThisTy g ty) Some thataddrv, thataddre - else None, tcve - + else + None, tcve + let mkThisVarThatVar g m ty = let thisv, thise = mkThisVar g m ty let thataddrv, thataddre = mkThatAddrLocal g m ty thisv, thataddrv, thise, thataddre -let mkThatVarBind g m ty thataddrv expr = - if isStructTy g ty then - let thatv2, _ = mkMutableCompGenLocal m "obj" ty - thatv2, mkCompGenLet m thataddrv (mkValAddr m false (mkLocalValRef thatv2)) expr - else thataddrv, expr +let mkThatVarBind g m ty thataddrv expr = + if isStructTy g ty then + let thatv2, _ = mkMutableCompGenLocal m "obj" ty + thatv2, mkCompGenLet m thataddrv (mkValAddr m false (mkLocalValRef thatv2)) expr + else + thataddrv, expr let mkBindThatAddr g m ty thataddrv thatv thate expr = if isStructTy g ty then // let thataddrv = &thatv - mkCompGenLet m thataddrv (mkValAddr m false (mkLocalValRef thatv)) expr + mkCompGenLet m thataddrv (mkValAddr m false (mkLocalValRef thatv)) expr else // let thataddrv = that - mkCompGenLet m thataddrv thate expr + mkCompGenLet m thataddrv thate expr let mkBindThatAddrIfNeeded m thataddrvOpt thatv expr = - match thataddrvOpt with + match thataddrvOpt with | None -> expr | Some thataddrv -> // let thataddrv = &thatv - mkCompGenLet m thataddrv (mkValAddr m false (mkLocalValRef thatv)) expr + mkCompGenLet m thataddrv (mkValAddr m false (mkLocalValRef thatv)) expr let mkCompareTestConjuncts g m exprs = - match List.tryFrontAndBack exprs with + match List.tryFrontAndBack exprs with | None -> mkZero g m - | Some (a,b) -> - (a, b) ||> List.foldBack (fun e acc -> + | Some(a, b) -> + (a, b) + ||> List.foldBack (fun e acc -> let nv, ne = mkCompGenLocal m "n" g.int_ty - mkCompGenLet m nv e - (mkCond DebugPointAtBinding.NoneAtSticky m g.int_ty - (mkClt g m ne (mkZero g m)) - ne - (mkCond DebugPointAtBinding.NoneAtSticky m g.int_ty - (mkCgt g m ne (mkZero g m)) + + mkCompGenLet + m + nv + e + (mkCond + DebugPointAtBinding.NoneAtSticky + m + g.int_ty + (mkClt g m ne (mkZero g m)) ne - acc))) + (mkCond DebugPointAtBinding.NoneAtSticky m g.int_ty (mkCgt g m ne (mkZero g m)) ne acc))) let mkEqualsTestConjuncts g m exprs = - match List.tryFrontAndBack exprs with + match List.tryFrontAndBack exprs with | None -> mkOne g m - | Some (a,b) -> - List.foldBack (fun e acc -> mkCond DebugPointAtBinding.NoneAtSticky m g.bool_ty e acc (mkFalse g m)) a b + | Some(a, b) -> List.foldBack (fun e acc -> mkCond DebugPointAtBinding.NoneAtSticky m g.bool_ty e acc (mkFalse g m)) a b -let mkMinimalTy (g: TcGlobals) (tcref: TyconRef) = - if tcref.Deref.IsFSharpException then [], g.exn_ty - else generalizeTyconRef g tcref +let mkMinimalTy (g: TcGlobals) (tcref: TyconRef) = + if tcref.Deref.IsFSharpException then + [], g.exn_ty + else + generalizeTyconRef g tcref // check for nulls -let mkBindNullComparison g m thise thate expr = - let expr = mkNonNullCond g m g.int_ty thate expr (mkOne g m) - let expr = mkNonNullCond g m g.int_ty thise expr (mkNonNullCond g m g.int_ty thate (mkMinusOne g m) (mkZero g m) ) +let mkBindNullComparison g m thise thate expr = + let expr = mkNonNullCond g m g.int_ty thate expr (mkOne g m) + + let expr = + mkNonNullCond g m g.int_ty thise expr (mkNonNullCond g m g.int_ty thate (mkMinusOne g m) (mkZero g m)) + expr -let mkBindThisNullEquals g m thise thate expr = - let expr = mkNonNullCond g m g.bool_ty thise expr (mkNonNullCond g m g.int_ty thate (mkFalse g m) (mkTrue g m) ) +let mkBindThisNullEquals g m thise thate expr = + let expr = + mkNonNullCond g m g.bool_ty thise expr (mkNonNullCond g m g.int_ty thate (mkFalse g m) (mkTrue g m)) + expr -let mkBindThatNullEquals g m thise thate expr = - let expr = mkNonNullCond g m g.bool_ty thate expr (mkFalse g m) +let mkBindThatNullEquals g m thise thate expr = + let expr = mkNonNullCond g m g.bool_ty thate expr (mkFalse g m) let expr = mkBindThisNullEquals g m thise thate expr expr - -let mkBindNullHash g m thise expr = + +let mkBindNullHash g m thise expr = let expr = mkNonNullCond g m g.int_ty thise expr (mkZero g m) expr -/// Build the comparison implementation for a record type -let mkRecdCompare g tcref (tycon: Tycon) = - let m = tycon.Range - let fields = tycon.AllInstanceFieldsAsList +/// Build the comparison implementation for a record type +let mkRecdCompare g tcref (tycon: Tycon) = + let m = tycon.Range + let fields = tycon.AllInstanceFieldsAsList let tinst, ty = mkMinimalTy g tcref - let thisv, thataddrv, thise, thataddre = mkThisVarThatVar g m ty + let thisv, thataddrv, thise, thataddre = mkThisVarThatVar g m ty let compe = mkILCallGetComparer g m - let mkTest (fspec: RecdField) = - let fref = tcref.MakeNestedRecdFieldRef fspec - let m = fref.Range - mkCallGenericComparisonWithComparerOuter g m fspec.FormalType - compe - (mkRecdFieldGetViaExprAddr (thise, fref, tinst, m)) - (mkRecdFieldGetViaExprAddr (thataddre, fref, tinst, m)) - let expr = mkCompareTestConjuncts g m (List.map mkTest fields) - let expr = if tycon.IsStructOrEnumTycon then expr else mkBindNullComparison g m thise thataddre expr + let mkTest (fspec: RecdField) = + let fref = tcref.MakeNestedRecdFieldRef fspec + let m = fref.Range + + mkCallGenericComparisonWithComparerOuter + g + m + fspec.FormalType + compe + (mkRecdFieldGetViaExprAddr (thise, fref, tinst, m)) + (mkRecdFieldGetViaExprAddr (thataddre, fref, tinst, m)) + + let expr = mkCompareTestConjuncts g m (List.map mkTest fields) + + let expr = + if tycon.IsStructOrEnumTycon then + expr + else + mkBindNullComparison g m thise thataddre expr let thatv, expr = mkThatVarBind g m ty thataddrv expr thisv, thatv, expr /// Build the comparison implementation for a record type when parameterized by a comparer -let mkRecdCompareWithComparer g tcref (tycon: Tycon) (_thisv, thise) (_, thate) compe = - let m = tycon.Range +let mkRecdCompareWithComparer g tcref (tycon: Tycon) (_thisv, thise) (_, thate) compe = + let m = tycon.Range let fields = tycon.AllInstanceFieldsAsList let tinst, ty = mkMinimalTy g tcref - let tcv, tce = mkCompGenLocal m "objTemp" ty // let tcv = thate - let thataddrv, thataddre = mkThatAddrLocal g m ty // let thataddrv = &tcv, if a struct - - let mkTest (fspec: RecdField) = - let fref = tcref.MakeNestedRecdFieldRef fspec - let m = fref.Range - mkCallGenericComparisonWithComparerOuter g m fspec.FormalType - compe - (mkRecdFieldGetViaExprAddr (thise, fref, tinst, m)) - (mkRecdFieldGetViaExprAddr (thataddre, fref, tinst, m)) - let expr = mkCompareTestConjuncts g m (List.map mkTest fields) - - let expr = if tycon.IsStructOrEnumTycon then expr else mkBindNullComparison g m thise thate expr + let tcv, tce = mkCompGenLocal m "objTemp" ty // let tcv = thate + let thataddrv, thataddre = mkThatAddrLocal g m ty // let thataddrv = &tcv, if a struct + + let mkTest (fspec: RecdField) = + let fref = tcref.MakeNestedRecdFieldRef fspec + let m = fref.Range + + mkCallGenericComparisonWithComparerOuter + g + m + fspec.FormalType + compe + (mkRecdFieldGetViaExprAddr (thise, fref, tinst, m)) + (mkRecdFieldGetViaExprAddr (thataddre, fref, tinst, m)) + + let expr = mkCompareTestConjuncts g m (List.map mkTest fields) + + let expr = + if tycon.IsStructOrEnumTycon then + expr + else + mkBindNullComparison g m thise thate expr let expr = mkBindThatAddr g m ty thataddrv tcv tce expr // will be optimized away if not necessary let expr = mkCompGenLet m tcv thate expr - expr + expr -/// Build the .Equals(that) equality implementation wrapper for a record type -let mkRecdEquality g tcref (tycon: Tycon) = +/// Build the .Equals(that) equality implementation wrapper for a record type +let mkRecdEquality g tcref (tycon: Tycon) = let m = tycon.Range - let fields = tycon.AllInstanceFieldsAsList + let fields = tycon.AllInstanceFieldsAsList let tinst, ty = mkMinimalTy g tcref - let thisv, thataddrv, thise, thataddre = mkThisVarThatVar g m ty - let mkTest (fspec: RecdField) = - let fref = tcref.MakeNestedRecdFieldRef fspec - let m = fref.Range - mkCallGenericEqualityEROuter g m fspec.FormalType - (mkRecdFieldGetViaExprAddr (thise, fref, tinst, m)) - (mkRecdFieldGetViaExprAddr (thataddre, fref, tinst, m)) - let expr = mkEqualsTestConjuncts g m (List.map mkTest fields) + let thisv, thataddrv, thise, thataddre = mkThisVarThatVar g m ty - let expr = if tycon.IsStructOrEnumTycon then expr else mkBindThatNullEquals g m thise thataddre expr + let mkTest (fspec: RecdField) = + let fref = tcref.MakeNestedRecdFieldRef fspec + let m = fref.Range + + mkCallGenericEqualityEROuter + g + m + fspec.FormalType + (mkRecdFieldGetViaExprAddr (thise, fref, tinst, m)) + (mkRecdFieldGetViaExprAddr (thataddre, fref, tinst, m)) + + let expr = mkEqualsTestConjuncts g m (List.map mkTest fields) + + let expr = + if tycon.IsStructOrEnumTycon then + expr + else + mkBindThatNullEquals g m thise thataddre expr let thatv, expr = mkThatVarBind g m ty thataddrv expr 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 m = tycon.Range let fields = tycon.AllInstanceFieldsAsList let tinst, ty = mkMinimalTy g tcref let thataddrv, thataddre = mkThatAddrLocal g m ty - + let mkTest (fspec: RecdField) = let fref = tcref.MakeNestedRecdFieldRef fspec let m = fref.Range - - mkCallGenericEqualityWithComparerOuter g m fspec.FormalType + + mkCallGenericEqualityWithComparerOuter + g + m + fspec.FormalType compe (mkRecdFieldGetViaExprAddr (thise, fref, tinst, m)) (mkRecdFieldGetViaExprAddr (thataddre, fref, tinst, m)) + 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 tycon.IsStructOrEnumTycon then expr else mkBindThisNullEquals g m thise thatobje expr + + let expr = + if tycon.IsStructOrEnumTycon then + expr + else + mkBindThisNullEquals g m thise thatobje expr expr - + /// Build the equality implementation for an exception definition -let mkExnEquality (g: TcGlobals) exnref (exnc: Tycon) = - let m = exnc.Range - let thatv, thate = mkCompGenLocal m "obj" g.exn_ty - let thisv, thise = mkThisVar g m g.exn_ty - let mkTest i (rfield: RecdField) = - mkCallGenericEqualityEROuter g m rfield.FormalType - (mkExnCaseFieldGet(thise, exnref, i, m)) - (mkExnCaseFieldGet(thate, exnref, i, m)) - let expr = mkEqualsTestConjuncts g m (List.mapi mkTest exnc.AllInstanceFieldsAsList) +let mkExnEquality (g: TcGlobals) exnref (exnc: Tycon) = + let m = exnc.Range + let thatv, thate = mkCompGenLocal m "obj" g.exn_ty + let thisv, thise = mkThisVar g m g.exn_ty + + let mkTest i (rfield: RecdField) = + mkCallGenericEqualityEROuter + g + m + rfield.FormalType + (mkExnCaseFieldGet (thise, exnref, i, m)) + (mkExnCaseFieldGet (thate, exnref, i, m)) + + let expr = mkEqualsTestConjuncts g m (List.mapi mkTest exnc.AllInstanceFieldsAsList) + let expr = - let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m ) - let cases = - [ mkCase(DecisionTreeTest.IsInst(g.exn_ty, mkAppTy exnref []), - mbuilder.AddResultTarget(expr)) ] + let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) + + let cases = + [ + mkCase (DecisionTreeTest.IsInst(g.exn_ty, mkAppTy exnref []), mbuilder.AddResultTarget(expr)) + ] + let dflt = Some(mbuilder.AddResultTarget(mkFalse g m)) let dtree = TDSwitch(thate, cases, dflt, m) mbuilder.Close(dtree, m, g.bool_ty) let expr = mkBindThatNullEquals g m thise thate expr 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) (_thisv, thise) thatobje (thatv, thate) compe = let m = exnc.Range - let thataddrv, thataddre = mkThatAddrLocal g m g.exn_ty - let mkTest i (rfield: RecdField) = - mkCallGenericEqualityWithComparerOuter g m rfield.FormalType - compe - (mkExnCaseFieldGet(thise, exnref, i, m)) - (mkExnCaseFieldGet(thataddre, exnref, i, m)) - let expr = mkEqualsTestConjuncts g m (List.mapi mkTest exnc.AllInstanceFieldsAsList) + let thataddrv, thataddre = mkThatAddrLocal g m g.exn_ty + + let mkTest i (rfield: RecdField) = + mkCallGenericEqualityWithComparerOuter + g + m + rfield.FormalType + compe + (mkExnCaseFieldGet (thise, exnref, i, m)) + (mkExnCaseFieldGet (thataddre, exnref, i, m)) + + let expr = mkEqualsTestConjuncts g m (List.mapi mkTest exnc.AllInstanceFieldsAsList) + let expr = - let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m ) + let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) + let cases = - [ mkCase(DecisionTreeTest.IsInst(g.exn_ty, mkAppTy exnref []), - mbuilder.AddResultTarget(expr)) ] + [ + mkCase (DecisionTreeTest.IsInst(g.exn_ty, mkAppTy exnref []), mbuilder.AddResultTarget(expr)) + ] + let dflt = mbuilder.AddResultTarget(mkFalse g m) let dtree = TDSwitch(thate, cases, Some dflt, m) 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 exnc.IsStructOrEnumTycon then expr else mkBindThisNullEquals g m thise thatobje expr + + let expr = + if exnc.IsStructOrEnumTycon then + expr + else + mkBindThisNullEquals g m thise thatobje expr + expr /// Build the comparison implementation for a union type -let mkUnionCompare g tcref (tycon: Tycon) = - let m = tycon.Range - let ucases = tycon.UnionCasesAsList +let mkUnionCompare g tcref (tycon: Tycon) = + let m = tycon.Range + let ucases = tycon.UnionCasesAsList let tinst, ty = mkMinimalTy g tcref - let thisv, thataddrv, thise, thataddre = mkThisVarThatVar g m ty - let thistagv, thistage = mkCompGenLocal m "thisTag" g.int_ty - let thattagv, thattage = mkCompGenLocal m "thatTag" g.int_ty + let thisv, thataddrv, thise, thataddre = mkThisVarThatVar g m ty + let thistagv, thistage = mkCompGenLocal m "thisTag" g.int_ty + let thattagv, thattage = mkCompGenLocal m "thatTag" g.int_ty let compe = mkILCallGetComparer g m - let expr = - let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m ) + let expr = + let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) + let mkCase ucase = - let cref = tcref.MakeNestedUnionCaseRef ucase - let m = cref.Range - let rfields = ucase.RecdFields - if isNil rfields then None else - let mkTest thise thataddre j (fld: RecdField) = - mkCallGenericComparisonWithComparerOuter g m fld.FormalType - compe - (mkUnionCaseFieldGetProvenViaExprAddr (thise, cref, tinst, j, m)) - (mkUnionCaseFieldGetProvenViaExprAddr (thataddre, cref, tinst, j, m)) - let test = - if cref.Tycon.IsStructOrEnumTycon then - mkCompareTestConjuncts g m (List.mapi (mkTest thise thataddre) rfields) + let cref = tcref.MakeNestedUnionCaseRef ucase + let m = cref.Range + let rfields = ucase.RecdFields + + if isNil rfields then + None + else + let mkTest thise thataddre j (fld: RecdField) = + mkCallGenericComparisonWithComparerOuter + g + m + fld.FormalType + compe + (mkUnionCaseFieldGetProvenViaExprAddr (thise, cref, tinst, j, m)) + (mkUnionCaseFieldGetProvenViaExprAddr (thataddre, cref, tinst, j, m)) + + let test = + if cref.Tycon.IsStructOrEnumTycon then + mkCompareTestConjuncts g m (List.mapi (mkTest thise thataddre) rfields) + else + let thisucv, thisucve = mkCompGenLocal m "thisCast" (mkProvenUnionCaseTy cref tinst) + let thatucv, thatucve = mkCompGenLocal m "objCast" (mkProvenUnionCaseTy cref tinst) + + mkCompGenLet + m + thisucv + (mkUnionCaseProof (thise, cref, tinst, m)) + (mkCompGenLet + m + thatucv + (mkUnionCaseProof (thataddre, cref, tinst, m)) + (mkCompareTestConjuncts g m (List.mapi (mkTest thisucve thatucve) rfields))) + + Some(mkCase (DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test))) + + let nullary, nonNullary = List.partition Option.isNone (List.map mkCase ucases) + + if isNil nonNullary then + mkZero g m + else + let cases = + nonNullary + |> List.map (function + | Some c -> c + | None -> failwith "mkUnionCompare") + + let dflt = + if isNil nullary then + None else - let thisucv, thisucve = mkCompGenLocal m "thisCast" (mkProvenUnionCaseTy cref tinst) - let thatucv, thatucve = mkCompGenLocal m "objCast" (mkProvenUnionCaseTy cref tinst) - mkCompGenLet m thisucv (mkUnionCaseProof (thise, cref, tinst, m)) - (mkCompGenLet m thatucv (mkUnionCaseProof (thataddre, cref, tinst, m)) - (mkCompareTestConjuncts g m (List.mapi (mkTest thisucve thatucve) rfields))) - Some (mkCase(DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test))) - - let nullary, nonNullary = List.partition Option.isNone (List.map mkCase ucases) - if isNil nonNullary then mkZero g m else - let cases = nonNullary |> List.map (function Some c -> c | None -> failwith "mkUnionCompare") - let dflt = if isNil nullary then None else Some (mbuilder.AddResultTarget(mkZero g m)) - let dtree = TDSwitch(thise, cases, dflt, m) - mbuilder.Close(dtree, m, g.int_ty) + Some(mbuilder.AddResultTarget(mkZero g m)) + + let dtree = TDSwitch(thise, cases, dflt, m) + mbuilder.Close(dtree, m, g.int_ty) + + let expr = + if List.isSingleton ucases then + expr + else + + let tagsEqTested = + mkCond + DebugPointAtBinding.NoneAtSticky + m + g.int_ty + (mkILAsmCeq g m thistage thattage) + expr + (mkAsmExpr ([ AI_sub ], [], [ thistage; thattage ], [ g.int_ty ], m)) in + + mkCompGenLet + m + thistagv + (mkUnionCaseTagGetViaExprAddr (thise, tcref, tinst, m)) + (mkCompGenLet m thattagv (mkUnionCaseTagGetViaExprAddr (thataddre, tcref, tinst, m)) tagsEqTested) let expr = - if List.isSingleton ucases then expr else - - let tagsEqTested = - mkCond DebugPointAtBinding.NoneAtSticky m g.int_ty - (mkILAsmCeq g m thistage thattage) - expr - (mkAsmExpr ([ AI_sub ], [], [thistage; thattage], [g.int_ty], m))in - mkCompGenLet m thistagv - (mkUnionCaseTagGetViaExprAddr (thise, tcref, tinst, m)) - (mkCompGenLet m thattagv - (mkUnionCaseTagGetViaExprAddr (thataddre, tcref, tinst, m)) - tagsEqTested) - - let expr = if tycon.IsStructOrEnumTycon then expr else mkBindNullComparison g m thise thataddre expr + if tycon.IsStructOrEnumTycon then + expr + else + mkBindNullComparison g m thise thataddre expr + let thatv, expr = mkThatVarBind g m ty thataddrv expr thisv, thatv, expr - /// Build the comparison implementation for a union type when parameterized by a comparer -let mkUnionCompareWithComparer g tcref (tycon: Tycon) (_thisv, thise) (_thatobjv, thatcaste) compe = - let m = tycon.Range +let mkUnionCompareWithComparer g tcref (tycon: Tycon) (_thisv, thise) (_thatobjv, thatcaste) compe = + let m = tycon.Range let ucases = tycon.UnionCasesAsList let tinst, ty = mkMinimalTy g tcref - let tcv, tce = mkCompGenLocal m "objTemp" ty // let tcv = (thatobj :?> ty) + let tcv, tce = mkCompGenLocal m "objTemp" ty // let tcv = (thatobj :?> ty) let thataddrvOpt, thataddre = mkThatAddrLocalIfNeeded g m tce ty // let thataddrv = &tcv if struct, otherwise thataddre is just tce - let thistagv, thistage = mkCompGenLocal m "thisTag" g.int_ty - let thattagv, thattage = mkCompGenLocal m "thatTag" g.int_ty + let thistagv, thistage = mkCompGenLocal m "thisTag" g.int_ty + let thattagv, thattage = mkCompGenLocal m "thatTag" g.int_ty + + let expr = + let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) - let expr = - let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m ) let mkCase ucase = - let cref = tcref.MakeNestedUnionCaseRef ucase - let m = cref.Range - let rfields = ucase.RecdFields - if isNil rfields then None else - - let mkTest thise thataddre j (fld: RecdField) = - mkCallGenericComparisonWithComparerOuter g m fld.FormalType - compe - (mkUnionCaseFieldGetProvenViaExprAddr (thise, cref, tinst, j, m)) - (mkUnionCaseFieldGetProvenViaExprAddr (thataddre, cref, tinst, j, m)) - - let test = - if cref.Tycon.IsStructOrEnumTycon then - mkCompareTestConjuncts g m (List.mapi (mkTest thise thataddre) rfields) + let cref = tcref.MakeNestedUnionCaseRef ucase + let m = cref.Range + let rfields = ucase.RecdFields + + if isNil rfields then + None + else + + let mkTest thise thataddre j (fld: RecdField) = + mkCallGenericComparisonWithComparerOuter + g + m + fld.FormalType + compe + (mkUnionCaseFieldGetProvenViaExprAddr (thise, cref, tinst, j, m)) + (mkUnionCaseFieldGetProvenViaExprAddr (thataddre, cref, tinst, j, m)) + + let test = + if cref.Tycon.IsStructOrEnumTycon then + mkCompareTestConjuncts g m (List.mapi (mkTest thise thataddre) rfields) + else + let thisucv, thisucve = + mkCompGenLocal m "thisCastu" (mkProvenUnionCaseTy cref tinst) + + let thatucv, thatucve = + mkCompGenLocal m "thatCastu" (mkProvenUnionCaseTy cref tinst) + + mkCompGenLet + m + thisucv + (mkUnionCaseProof (thise, cref, tinst, m)) + (mkCompGenLet + m + thatucv + (mkUnionCaseProof (thataddre, cref, tinst, m)) + (mkCompareTestConjuncts g m (List.mapi (mkTest thisucve thatucve) rfields))) + + Some(mkCase (DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test))) + + let nullary, nonNullary = List.partition Option.isNone (List.map mkCase ucases) + + if isNil nonNullary then + mkZero g m + else + let cases = + nonNullary + |> List.map (function + | Some c -> c + | None -> failwith "mkUnionCompare") + + let dflt = + if isNil nullary then + None else - let thisucv, thisucve = mkCompGenLocal m "thisCastu" (mkProvenUnionCaseTy cref tinst) - let thatucv, thatucve = mkCompGenLocal m "thatCastu" (mkProvenUnionCaseTy cref tinst) - mkCompGenLet m thisucv (mkUnionCaseProof (thise, cref, tinst, m)) - (mkCompGenLet m thatucv (mkUnionCaseProof (thataddre, cref, tinst, m)) - (mkCompareTestConjuncts g m (List.mapi (mkTest thisucve thatucve) rfields))) - - Some (mkCase(DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test))) - - let nullary, nonNullary = List.partition Option.isNone (List.map mkCase ucases) - if isNil nonNullary then mkZero g m else - let cases = nonNullary |> List.map (function Some c -> c | None -> failwith "mkUnionCompare") - let dflt = if isNil nullary then None else Some (mbuilder.AddResultTarget(mkZero g m)) - let dtree = TDSwitch(thise, cases, dflt, m) - mbuilder.Close(dtree, m, g.int_ty) + Some(mbuilder.AddResultTarget(mkZero g m)) + + let dtree = TDSwitch(thise, cases, dflt, m) + mbuilder.Close(dtree, m, g.int_ty) let expr = - if List.isSingleton ucases then expr else - - let tagsEqTested = - mkCond DebugPointAtBinding.NoneAtSticky m g.int_ty - (mkILAsmCeq g m thistage thattage) - expr - (mkAsmExpr ([ AI_sub ], [], [thistage; thattage], [g.int_ty], m)) - mkCompGenLet m thistagv - (mkUnionCaseTagGetViaExprAddr (thise, tcref, tinst, m)) - (mkCompGenLet m thattagv - (mkUnionCaseTagGetViaExprAddr (thataddre, tcref, tinst, m)) - tagsEqTested) - - let expr = if tycon.IsStructOrEnumTycon then expr else mkBindNullComparison g m thise thatcaste expr + if List.isSingleton ucases then + expr + else + + let tagsEqTested = + mkCond + DebugPointAtBinding.NoneAtSticky + m + g.int_ty + (mkILAsmCeq g m thistage thattage) + expr + (mkAsmExpr ([ AI_sub ], [], [ thistage; thattage ], [ g.int_ty ], m)) + + mkCompGenLet + m + thistagv + (mkUnionCaseTagGetViaExprAddr (thise, tcref, tinst, m)) + (mkCompGenLet m thattagv (mkUnionCaseTagGetViaExprAddr (thataddre, tcref, tinst, m)) tagsEqTested) + + let expr = + if tycon.IsStructOrEnumTycon then + expr + else + mkBindNullComparison g m thise thatcaste expr + let expr = mkBindThatAddrIfNeeded m thataddrvOpt tcv expr let expr = mkCompGenLet m tcv thatcaste expr expr - - + /// Build the equality implementation for a union type -let mkUnionEquality g tcref (tycon: Tycon) = - let m = tycon.Range - let ucases = tycon.UnionCasesAsList +let mkUnionEquality g tcref (tycon: Tycon) = + let m = tycon.Range + let ucases = tycon.UnionCasesAsList let tinst, ty = mkMinimalTy g tcref - let thisv, thataddrv, thise, thataddre = mkThisVarThatVar g m ty - let thistagv, thistage = mkCompGenLocal m "thisTag" g.int_ty - let thattagv, thattage = mkCompGenLocal m "thatTag" g.int_ty + let thisv, thataddrv, thise, thataddre = mkThisVarThatVar g m ty + let thistagv, thistage = mkCompGenLocal m "thisTag" g.int_ty + let thattagv, thattage = mkCompGenLocal m "thatTag" g.int_ty + + let expr = + let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) - let expr = - let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m ) let mkCase ucase = - let cref = tcref.MakeNestedUnionCaseRef ucase - let m = cref.Range + let cref = tcref.MakeNestedUnionCaseRef ucase + let m = cref.Range let rfields = ucase.RecdFields - if isNil rfields then None else - let mkTest thise thataddre j (fld: RecdField) = - mkCallGenericEqualityEROuter g m fld.FormalType - (mkUnionCaseFieldGetProvenViaExprAddr (thise, cref, tinst, j, m)) - (mkUnionCaseFieldGetProvenViaExprAddr (thataddre, cref, tinst, j, m)) + if isNil rfields then + None + else + + let mkTest thise thataddre j (fld: RecdField) = + mkCallGenericEqualityEROuter + g + m + fld.FormalType + (mkUnionCaseFieldGetProvenViaExprAddr (thise, cref, tinst, j, m)) + (mkUnionCaseFieldGetProvenViaExprAddr (thataddre, cref, tinst, j, m)) + + let test = + if cref.Tycon.IsStructOrEnumTycon then + mkEqualsTestConjuncts g m (List.mapi (mkTest thise thataddre) rfields) + else + let thisucv, thisucve = mkCompGenLocal m "thisCast" (mkProvenUnionCaseTy cref tinst) + let thatucv, thatucve = mkCompGenLocal m "objCast" (mkProvenUnionCaseTy cref tinst) + + mkCompGenLet + m + thisucv + (mkUnionCaseProof (thise, cref, tinst, m)) + (mkCompGenLet + m + thatucv + (mkUnionCaseProof (thataddre, cref, tinst, m)) + (mkEqualsTestConjuncts g m (List.mapi (mkTest thisucve thatucve) rfields))) + + Some(mkCase (DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test))) + + let nullary, nonNullary = List.partition Option.isNone (List.map mkCase ucases) + + if isNil nonNullary then + mkTrue g m + else + let cases = + List.map + (function + | Some c -> c + | None -> failwith "mkUnionEquality") + nonNullary + + let dflt = + (if isNil nullary then + None + else + Some(mbuilder.AddResultTarget(mkTrue g m))) + + let dtree = TDSwitch(thise, cases, dflt, m) + mbuilder.Close(dtree, m, g.bool_ty) - let test = - if cref.Tycon.IsStructOrEnumTycon then - mkEqualsTestConjuncts g m (List.mapi (mkTest thise thataddre) rfields) - else - let thisucv, thisucve = mkCompGenLocal m "thisCast" (mkProvenUnionCaseTy cref tinst) - let thatucv, thatucve = mkCompGenLocal m "objCast" (mkProvenUnionCaseTy cref tinst) - mkCompGenLet m thisucv (mkUnionCaseProof (thise, cref, tinst, m)) - (mkCompGenLet m thatucv (mkUnionCaseProof (thataddre, cref, tinst, m)) - (mkEqualsTestConjuncts g m (List.mapi (mkTest thisucve thatucve) rfields))) - - Some (mkCase(DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test))) - - let nullary, nonNullary = List.partition Option.isNone (List.map mkCase ucases) - if isNil nonNullary then mkTrue g m else - let cases = List.map (function Some c -> c | None -> failwith "mkUnionEquality") nonNullary - let dflt = (if isNil nullary then None else Some (mbuilder.AddResultTarget(mkTrue g m))) - let dtree = TDSwitch(thise, cases, dflt, m) - mbuilder.Close(dtree, m, g.bool_ty) - let expr = - if List.isSingleton ucases then expr else - - let tagsEqTested = - mkCond DebugPointAtBinding.NoneAtSticky m g.bool_ty - (mkILAsmCeq g m thistage thattage) + if List.isSingleton ucases then expr - (mkFalse g m) + else + + let tagsEqTested = + mkCond DebugPointAtBinding.NoneAtSticky m g.bool_ty (mkILAsmCeq g m thistage thattage) expr (mkFalse g m) - mkCompGenLet m thistagv - (mkUnionCaseTagGetViaExprAddr (thise, tcref, tinst, m)) - (mkCompGenLet m thattagv - (mkUnionCaseTagGetViaExprAddr (thataddre, tcref, tinst, m)) - tagsEqTested) + mkCompGenLet + m + thistagv + (mkUnionCaseTagGetViaExprAddr (thise, tcref, tinst, m)) + (mkCompGenLet m thattagv (mkUnionCaseTagGetViaExprAddr (thataddre, tcref, tinst, m)) tagsEqTested) let thatv, expr = mkThatVarBind g m ty thataddrv expr - let expr = if tycon.IsStructOrEnumTycon then expr else mkBindThatNullEquals g m thise thataddre expr + + let expr = + if tycon.IsStructOrEnumTycon then + expr + else + mkBindThatNullEquals g m thise thataddre expr + 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 m = tycon.Range + let m = tycon.Range let ucases = tycon.UnionCasesAsList let tinst, ty = mkMinimalTy g tcref - let thistagv, thistage = mkCompGenLocal m "thisTag" g.int_ty - let thattagv, thattage = mkCompGenLocal m "thatTag" g.int_ty + let thistagv, thistage = mkCompGenLocal m "thisTag" g.int_ty + let thattagv, thattage = mkCompGenLocal m "thatTag" g.int_ty let thataddrv, thataddre = mkThatAddrLocal g m ty - let expr = - let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m ) + let expr = + let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) + let mkCase ucase = - let cref = tcref.MakeNestedUnionCaseRef ucase - let m = cref.Range + let cref = tcref.MakeNestedUnionCaseRef ucase + let m = cref.Range let rfields = ucase.RecdFields - if isNil rfields then None else - - let mkTest thise thataddre j (fld: RecdField) = - mkCallGenericEqualityWithComparerOuter g m fld.FormalType - compe - (mkUnionCaseFieldGetProvenViaExprAddr (thise, cref, tinst, j, m)) - (mkUnionCaseFieldGetProvenViaExprAddr (thataddre, cref, tinst, j, m)) - let test = - if cref.Tycon.IsStructOrEnumTycon then - mkEqualsTestConjuncts g m (List.mapi (mkTest thise thataddre) rfields) + if isNil rfields then + None + else + + let mkTest thise thataddre j (fld: RecdField) = + mkCallGenericEqualityWithComparerOuter + g + m + fld.FormalType + compe + (mkUnionCaseFieldGetProvenViaExprAddr (thise, cref, tinst, j, m)) + (mkUnionCaseFieldGetProvenViaExprAddr (thataddre, cref, tinst, j, m)) + + let test = + if cref.Tycon.IsStructOrEnumTycon then + mkEqualsTestConjuncts g m (List.mapi (mkTest thise thataddre) rfields) + else + let thisucv, thisucve = + mkCompGenLocal m "thisCastu" (mkProvenUnionCaseTy cref tinst) + + let thatucv, thatucve = + mkCompGenLocal m "thatCastu" (mkProvenUnionCaseTy cref tinst) + + mkCompGenLet + m + thisucv + (mkUnionCaseProof (thise, cref, tinst, m)) + (mkCompGenLet + m + thatucv + (mkUnionCaseProof (thataddre, cref, tinst, m)) + (mkEqualsTestConjuncts g m (List.mapi (mkTest thisucve thatucve) rfields))) + + Some(mkCase (DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test))) + + let nullary, nonNullary = List.partition Option.isNone (List.map mkCase ucases) + + if isNil nonNullary then + mkTrue g m + else + let cases = + List.map + (function + | Some c -> c + | None -> failwith "mkUnionEquality") + nonNullary + + let dflt = + if isNil nullary then + None else - let thisucv, thisucve = mkCompGenLocal m "thisCastu" (mkProvenUnionCaseTy cref tinst) - let thatucv, thatucve = mkCompGenLocal m "thatCastu" (mkProvenUnionCaseTy cref tinst) - - mkCompGenLet m thisucv (mkUnionCaseProof (thise, cref, tinst, m)) - (mkCompGenLet m thatucv (mkUnionCaseProof (thataddre, cref, tinst, m)) - (mkEqualsTestConjuncts g m (List.mapi (mkTest thisucve thatucve) rfields))) - - Some (mkCase(DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget (test))) - - let nullary, nonNullary = List.partition Option.isNone (List.map mkCase ucases) - if isNil nonNullary then mkTrue g m else - let cases = List.map (function Some c -> c | None -> failwith "mkUnionEquality") nonNullary - let dflt = if isNil nullary then None else Some (mbuilder.AddResultTarget(mkTrue g m)) - let dtree = TDSwitch(thise, cases, dflt, m) - mbuilder.Close(dtree, m, g.bool_ty) - - let expr = - if List.isSingleton ucases then expr else + Some(mbuilder.AddResultTarget(mkTrue g m)) + + let dtree = TDSwitch(thise, cases, dflt, m) + mbuilder.Close(dtree, m, g.bool_ty) - let tagsEqTested = - mkCond DebugPointAtBinding.NoneAtSticky m g.bool_ty - (mkILAsmCeq g m thistage thattage) + let expr = + if List.isSingleton ucases then expr - (mkFalse g m) + else + + let tagsEqTested = + mkCond DebugPointAtBinding.NoneAtSticky m g.bool_ty (mkILAsmCeq g m thistage thattage) expr (mkFalse g m) + + mkCompGenLet + m + thistagv + (mkUnionCaseTagGetViaExprAddr (thise, tcref, tinst, m)) + (mkCompGenLet m thattagv (mkUnionCaseTagGetViaExprAddr (thataddre, tcref, tinst, m)) tagsEqTested) - mkCompGenLet m thistagv - (mkUnionCaseTagGetViaExprAddr (thise, tcref, tinst, m)) - (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 tycon.IsStructOrEnumTycon then expr else mkBindThisNullEquals g m thise thatobje expr + + let expr = + if tycon.IsStructOrEnumTycon then + expr + else + mkBindThisNullEquals g m thise thatobje expr + expr //------------------------------------------------------------------------- // Build hashing functions for union, record and exception types. // Hashing functions must respect the "=" and comparison operators. -//------------------------------------------------------------------------- +//------------------------------------------------------------------------- -/// Structural hash implementation for record types when parameterized by a comparer -let mkRecdHashWithComparer g tcref (tycon: Tycon) compe = - let m = tycon.Range +/// Structural hash implementation for record types when parameterized by a comparer +let mkRecdHashWithComparer g tcref (tycon: Tycon) compe = + let m = tycon.Range let fields = tycon.AllInstanceFieldsAsList let tinst, ty = mkMinimalTy g tcref let thisv, thise = mkThisVar g m ty - let mkFieldHash (fspec: RecdField) = - let fref = tcref.MakeNestedRecdFieldRef fspec - let m = fref.Range + + let mkFieldHash (fspec: RecdField) = + let fref = tcref.MakeNestedRecdFieldRef fspec + let m = fref.Range let e = mkRecdFieldGetViaExprAddr (thise, fref, tinst, m) - + mkCallGenericHashWithComparerOuter g m fspec.FormalType compe e - - let accv, acce = mkMutableCompGenLocal m "i" g.int_ty - let stmt = mkCombineHashGenerators g m (List.map mkFieldHash fields) (mkLocalValRef accv) acce - let expr = mkCompGenLet m accv (mkZero g m) stmt - let expr = if tycon.IsStructOrEnumTycon then expr else mkBindNullHash g m thise expr + + let accv, acce = mkMutableCompGenLocal m "i" g.int_ty + + let stmt = + mkCombineHashGenerators g m (List.map mkFieldHash fields) (mkLocalValRef accv) acce + + let expr = mkCompGenLet m accv (mkZero g m) stmt + + let expr = + if tycon.IsStructOrEnumTycon then + expr + else + mkBindNullHash g m thise expr + thisv, expr /// Structural hash implementation for exception types when parameterized by a comparer -let mkExnHashWithComparer g exnref (exnc: Tycon) compe = +let mkExnHashWithComparer g exnref (exnc: Tycon) compe = let m = exnc.Range let thisv, thise = mkThisVar g m g.exn_ty - - let mkHash i (rfield: RecdField) = - let e = mkExnCaseFieldGet(thise, exnref, i, m) - + + let mkHash i (rfield: RecdField) = + let e = mkExnCaseFieldGet (thise, exnref, i, m) + mkCallGenericHashWithComparerOuter g m rfield.FormalType compe e - - let accv, acce = mkMutableCompGenLocal m "i" g.int_ty - let stmt = mkCombineHashGenerators g m (List.mapi mkHash exnc.AllInstanceFieldsAsList) (mkLocalValRef accv) acce - let expr = mkCompGenLet m accv (mkZero g m) stmt + + let accv, acce = mkMutableCompGenLocal m "i" g.int_ty + + let stmt = + mkCombineHashGenerators g m (List.mapi mkHash exnc.AllInstanceFieldsAsList) (mkLocalValRef accv) acce + + let expr = mkCompGenLet m accv (mkZero g m) stmt let expr = mkBindNullHash g m thise expr thisv, expr -/// Structural hash implementation for union types when parameterized by a comparer +/// Structural hash implementation for union types when parameterized by a comparer let mkUnionHashWithComparer g tcref (tycon: Tycon) compe = let m = tycon.Range let ucases = tycon.UnionCasesAsList let tinst, ty = mkMinimalTy g tcref let thisv, thise = mkThisVar g m ty - let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m ) - let accv, acce = mkMutableCompGenLocal m "i" g.int_ty - let mkCase i ucase1 = - let c1ref = tcref.MakeNestedUnionCaseRef ucase1 - let m = c1ref.Range - if ucase1.IsNullary then None + let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) + let accv, acce = mkMutableCompGenLocal m "i" g.int_ty + + let mkCase i ucase1 = + let c1ref = tcref.MakeNestedUnionCaseRef ucase1 + let m = c1ref.Range + + if ucase1.IsNullary then + None else - let mkHash thise j (rfield: RecdField) = + let mkHash thise j (rfield: RecdField) = let e = mkUnionCaseFieldGetProvenViaExprAddr (thise, c1ref, tinst, j, m) mkCallGenericHashWithComparerOuter g m rfield.FormalType compe e - let test = - if tycon.IsStructOrEnumTycon then - mkCompGenSequential m - (mkValSet m (mkLocalValRef accv) (mkInt g m i)) + let test = + if tycon.IsStructOrEnumTycon then + mkCompGenSequential + m + (mkValSet m (mkLocalValRef accv) (mkInt g m i)) (mkCombineHashGenerators g m (List.mapi (mkHash thise) ucase1.RecdFields) (mkLocalValRef accv) acce) else let ucv, ucve = mkCompGenLocal m "unionCase" (mkProvenUnionCaseTy c1ref tinst) - mkCompGenLet m ucv + + mkCompGenLet + m + ucv (mkUnionCaseProof (thise, c1ref, tinst, m)) - (mkCompGenSequential m - (mkValSet m (mkLocalValRef accv) (mkInt g m i)) + (mkCompGenSequential + m + (mkValSet m (mkLocalValRef accv) (mkInt g m i)) (mkCombineHashGenerators g m (List.mapi (mkHash ucve) ucase1.RecdFields) (mkLocalValRef accv) acce)) - Some(mkCase(DecisionTreeTest.UnionCase(c1ref, tinst), mbuilder.AddResultTarget(test))) - - let nullary, nonNullary = ucases - |> List.mapi mkCase - |> List.partition (fun i -> i.IsNone) - let cases = nonNullary |> List.map (function Some c -> c | None -> failwith "mkUnionHash") - let dflt = if isNil nullary then None - else - let tag = mkUnionCaseTagGetViaExprAddr (thise, tcref, tinst, m) - Some(mbuilder.AddResultTarget(tag)) + + Some(mkCase (DecisionTreeTest.UnionCase(c1ref, tinst), mbuilder.AddResultTarget(test))) + + let nullary, nonNullary = + ucases |> List.mapi mkCase |> List.partition (fun i -> i.IsNone) + + let cases = + nonNullary + |> List.map (function + | Some c -> c + | None -> failwith "mkUnionHash") + + let dflt = + if isNil nullary then + None + else + let tag = mkUnionCaseTagGetViaExprAddr (thise, tcref, tinst, m) + Some(mbuilder.AddResultTarget(tag)) + let dtree = TDSwitch(thise, cases, dflt, m) let stmt = mbuilder.Close(dtree, m, g.int_ty) - let expr = mkCompGenLet m accv (mkZero g m) stmt - let expr = if tycon.IsStructOrEnumTycon then expr else mkBindNullHash g m thise expr - thisv, expr + let expr = mkCompGenLet m accv (mkZero g m) stmt + let expr = + if tycon.IsStructOrEnumTycon then + expr + else + mkBindNullHash g m thise expr + + thisv, expr //------------------------------------------------------------------------- -// The predicate that determines which types implement the +// The predicate that determines which types implement the // pre-baked IStructuralHash and IComparable semantics associated with F# -// types. Note abstract types are not _known_ to implement these interfaces, +// types. Note abstract types are not _known_ to implement these interfaces, // though the interfaces may be discoverable via type tests. -//------------------------------------------------------------------------- +//------------------------------------------------------------------------- -let isNominalExnc (exnc: Tycon) = - match exnc.ExceptionInfo with - | TExnAbbrevRepr _ | TExnNone | TExnAsmRepr _ -> false +let isNominalExnc (exnc: Tycon) = + match exnc.ExceptionInfo with + | TExnAbbrevRepr _ + | TExnNone + | TExnAsmRepr _ -> false | TExnFresh _ -> true -let isTrueFSharpStructTycon _g (tycon: Tycon) = - (tycon.IsFSharpStructOrEnumTycon && not tycon.IsFSharpEnumTycon) - -let canBeAugmentedWithEquals g (tycon: Tycon) = - tycon.IsUnionTycon || - tycon.IsRecordTycon || - (tycon.IsFSharpException && isNominalExnc tycon) || - isTrueFSharpStructTycon g tycon - -let canBeAugmentedWithCompare g (tycon: Tycon) = - tycon.IsUnionTycon || - tycon.IsRecordTycon || - isTrueFSharpStructTycon g tycon - -let getAugmentationAttribs g (tycon: Tycon) = - canBeAugmentedWithEquals g tycon, - canBeAugmentedWithCompare g tycon, - TryFindFSharpBoolAttribute g g.attrib_NoEqualityAttribute tycon.Attribs, - TryFindFSharpBoolAttribute g g.attrib_CustomEqualityAttribute tycon.Attribs, - TryFindFSharpBoolAttribute g g.attrib_ReferenceEqualityAttribute tycon.Attribs, - TryFindFSharpBoolAttribute g g.attrib_StructuralEqualityAttribute tycon.Attribs, - TryFindFSharpBoolAttribute g g.attrib_NoComparisonAttribute tycon.Attribs, - TryFindFSharpBoolAttribute g g.attrib_CustomComparisonAttribute tycon.Attribs, - TryFindFSharpBoolAttribute g g.attrib_StructuralComparisonAttribute tycon.Attribs - -let CheckAugmentationAttribs isImplementation g amap (tycon: Tycon) = +let isTrueFSharpStructTycon _g (tycon: Tycon) = + (tycon.IsFSharpStructOrEnumTycon && not tycon.IsFSharpEnumTycon) + +let canBeAugmentedWithEquals g (tycon: Tycon) = + tycon.IsUnionTycon + || tycon.IsRecordTycon + || (tycon.IsFSharpException && isNominalExnc tycon) + || isTrueFSharpStructTycon g tycon + +let canBeAugmentedWithCompare g (tycon: Tycon) = + tycon.IsUnionTycon || tycon.IsRecordTycon || isTrueFSharpStructTycon g tycon + +let getAugmentationAttribs g (tycon: Tycon) = + canBeAugmentedWithEquals g tycon, + canBeAugmentedWithCompare g tycon, + TryFindFSharpBoolAttribute g g.attrib_NoEqualityAttribute tycon.Attribs, + TryFindFSharpBoolAttribute g g.attrib_CustomEqualityAttribute tycon.Attribs, + TryFindFSharpBoolAttribute g g.attrib_ReferenceEqualityAttribute tycon.Attribs, + TryFindFSharpBoolAttribute g g.attrib_StructuralEqualityAttribute tycon.Attribs, + TryFindFSharpBoolAttribute g g.attrib_NoComparisonAttribute tycon.Attribs, + TryFindFSharpBoolAttribute g g.attrib_CustomComparisonAttribute tycon.Attribs, + TryFindFSharpBoolAttribute g g.attrib_StructuralComparisonAttribute tycon.Attribs + +let CheckAugmentationAttribs isImplementation g amap (tycon: Tycon) = let m = tycon.Range let attribs = getAugmentationAttribs g tycon - match attribs with - - // THESE ARE THE LEGITIMATE CASES + + match attribs with + + // THESE ARE THE LEGITIMATE CASES // [< >] on anything | _, _, None, None, None, None, None, None, None @@ -703,168 +1029,171 @@ let CheckAugmentationAttribs isImplementation g amap (tycon: Tycon) = | true, _, None, Some true, None, None, None, Some true, None // [] on union/record/struct - | true, _, None, Some true, None, None, Some true, None, None -> - () + | true, _, None, Some true, None, None, Some true, None, None -> () // [] on union/record/struct | true, _, None, None, Some true, None, Some true, None, None // [] on union/record/struct | true, _, None, None, Some true, None, None, None, None -> - if isTrueFSharpStructTycon g tycon then - errorR(Error(FSComp.SR.augNoRefEqualsOnStruct(), m)) - else () + if isTrueFSharpStructTycon g tycon then + errorR (Error(FSComp.SR.augNoRefEqualsOnStruct (), m)) + else + () // [] on union/record/struct - | true, true, None, None, None, Some true, None, None, Some true + | true, true, None, None, None, Some true, None, None, Some true - // [] + // [] | true, _, None, None, None, Some true, Some true, None, None - // [] + // [] | true, _, None, None, None, Some true, None, Some true, None // [] on anything - | _, _, None, None, None, None, Some true, None, None + | _, _, None, None, None, None, Some true, None, None // [] on anything - | _, _, Some true, None, None, None, Some true, None, None -> - () + | _, _, Some true, None, None, None, Some true, None, None -> () // THESE ARE THE ERROR CASES - // [] - | _, _, Some true, _, _, _, None, _, _ -> - errorR(Error(FSComp.SR.augNoEqualityNeedsNoComparison(), m)) + // [] + | _, _, Some true, _, _, _, None, _, _ -> errorR (Error(FSComp.SR.augNoEqualityNeedsNoComparison (), m)) - // [] - | true, true, _, _, _, None, _, _, Some true -> - errorR(Error(FSComp.SR.augStructCompNeedsStructEquality(), m)) - // [] - | true, _, _, _, _, Some true, None, _, None -> - errorR(Error(FSComp.SR.augStructEqNeedsNoCompOrStructComp(), m)) + // [] + | true, true, _, _, _, None, _, _, Some true -> errorR (Error(FSComp.SR.augStructCompNeedsStructEquality (), m)) + // [] + | true, _, _, _, _, Some true, None, _, None -> errorR (Error(FSComp.SR.augStructEqNeedsNoCompOrStructComp (), m)) - // [] - | true, _, _, Some true, _, _, None, None, _ -> - errorR(Error(FSComp.SR.augCustomEqNeedsNoCompOrCustomComp(), m)) + // [] + | true, _, _, Some true, _, _, None, None, _ -> errorR (Error(FSComp.SR.augCustomEqNeedsNoCompOrCustomComp (), m)) - // [] + // [] | true, _, _, _, Some true, Some true, _, _, _ - // [] - | true, _, _, _, Some true, _, _, _, Some true -> - errorR(Error(FSComp.SR.augTypeCantHaveRefEqAndStructAttrs(), m)) + // [] + | true, _, _, _, Some true, _, _, _, Some true -> errorR (Error(FSComp.SR.augTypeCantHaveRefEqAndStructAttrs (), m)) - // non augmented type, [] - // non augmented type, [] - // non augmented type, [] + // non augmented type, [] + // non augmented type, [] + // non augmented type, [] | false, _, _, _, Some true, _, _, _, _ - | false, _, _, _, _, Some true, _, _, _ - | false, _, _, _, _, _, _, _, Some true -> - errorR(Error(FSComp.SR.augOnlyCertainTypesCanHaveAttrs(), m)) + | false, _, _, _, _, Some true, _, _, _ + | false, _, _, _, _, _, _, _, Some true -> errorR (Error(FSComp.SR.augOnlyCertainTypesCanHaveAttrs (), m)) // All other cases - | _ -> - errorR(Error(FSComp.SR.augInvalidAttrs(), m)) - + | _ -> errorR (Error(FSComp.SR.augInvalidAttrs (), m)) + let hasNominalInterface tcref = let ty = generalizedTyconRef g (mkLocalTyconRef tycon) ExistsHeadTypeInEntireHierarchy g amap tycon.Range ty tcref - let hasExplicitICompare = - hasNominalInterface g.tcref_System_IStructuralComparable || - hasNominalInterface g.tcref_System_IComparable + let hasExplicitICompare = + hasNominalInterface g.tcref_System_IStructuralComparable + || hasNominalInterface g.tcref_System_IComparable - let hasExplicitIGenericCompare = - hasNominalInterface g.system_GenericIComparable_tcref + let hasExplicitIGenericCompare = + hasNominalInterface g.system_GenericIComparable_tcref - let hasExplicitEquals = - tycon.HasOverride g "Equals" [g.obj_ty] || - hasNominalInterface g.tcref_System_IStructuralEquatable + let hasExplicitEquals = + tycon.HasOverride g "Equals" [ g.obj_ty ] + || hasNominalInterface g.tcref_System_IStructuralEquatable - let hasExplicitGenericEquals = - hasNominalInterface g.system_GenericIEquatable_tcref + let hasExplicitGenericEquals = hasNominalInterface g.system_GenericIEquatable_tcref - match attribs with + match attribs with // [] + any equality semantics - | _, _, Some true, _, _, _, _, _, _ when (hasExplicitEquals || hasExplicitGenericEquals) -> - warning(Error(FSComp.SR.augNoEqNeedsNoObjEquals(), m)) + | _, _, Some true, _, _, _, _, _, _ when (hasExplicitEquals || hasExplicitGenericEquals) -> + warning (Error(FSComp.SR.augNoEqNeedsNoObjEquals (), m)) // [] + any comparison semantics - | _, _, _, _, _, _, Some true, _, _ when (hasExplicitICompare || hasExplicitIGenericCompare) -> - warning(Error(FSComp.SR.augNoCompCantImpIComp(), m)) + | _, _, _, _, _, _, Some true, _, _ when (hasExplicitICompare || hasExplicitIGenericCompare) -> + warning (Error(FSComp.SR.augNoCompCantImpIComp (), m)) // [] + no explicit override Object.Equals + no explicit IStructuralEquatable - | _, _, _, Some true, _, _, _, _, _ when isImplementation && not hasExplicitEquals && not hasExplicitGenericEquals-> - errorR(Error(FSComp.SR.augCustomEqNeedsObjEquals(), m)) + | _, _, _, Some true, _, _, _, _, _ when isImplementation && not hasExplicitEquals && not hasExplicitGenericEquals -> + errorR (Error(FSComp.SR.augCustomEqNeedsObjEquals (), m)) // [] + no explicit IComparable + no explicit IStructuralComparable - | _, _, _, _, _, _, _, Some true, _ when isImplementation && not hasExplicitICompare && not hasExplicitIGenericCompare -> - errorR(Error(FSComp.SR.augCustomCompareNeedsIComp(), m)) + | _, _, _, _, _, _, _, Some true, _ when isImplementation && not hasExplicitICompare && not hasExplicitIGenericCompare -> + errorR (Error(FSComp.SR.augCustomCompareNeedsIComp (), m)) // [] + any equality semantics - | _, _, _, _, Some true, _, _, _, _ when (hasExplicitEquals || hasExplicitIGenericCompare) -> - errorR(Error(FSComp.SR.augRefEqCantHaveObjEquals(), m)) + | _, _, _, _, Some true, _, _, _, _ when (hasExplicitEquals || hasExplicitIGenericCompare) -> + errorR (Error(FSComp.SR.augRefEqCantHaveObjEquals (), m)) - | _ -> - () + | _ -> () -let TyconIsCandidateForAugmentationWithCompare (g: TcGlobals) (tycon: Tycon) = +let TyconIsCandidateForAugmentationWithCompare (g: TcGlobals) (tycon: Tycon) = // This type gets defined in prim-types, before we can add attributes to F# type definitions let isUnit = g.compilingFSharpCore && tycon.DisplayName = "Unit" - not isUnit && - not (isByrefLikeTyconRef g tycon.Range (mkLocalTyconRef tycon)) && - match getAugmentationAttribs g tycon with - // [< >] - | true, true, None, None, None, None, None, None, None - // [] - | true, true, None, None, None, Some true, None, None, Some true - // [] - | true, true, None, None, None, None, None, None, Some true -> true - // other cases - | _ -> false -let TyconIsCandidateForAugmentationWithEquals (g: TcGlobals) (tycon: Tycon) = + not isUnit + && not (isByrefLikeTyconRef g tycon.Range (mkLocalTyconRef tycon)) + && match getAugmentationAttribs g tycon with + // [< >] + | true, true, None, None, None, None, None, None, None + // [] + | true, true, None, None, None, Some true, None, None, Some true + // [] + | true, true, None, None, None, None, None, None, Some true -> true + // other cases + | _ -> false + +let TyconIsCandidateForAugmentationWithEquals (g: TcGlobals) (tycon: Tycon) = // This type gets defined in prim-types, before we can add attributes to F# type definitions let isUnit = g.compilingFSharpCore && tycon.DisplayName = "Unit" - not isUnit && - not (isByrefLikeTyconRef g tycon.Range (mkLocalTyconRef tycon)) && - match getAugmentationAttribs g tycon with - // [< >] + not isUnit + && not (isByrefLikeTyconRef g tycon.Range (mkLocalTyconRef tycon)) + && + + match getAugmentationAttribs g tycon with + // [< >] | true, _, None, None, None, None, _, _, _ - // [] - // [] + // [] + // [] | true, _, None, None, None, Some true, _, _, _ -> true - // other cases + // other cases | _ -> false -let TyconIsCandidateForAugmentationWithHash g tycon = TyconIsCandidateForAugmentationWithEquals g tycon - +let TyconIsCandidateForAugmentationWithHash g tycon = + TyconIsCandidateForAugmentationWithEquals g tycon + +//------------------------------------------------------------------------- +// Make values that represent the implementations of the +// IComparable semantics associated with F# types. //------------------------------------------------------------------------- -// Make values that represent the implementations of the -// IComparable semantics associated with F# types. -//------------------------------------------------------------------------- - -let slotImplMethod (final, c, slotsig) : ValMemberInfo = - { ImplementedSlotSigs=[slotsig] - MemberFlags= - { IsInstance=true - IsDispatchSlot=false - IsFinal=final - IsOverrideOrExplicitImpl=true - GetterOrSetterIsCompilerGenerated=false - MemberKind=SynMemberKind.Member } - IsImplemented=false - ApparentEnclosingEntity=c} - -let nonVirtualMethod c : ValMemberInfo = - { ImplementedSlotSigs=[] - MemberFlags={ IsInstance=true - IsDispatchSlot=false - IsFinal=false - IsOverrideOrExplicitImpl=false - GetterOrSetterIsCompilerGenerated=false - MemberKind=SynMemberKind.Member } - IsImplemented=false - ApparentEnclosingEntity=c} + +let slotImplMethod (final, c, slotsig) : ValMemberInfo = + { + ImplementedSlotSigs = [ slotsig ] + MemberFlags = + { + IsInstance = true + IsDispatchSlot = false + IsFinal = final + IsOverrideOrExplicitImpl = true + GetterOrSetterIsCompilerGenerated = false + MemberKind = SynMemberKind.Member + } + IsImplemented = false + ApparentEnclosingEntity = c + } + +let nonVirtualMethod mk c : ValMemberInfo = + { + ImplementedSlotSigs = [] + MemberFlags = + { + IsInstance = true + IsDispatchSlot = false + IsFinal = false + IsOverrideOrExplicitImpl = false + GetterOrSetterIsCompilerGenerated = false + MemberKind = mk + } + IsImplemented = false + ApparentEnclosingEntity = c + } let unitArg = ValReprInfo.unitArgData @@ -872,93 +1201,190 @@ let unaryArg = [ ValReprInfo.unnamedTopArg ] let tupArg = [ [ ValReprInfo.unnamedTopArg1; ValReprInfo.unnamedTopArg1 ] ] -let mkValSpec g (tcref: TyconRef) ty vis slotsig methn valTy argData = - let m = tcref.Range +let mkValSpecAux g m (tcref: TyconRef) ty vis slotsig methn valTy argData isGetter isCompGen = let tps = tcref.Typars m - let membInfo = - match slotsig with - | None -> nonVirtualMethod tcref - | Some slotsig -> - let final = isUnionTy g ty || isRecdTy g ty || isStructTy g ty - slotImplMethod(final, tcref, slotsig) + + let membInfo = + match slotsig with + | None -> + let mk = + if isGetter then + SynMemberKind.PropertyGet + else + SynMemberKind.Member + + nonVirtualMethod mk tcref + | Some slotsig -> + let final = isUnionTy g ty || isRecdTy g ty || isStructTy g ty + slotImplMethod (final, tcref, slotsig) + let inl = ValInline.Optional let args = ValReprInfo.unnamedTopArg :: argData - let valReprInfo = Some (ValReprInfo (ValReprInfo.InferTyparInfo tps, args, ValReprInfo.unnamedRetVal)) - Construct.NewVal (methn, m, None, valTy, Immutable, true, valReprInfo, vis, ValNotInRecScope, Some membInfo, NormalVal, [], inl, XmlDoc.Empty, true, false, false, false, false, false, None, Parent tcref) -let MakeValsForCompareAugmentation g (tcref: TyconRef) = + let valReprInfo = + Some(ValReprInfo(ValReprInfo.InferTyparInfo tps, args, ValReprInfo.unnamedRetVal)) + + Construct.NewVal( + methn, + m, + None, + valTy, + Immutable, + isCompGen, + valReprInfo, + vis, + ValNotInRecScope, + Some membInfo, + NormalVal, + [], + inl, + XmlDoc.Empty, + true, + false, + false, + false, + false, + false, + None, + Parent tcref + ) + +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 +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() + v + +let MakeValsForCompareAugmentation g (tcref: TyconRef) = let m = tcref.Range let _, ty = mkMinimalTy g tcref let tps = tcref.Typars m let vis = tcref.TypeReprAccessibility - mkValSpec g tcref ty vis (Some(mkIComparableCompareToSlotSig g)) "CompareTo" (tps +-> (mkCompareObjTy g ty)) unaryArg, - mkValSpec g tcref ty vis (Some(mkGenericIComparableCompareToSlotSig g ty)) "CompareTo" (tps +-> (mkCompareTy g ty)) unaryArg - + mkValSpec g tcref ty vis (Some(mkIComparableCompareToSlotSig g)) "CompareTo" (tps +-> (mkCompareObjTy g ty)) unaryArg false, + mkValSpec g tcref ty vis (Some(mkGenericIComparableCompareToSlotSig g ty)) "CompareTo" (tps +-> (mkCompareTy g ty)) unaryArg false + let MakeValsForCompareWithComparerAugmentation g (tcref: TyconRef) = let m = tcref.Range let _, ty = mkMinimalTy g tcref let tps = tcref.Typars m let vis = tcref.TypeReprAccessibility - mkValSpec g tcref ty vis (Some(mkIStructuralComparableCompareToSlotSig g)) "CompareTo" (tps +-> (mkCompareWithComparerTy g ty)) tupArg -let MakeValsForEqualsAugmentation g (tcref: TyconRef) = + mkValSpec + g + tcref + ty + vis + (Some(mkIStructuralComparableCompareToSlotSig g)) + "CompareTo" + (tps +-> (mkCompareWithComparerTy g ty)) + tupArg + false + +let MakeValsForEqualsAugmentation g (tcref: TyconRef) = let m = tcref.Range let _, ty = mkMinimalTy g tcref let vis = tcref.TypeReprAccessibility let tps = tcref.Typars m - let objEqualsVal = mkValSpec g tcref ty vis (Some(mkEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsObjTy g ty)) unaryArg - let nocEqualsVal = mkValSpec g tcref ty vis (if tcref.Deref.IsFSharpException then None else Some(mkGenericIEquatableEqualsSlotSig g ty)) "Equals" (tps +-> (mkEqualsTy g ty)) unaryArg + let objEqualsVal = + mkValSpec g tcref ty vis (Some(mkEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsObjTy g ty)) unaryArg false + + let nocEqualsVal = + mkValSpec + g + tcref + ty + vis + (if tcref.Deref.IsFSharpException then + None + else + Some(mkGenericIEquatableEqualsSlotSig g ty)) + "Equals" + (tps +-> (mkEqualsTy g ty)) + unaryArg + false + objEqualsVal, nocEqualsVal - + let MakeValsForEqualityWithComparerAugmentation g (tcref: TyconRef) = let _, ty = mkMinimalTy g tcref let vis = tcref.TypeReprAccessibility let tps = tcref.Typars tcref.Range - let objGetHashCodeVal = mkValSpec g tcref ty vis (Some(mkGetHashCodeSlotSig g)) "GetHashCode" (tps +-> (mkHashTy g ty)) unitArg - let withcGetHashCodeVal = mkValSpec g tcref ty vis (Some(mkIStructuralEquatableGetHashCodeSlotSig g)) "GetHashCode" (tps +-> (mkHashWithComparerTy g ty)) unaryArg - let withcEqualsVal = mkValSpec g tcref ty vis (Some(mkIStructuralEquatableEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsWithComparerTy g ty)) tupArg + + let objGetHashCodeVal = + mkValSpec g tcref ty vis (Some(mkGetHashCodeSlotSig g)) "GetHashCode" (tps +-> (mkHashTy g ty)) unitArg false + + let withcGetHashCodeVal = + mkValSpec + g + tcref + ty + vis + (Some(mkIStructuralEquatableGetHashCodeSlotSig g)) + "GetHashCode" + (tps +-> (mkHashWithComparerTy g ty)) + unaryArg + false + + let withcEqualsVal = + mkValSpec g tcref ty vis (Some(mkIStructuralEquatableEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsWithComparerTy g ty)) tupArg false + objGetHashCodeVal, withcGetHashCodeVal, withcEqualsVal -let MakeBindingsForCompareAugmentation g (tycon: Tycon) = - let tcref = mkLocalTyconRef tycon +let MakeBindingsForCompareAugmentation g (tycon: Tycon) = + let tcref = mkLocalTyconRef tycon let m = tycon.Range let tps = tycon.Typars m + let mkCompare comparef = - match tycon.GeneratedCompareToValues with - | None -> [] - | Some (vref1, vref2) -> + match tycon.GeneratedCompareToValues with + | None -> [] + | Some(vref1, vref2) -> let vspec1 = vref1.Deref let vspec2 = vref2.Deref (* this is the body of the override *) - let rhs1 = - let tinst, ty = mkMinimalTy g tcref - - let thisv, thise = mkThisVar g m ty - let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty - let comparee = - if isUnitTy g ty then mkZero g m else - let thate = mkCoerceExpr (thatobje, ty, m, g.obj_ty) - - mkApps g ((exprForValRef m vref2, vref2.Type), (if isNil tinst then [] else [tinst]), [thise;thate], m) - - mkLambdas g m tps [thisv; thatobjv] (comparee, g.int_ty) - let rhs2 = - let thisv, thatv, comparee = comparef g tcref tycon - mkLambdas g m tps [thisv; thatv] (comparee, g.int_ty) + let rhs1 = + let tinst, ty = mkMinimalTy g tcref + + let thisv, thise = mkThisVar g m ty + let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty + + let comparee = + if isUnitTy g ty then + mkZero g m + else + let thate = mkCoerceExpr (thatobje, ty, m, g.obj_ty) + + mkApps g ((exprForValRef m vref2, vref2.Type), (if isNil tinst then [] else [ tinst ]), [ thise; thate ], m) + + mkLambdas g m tps [ thisv; thatobjv ] (comparee, g.int_ty) + + let rhs2 = + let thisv, thatv, comparee = comparef g tcref tycon + mkLambdas g m tps [ thisv; thatv ] (comparee, g.int_ty) + [ // This one must come first because it may be inlined into the second - mkCompGenBind vspec2 rhs2 - mkCompGenBind vspec1 rhs1; ] - if tycon.IsUnionTycon then mkCompare mkUnionCompare - elif tycon.IsRecordTycon || tycon.IsStructOrEnumTycon then mkCompare mkRecdCompare - else [] - + mkCompGenBind vspec2 rhs2 + mkCompGenBind vspec1 rhs1 + ] + + if tycon.IsUnionTycon then + mkCompare mkUnionCompare + elif tycon.IsRecordTycon || tycon.IsStructOrEnumTycon then + mkCompare mkRecdCompare + else + [] + let MakeBindingsForCompareWithComparerAugmentation g (tycon: Tycon) = let tcref = mkLocalTyconRef tycon let m = tycon.Range let tps = tycon.Typars m - let mkCompare comparef = + + let mkCompare comparef = match tycon.GeneratedCompareToWithComparerValues with | None -> [] | Some vref -> @@ -974,125 +1400,218 @@ let MakeBindingsForCompareWithComparerAugmentation g (tycon: Tycon) = let rhs = let comparee = comparef g tcref tycon (thisv, thise) (thatobjv, thate) compe let comparee = if isUnitTy g ty then mkZero g m else comparee - mkMultiLambdas g m tps [[thisv]; [thatobjv; compv]] (comparee, g.int_ty) - [mkCompGenBind vspec rhs] - if tycon.IsUnionTycon then mkCompare mkUnionCompareWithComparer - elif tycon.IsRecordTycon || tycon.IsStructOrEnumTycon then mkCompare mkRecdCompareWithComparer - else [] - + mkMultiLambdas g m tps [ [ thisv ]; [ thatobjv; compv ] ] (comparee, g.int_ty) + + [ mkCompGenBind vspec rhs ] + + if tycon.IsUnionTycon then + mkCompare mkUnionCompareWithComparer + elif tycon.IsRecordTycon || tycon.IsStructOrEnumTycon then + mkCompare mkRecdCompareWithComparer + else + [] + let MakeBindingsForEqualityWithComparerAugmentation (g: TcGlobals) (tycon: Tycon) = let tcref = mkLocalTyconRef tycon let m = tycon.Range let tps = tycon.Typars m + let mkStructuralEquatable hashf equalsf = match tycon.GeneratedHashAndEqualsWithComparerValues with | None -> [] - | Some (objGetHashCodeVal, withcGetHashCodeVal, withcEqualsVal) -> - + | Some(objGetHashCodeVal, withcGetHashCodeVal, withcEqualsVal) -> + // build the hash rhs let withcGetHashCodeExpr = let compv, compe = mkCompGenLocal m "comp" g.IEqualityComparer_ty // Special case List type to avoid StackOverflow exception , call custom hash code instead - let thisv,hashe = - if tyconRefEq g tcref g.list_tcr_canon && tycon.HasMember g "CustomHashCode" [g.IEqualityComparer_ty] then - let customCodeVal = (tycon.TryGetMember g "CustomHashCode" [g.IEqualityComparer_ty]).Value + let thisv, hashe = + if + tyconRefEq g tcref g.list_tcr_canon + && tycon.HasMember g "CustomHashCode" [ g.IEqualityComparer_ty ] + then + let customCodeVal = + (tycon.TryGetMember g "CustomHashCode" [ g.IEqualityComparer_ty ]).Value + let tinst, ty = mkMinimalTy g tcref - let thisv, thise = mkThisVar g m ty - thisv,mkApps g ((exprForValRef m customCodeVal, customCodeVal.Type), (if isNil tinst then [] else [tinst]), [thise; compe], m) - else + let thisv, thise = mkThisVar g m ty + + thisv, + mkApps + g + ((exprForValRef m customCodeVal, customCodeVal.Type), + (if isNil tinst then [] else [ tinst ]), + [ thise; compe ], + m) + else hashf g tcref tycon compe - mkLambdas g m tps [thisv; compv] (hashe, g.int_ty) - + + mkLambdas g m tps [ thisv; compv ] (hashe, g.int_ty) + // build the equals rhs let withcEqualsExpr = let _tinst, ty = mkMinimalTy g tcref let thisv, thise = mkThisVar g m ty let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty - let thatv, thate = mkCompGenLocal m "that" ty + 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 - mkMultiLambdas g m tps [[thisv];[thatobjv; compv]] (equalse, g.bool_ty) + mkMultiLambdas g m tps [ [ thisv ]; [ thatobjv; compv ] ] (equalse, g.bool_ty) - let objGetHashCodeExpr = + let objGetHashCodeExpr = let tinst, ty = mkMinimalTy g tcref - - let thisv, thise = mkThisVar g m ty + + let thisv, thise = mkThisVar g m ty let unitv, _ = mkCompGenLocal m "unitArg" g.unit_ty - let hashe = - if isUnitTy g ty then mkZero g m else - - let compe = mkILCallGetEqualityComparer g m - mkApps g ((exprForValRef m withcGetHashCodeVal, withcGetHashCodeVal.Type), (if isNil tinst then [] else [tinst]), [thise; compe], m) - - mkLambdas g m tps [thisv; unitv] (hashe, g.int_ty) - - [(mkCompGenBind withcGetHashCodeVal.Deref withcGetHashCodeExpr) - (mkCompGenBind objGetHashCodeVal.Deref objGetHashCodeExpr) - (mkCompGenBind withcEqualsVal.Deref withcEqualsExpr)] - if tycon.IsUnionTycon then mkStructuralEquatable mkUnionHashWithComparer mkUnionEqualityWithComparer - elif (tycon.IsRecordTycon || tycon.IsStructOrEnumTycon) then mkStructuralEquatable mkRecdHashWithComparer mkRecdEqualityWithComparer - elif tycon.IsFSharpException then mkStructuralEquatable mkExnHashWithComparer mkExnEqualityWithComparer - else [] - -let MakeBindingsForEqualsAugmentation (g: TcGlobals) (tycon: Tycon) = - let tcref = mkLocalTyconRef tycon - let m = tycon.Range + + let hashe = + if isUnitTy g ty then + mkZero g m + else + + let compe = mkILCallGetEqualityComparer g m + + mkApps + g + ((exprForValRef m withcGetHashCodeVal, withcGetHashCodeVal.Type), + (if isNil tinst then [] else [ tinst ]), + [ thise; compe ], + m) + + mkLambdas g m tps [ thisv; unitv ] (hashe, g.int_ty) + + [ + (mkCompGenBind withcGetHashCodeVal.Deref withcGetHashCodeExpr) + (mkCompGenBind objGetHashCodeVal.Deref objGetHashCodeExpr) + (mkCompGenBind withcEqualsVal.Deref withcEqualsExpr) + ] + + if tycon.IsUnionTycon then + mkStructuralEquatable mkUnionHashWithComparer mkUnionEqualityWithComparer + elif (tycon.IsRecordTycon || tycon.IsStructOrEnumTycon) then + mkStructuralEquatable mkRecdHashWithComparer mkRecdEqualityWithComparer + elif tycon.IsFSharpException then + mkStructuralEquatable mkExnHashWithComparer mkExnEqualityWithComparer + else + [] + +let MakeBindingsForEqualsAugmentation (g: TcGlobals) (tycon: Tycon) = + let tcref = mkLocalTyconRef tycon + let m = tycon.Range let tps = tycon.Typars m + let mkEquals equalsf = - match tycon.GeneratedHashAndEqualsValues with - | None -> [] - | Some (objEqualsVal, nocEqualsVal) -> - // this is the body of the real strongly typed implementation - let nocEqualsExpr = - let thisv, thatv, equalse = equalsf g tcref tycon - mkLambdas g m tps [thisv;thatv] (equalse, g.bool_ty) - - // this is the body of the override - let objEqualsExpr = - let tinst, ty = mkMinimalTy g tcref - - let thisv, thise = mkThisVar g m ty - let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty - let equalse = - if isUnitTy g ty then mkTrue g m else - - let thatv, thate = mkCompGenLocal m "that" ty - mkIsInstConditional g m ty thatobje thatv - (mkApps g ((exprForValRef m nocEqualsVal, nocEqualsVal.Type), (if isNil tinst then [] else [tinst]), [thise;thate], m)) - (mkFalse g m) - - mkLambdas g m tps [thisv;thatobjv] (equalse, g.bool_ty) - - [ mkCompGenBind nocEqualsVal.Deref nocEqualsExpr - mkCompGenBind objEqualsVal.Deref objEqualsExpr ] - if tycon.IsFSharpException then mkEquals mkExnEquality - elif tycon.IsUnionTycon then mkEquals mkUnionEquality - elif tycon.IsRecordTycon || tycon.IsStructOrEnumTycon then mkEquals mkRecdEquality - else [] + match tycon.GeneratedHashAndEqualsValues with + | None -> [] + | Some(objEqualsVal, nocEqualsVal) -> + // this is the body of the real strongly typed implementation + let nocEqualsExpr = + let thisv, thatv, equalse = equalsf g tcref tycon + mkLambdas g m tps [ thisv; thatv ] (equalse, g.bool_ty) + + // this is the body of the override + let objEqualsExpr = + let tinst, ty = mkMinimalTy g tcref + + let thisv, thise = mkThisVar g m ty + let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty + + let equalse = + if isUnitTy g ty then + mkTrue g m + else + + let thatv, thate = mkCompGenLocal m "that" ty + + mkIsInstConditional + g + m + ty + thatobje + thatv + (mkApps + g + ((exprForValRef m nocEqualsVal, nocEqualsVal.Type), + (if isNil tinst then [] else [ tinst ]), + [ thise; thate ], + m)) + (mkFalse g m) + + mkLambdas g m tps [ thisv; thatobjv ] (equalse, g.bool_ty) + + [ + mkCompGenBind nocEqualsVal.Deref nocEqualsExpr + mkCompGenBind objEqualsVal.Deref objEqualsExpr + ] + + if tycon.IsFSharpException then + mkEquals mkExnEquality + elif tycon.IsUnionTycon then + mkEquals mkUnionEquality + elif tycon.IsRecordTycon || tycon.IsStructOrEnumTycon then + mkEquals mkRecdEquality + else + [] let rec TypeDefinitelyHasEquality g ty = let appTy = tryAppTy g ty + match appTy with - | ValueSome(tcref,_) when HasFSharpAttribute g g.attrib_NoEqualityAttribute tcref.Attribs -> - false + | ValueSome(tcref, _) when HasFSharpAttribute g g.attrib_NoEqualityAttribute tcref.Attribs -> false | _ -> - if isTyparTy g ty && - (destTyparTy g ty).Constraints |> List.exists (function TyparConstraint.SupportsEquality _ -> true | _ -> false) then + if + isTyparTy g ty + && (destTyparTy g ty).Constraints + |> List.exists (function + | TyparConstraint.SupportsEquality _ -> true + | _ -> false) + then true - else - match ty with - | SpecialEquatableHeadType g tinst -> - tinst |> List.forall (TypeDefinitelyHasEquality g) - | SpecialNotEquatableHeadType g _ -> - false - | _ -> - // The type is equatable because it has Object.Equals(...) - match appTy with - | ValueSome(tcref,tinst) -> - // Give a good error for structural types excluded from the equality relation because of their fields - not (TyconIsCandidateForAugmentationWithEquals g tcref.Deref && Option.isNone tcref.GeneratedHashAndEqualsWithComparerValues) && - // Check the (possibly inferred) structural dependencies - (tinst, tcref.TyparsNoRange) - ||> List.lengthsEqAndForall2 (fun ty tp -> not tp.EqualityConditionalOn || TypeDefinitelyHasEquality g ty) - | _ -> false + else + match ty with + | SpecialEquatableHeadType g tinst -> tinst |> List.forall (TypeDefinitelyHasEquality g) + | SpecialNotEquatableHeadType g _ -> false + | _ -> + // The type is equatable because it has Object.Equals(...) + match appTy with + | ValueSome(tcref, tinst) -> + // Give a good error for structural types excluded from the equality relation because of their fields + not ( + TyconIsCandidateForAugmentationWithEquals g tcref.Deref + && Option.isNone tcref.GeneratedHashAndEqualsWithComparerValues + ) + && + // Check the (possibly inferred) structural dependencies + (tinst, tcref.TyparsNoRange) + ||> List.lengthsEqAndForall2 (fun ty tp -> not tp.EqualityConditionalOn || TypeDefinitelyHasEquality g ty) + | _ -> false + +let MakeValsForUnionAugmentation g (tcref: TyconRef) = + let m = tcref.Range + let _, tmty = mkMinimalTy g tcref + let vis = tcref.TypeReprAccessibility + let tps = tcref.Typars m + + tcref.UnionCasesAsList + |> List.map (fun uc -> + // Unlike other generated items, the 'IsABC' propeties 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 + + g.AddValGeneratedAttributes v m + v) + +let MakeBindingsForUnionAugmentation g (tycon: Tycon) (vals: ValRef list) = + let tcref = mkLocalTyconRef tycon + let m = tycon.Range + let tps = tycon.Typars m + let tinst, ty = mkMinimalTy g tcref + let thisv, thise = mkThisVar g m ty + let unitv, _ = mkCompGenLocal m "unitArg" g.unit_ty + + (tcref.UnionCasesAsRefList, vals) + ||> List.map2 (fun ucr v -> + let isdata = mkUnionCaseTest g (thise, ucr, tinst, m) + let expr = mkLambdas g m tps [ thisv; unitv ] (isdata, g.bool_ty) + mkCompGenBind v.Deref expr) diff --git a/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fsi b/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fsi index ea991b0340..5fa185c046 100644 --- a/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fsi +++ b/src/fcs-fable/src/Compiler/Checking/AugmentWithHashCompare.fsi @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. /// Generate the hash/compare functions we add to user-defined types by default. -module internal FSharp.Compiler.AugmentWithHashCompare +module internal FSharp.Compiler.AugmentTypeDefinitions open FSharp.Compiler open FSharp.Compiler.TypedTree @@ -34,3 +34,7 @@ val MakeBindingsForEqualityWithComparerAugmentation: TcGlobals -> Tycon -> Bindi /// This predicate can be used once type inference is complete, before then it is an approximation /// that doesn't assert any new constraints val TypeDefinitelyHasEquality: TcGlobals -> TType -> bool + +val MakeValsForUnionAugmentation: TcGlobals -> TyconRef -> Val list + +val MakeBindingsForUnionAugmentation: TcGlobals -> Tycon -> ValRef list -> Binding list diff --git a/src/fcs-fable/src/Compiler/Checking/CheckBasics.fsi b/src/fcs-fable/src/Compiler/Checking/CheckBasics.fsi index 24c4fe0a42..e3ad581cb6 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckBasics.fsi +++ b/src/fcs-fable/src/Compiler/Checking/CheckBasics.fsi @@ -270,51 +270,44 @@ type TcFileState = argInfoCache: ConcurrentDictionary<(string * range), ArgReprInfo> // forward call - TcPat: WarnOnUpperFlag - -> TcFileState - -> TcEnv - -> PrelimValReprInfo option - -> TcPatValFlags - -> TcPatLinearEnv - -> TType - -> SynPat - -> (TcPatPhase2Input -> Pattern) * TcPatLinearEnv + TcPat: + WarnOnUpperFlag + -> TcFileState + -> TcEnv + -> PrelimValReprInfo option + -> TcPatValFlags + -> TcPatLinearEnv + -> TType + -> SynPat + -> (TcPatPhase2Input -> Pattern) * TcPatLinearEnv // forward call - TcSimplePats: TcFileState - -> bool - -> CheckConstraints - -> TType - -> TcEnv - -> TcPatLinearEnv - -> SynSimplePats - -> string list * TcPatLinearEnv + TcSimplePats: + TcFileState + -> bool + -> CheckConstraints + -> TType + -> TcEnv + -> TcPatLinearEnv + -> SynSimplePats + -> string list * TcPatLinearEnv // forward call - TcSequenceExpressionEntry: TcFileState - -> TcEnv - -> OverallTy - -> UnscopedTyparEnv - -> bool * SynExpr - -> range - -> Expr * UnscopedTyparEnv + TcSequenceExpressionEntry: + TcFileState -> TcEnv -> OverallTy -> UnscopedTyparEnv -> bool * SynExpr -> range -> Expr * UnscopedTyparEnv // forward call - TcArrayOrListComputedExpression: TcFileState - -> TcEnv - -> OverallTy - -> UnscopedTyparEnv - -> bool * SynExpr - -> range - -> Expr * UnscopedTyparEnv + TcArrayOrListComputedExpression: + TcFileState -> TcEnv -> OverallTy -> UnscopedTyparEnv -> bool * SynExpr -> range -> Expr * UnscopedTyparEnv // forward call - TcComputationExpression: TcFileState - -> TcEnv - -> OverallTy - -> UnscopedTyparEnv - -> range * Expr * TType * SynExpr - -> Expr * UnscopedTyparEnv + TcComputationExpression: + TcFileState + -> TcEnv + -> OverallTy + -> UnscopedTyparEnv + -> range * Expr * TType * SynExpr + -> Expr * UnscopedTyparEnv } static member Create: @@ -329,9 +322,34 @@ type TcFileState = tcVal: TcValF * isInternalTestSpanStackReferring: bool * diagnosticOptions: FSharpDiagnosticOptions * - tcPat: (WarnOnUpperFlag -> TcFileState -> TcEnv -> PrelimValReprInfo option -> TcPatValFlags -> TcPatLinearEnv -> TType -> SynPat -> (TcPatPhase2Input -> Pattern) * TcPatLinearEnv) * - tcSimplePats: (TcFileState -> bool -> CheckConstraints -> TType -> TcEnv -> TcPatLinearEnv -> SynSimplePats -> string list * TcPatLinearEnv) * - tcSequenceExpressionEntry: (TcFileState -> TcEnv -> OverallTy -> UnscopedTyparEnv -> bool * SynExpr -> range -> Expr * UnscopedTyparEnv) * - tcArrayOrListSequenceExpression: (TcFileState -> TcEnv -> OverallTy -> UnscopedTyparEnv -> bool * SynExpr -> range -> Expr * UnscopedTyparEnv) * - tcComputationExpression: (TcFileState -> TcEnv -> OverallTy -> UnscopedTyparEnv -> range * Expr * TType * SynExpr -> Expr * UnscopedTyparEnv) -> + tcPat: + (WarnOnUpperFlag + -> TcFileState + -> TcEnv + -> PrelimValReprInfo option + -> TcPatValFlags + -> TcPatLinearEnv + -> TType + -> SynPat + -> (TcPatPhase2Input -> Pattern) * TcPatLinearEnv) * + tcSimplePats: + (TcFileState + -> bool + -> CheckConstraints + -> TType + -> TcEnv + -> TcPatLinearEnv + -> SynSimplePats + -> string list * TcPatLinearEnv) * + tcSequenceExpressionEntry: + (TcFileState -> TcEnv -> OverallTy -> UnscopedTyparEnv -> bool * SynExpr -> range -> Expr * UnscopedTyparEnv) * + tcArrayOrListSequenceExpression: + (TcFileState -> TcEnv -> OverallTy -> UnscopedTyparEnv -> bool * SynExpr -> range -> Expr * UnscopedTyparEnv) * + tcComputationExpression: + (TcFileState + -> TcEnv + -> OverallTy + -> UnscopedTyparEnv + -> range * Expr * TType * SynExpr + -> Expr * UnscopedTyparEnv) -> TcFileState diff --git a/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fs b/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fs index 90ef6e35c9..1394b2c1a9 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fs +++ b/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fs @@ -58,7 +58,7 @@ let (|JoinRelation|_|) cenv env (expr: SynExpr) = let isOpName opName vref s = (s = opName) && - match ResolveExprLongIdent cenv.tcSink cenv.nameResolver m ad env.eNameResEnv TypeNameResolutionInfo.Default [ident(opName, m)] with + 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 diff --git a/src/fcs-fable/src/Compiler/Checking/CheckDeclarations.fs b/src/fcs-fable/src/Compiler/Checking/CheckDeclarations.fs index 7cbc0358a2..09704614b8 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckDeclarations.fs +++ b/src/fcs-fable/src/Compiler/Checking/CheckDeclarations.fs @@ -363,7 +363,7 @@ let ImplicitlyOpenOwnNamespace tcSink g amap scopem enclosingNamespacePath (env: match enclosingNamespacePathToOpen with | id :: rest -> let ad = env.AccessRights - match ResolveLongIdentAsModuleOrNamespace tcSink amap scopem true OpenQualified env.eNameResEnv ad id rest true with + match ResolveLongIdentAsModuleOrNamespace tcSink amap scopem true OpenQualified env.eNameResEnv ad id rest true ShouldNotifySink.Yes with | Result modrefs -> let modrefs = List.map p23 modrefs let lid = SynLongIdent(enclosingNamespacePathToOpen, [] , []) @@ -423,8 +423,9 @@ module TcRecdUnionAndEnumDeclarations = 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, nameGenerated, ty, isMutable, xmldoc, vis, m) = + 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 attrsForProperty, attrsForField = attrs |> List.partition (fun (attrTargets, _) -> (attrTargets &&& AttributeTargets.Property) <> enum 0) let attrsForProperty = (List.map snd attrsForProperty) @@ -458,18 +459,20 @@ module TcRecdUnionAndEnumDeclarations = let checkXmlDocs = cenv.diagnosticOptions.CheckXmlDocs let xmlDoc = xmldoc.ToXmlDoc(checkXmlDocs, Some []) - TcFieldDecl cenv env parent false tpenv (isStatic, attribs, id, idOpt.IsNone, ty, isMutable, xmlDoc, vis, m) + TcFieldDecl cenv env parent false tpenv (isStatic, attribs, id, idOpt.IsNone, ty, isMutable, xmlDoc, vis) let TcNamedFieldDecl cenv env parent isIncrClass tpenv (SynField(Attributes attribs, isStatic, id, ty, isMutable, xmldoc, vis, m, _)) = match id with - | None -> error (Error(FSComp.SR.tcFieldRequiresName(), m)) + | None -> + errorR (Error(FSComp.SR.tcFieldRequiresName(), m)) + None | Some id -> let checkXmlDocs = cenv.diagnosticOptions.CheckXmlDocs let xmlDoc = xmldoc.ToXmlDoc(checkXmlDocs, Some []) - TcFieldDecl cenv env parent isIncrClass tpenv (isStatic, attribs, id, false, ty, isMutable, xmlDoc, vis, m) + Some(TcFieldDecl cenv env parent isIncrClass tpenv (isStatic, attribs, id, false, ty, isMutable, xmlDoc, vis)) let TcNamedFieldDecls cenv env parent isIncrClass tpenv fields = - fields |> List.map (TcNamedFieldDecl cenv env parent isIncrClass tpenv) + fields |> List.choose (TcNamedFieldDecl cenv env parent isIncrClass tpenv) //------------------------------------------------------------------------- // Bind other elements of type definitions (constructors etc.) @@ -518,14 +521,19 @@ module TcRecdUnionAndEnumDeclarations = match args with | SynUnionCaseKind.Fields flds -> let nFields = flds.Length - let rfields = flds |> List.mapi (fun i (SynField (idOpt = idOpt) as fld) -> - 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) - TcNamedFieldDecl cenv env parent false tpenv fld - | _ -> - TcAnonFieldDecl cenv env parent tpenv (mkUnionCaseFieldName nFields i) fld) + let rfields = + flds + |> List.mapi (fun i (SynField (idOpt = idOpt) as fld) -> + 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) + TcNamedFieldDecl cenv env parent false tpenv fld + | _ -> + Some(TcAnonFieldDecl cenv env parent tpenv (mkUnionCaseFieldName nFields i) fld) + ) + |> List.choose (fun x -> x) + ValidateFieldNames(flds, rfields) rfields, thisTy @@ -639,7 +647,7 @@ let TcOpenLidAndPermitAutoResolve tcSink (env: TcEnv) amap (longId : Ident list) | [] -> [] | id :: rest -> let m = longId |> List.map (fun id -> id.idRange) |> List.reduce unionRanges - match ResolveLongIdentAsModuleOrNamespace tcSink amap m true OpenQualified env.NameEnv ad id rest true with + match ResolveLongIdentAsModuleOrNamespace tcSink amap m true OpenQualified env.NameEnv ad id rest true ShouldNotifySink.Yes with | Result res -> res | Exception err -> errorR(err); [] @@ -733,6 +741,140 @@ let MakeSafeInitField (cenv: cenv) env m isStatic = let taccess = TAccess [env.eAccessPath] Construct.NewRecdField isStatic None id false cenv.g.int_ty true true [] [] XmlDoc.Empty taccess true +//------------------------------------------------------------------------- +// Build augmentation declarations +//------------------------------------------------------------------------- + +module AddAugmentationDeclarations = + let tcaugHasNominalInterface g (tcaug: TyconAugmentation) tcref = + tcaug.tcaug_interfaces |> List.exists (fun (x, _, _) -> + match tryTcrefOfAppTy g x with + | ValueSome tcref2 when tyconRefEq g tcref2 tcref -> true + | _ -> false) + + let AddGenericCompareDeclarations (cenv: cenv) (env: TcEnv) (scSet: Set) (tycon: Tycon) = + let g = cenv.g + if AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithCompare g tycon && scSet.Contains tycon.Stamp then + let tcref = mkLocalTyconRef tycon + 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 hasExplicitIComparable = tycon.HasInterface g g.mk_IComparable_ty + let hasExplicitGenericIComparable = tcaugHasNominalInterface g tcaug g.system_GenericIComparable_tcref + let hasExplicitIStructuralComparable = tycon.HasInterface g g.mk_IStructuralComparable_ty + + if hasExplicitIComparable then + errorR(Error(FSComp.SR.tcImplementsIComparableExplicitly(tycon.DisplayName), m)) + + elif hasExplicitGenericIComparable then + errorR(Error(FSComp.SR.tcImplementsGenericIComparableExplicitly(tycon.DisplayName), m)) + elif hasExplicitIStructuralComparable then + errorR(Error(FSComp.SR.tcImplementsIStructuralComparableExplicitly(tycon.DisplayName), m)) + else + let hasExplicitGenericIComparable = tycon.HasInterface g genericIComparableTy + let cvspec1, cvspec2 = AugmentTypeDefinitions.MakeValsForCompareAugmentation g tcref + let cvspec3 = AugmentTypeDefinitions.MakeValsForCompareWithComparerAugmentation g tcref + + PublishInterface cenv env.DisplayEnv tcref m true g.mk_IStructuralComparable_ty + PublishInterface cenv env.DisplayEnv tcref m true g.mk_IComparable_ty + if not tycon.IsFSharpException && not hasExplicitGenericIComparable then + PublishInterface cenv env.DisplayEnv tcref m true genericIComparableTy + tcaug.SetCompare (mkLocalValRef cvspec1, mkLocalValRef cvspec2) + tcaug.SetCompareWith (mkLocalValRef cvspec3) + PublishValueDefn cenv env ModuleOrMemberBinding cvspec1 + PublishValueDefn cenv env ModuleOrMemberBinding cvspec2 + PublishValueDefn cenv env ModuleOrMemberBinding cvspec3 + + let AddGenericEqualityWithComparerDeclarations (cenv: cenv) (env: TcEnv) (seSet: Set) (tycon: Tycon) = + let g = cenv.g + if AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithEquals g tycon && seSet.Contains tycon.Stamp then + let tcref = mkLocalTyconRef tycon + let tcaug = tycon.TypeContents + let m = tycon.Range + + let hasExplicitIStructuralEquatable = tycon.HasInterface g g.mk_IStructuralEquatable_ty + + if hasExplicitIStructuralEquatable then + errorR(Error(FSComp.SR.tcImplementsIStructuralEquatableExplicitly(tycon.DisplayName), m)) + else + let evspec1, evspec2, evspec3 = 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 + + let AddGenericCompareBindings (cenv: cenv) (tycon: Tycon) = + if (* AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithCompare cenv.g tycon && *) Option.isSome tycon.GeneratedCompareToValues then + AugmentTypeDefinitions.MakeBindingsForCompareAugmentation cenv.g tycon + else + [] + + let AddGenericCompareWithComparerBindings (cenv: cenv) (tycon: Tycon) = + if (* AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithCompare cenv.g tycon && *) Option.isSome tycon.GeneratedCompareToWithComparerValues then + (AugmentTypeDefinitions.MakeBindingsForCompareWithComparerAugmentation cenv.g tycon) + else + [] + + let AddGenericEqualityWithComparerBindings (cenv: cenv) (tycon: Tycon) = + if AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithEquals cenv.g tycon && Option.isSome tycon.GeneratedHashAndEqualsWithComparerValues then + (AugmentTypeDefinitions.MakeBindingsForEqualityWithComparerAugmentation cenv.g tycon) + else + [] + + let AddGenericHashAndComparisonDeclarations (cenv: cenv) (env: TcEnv) scSet seSet tycon = + AddGenericCompareDeclarations cenv env scSet tycon + AddGenericEqualityWithComparerDeclarations cenv env seSet tycon + + let AddGenericHashAndComparisonBindings cenv tycon = + AddGenericCompareBindings cenv tycon @ AddGenericCompareWithComparerBindings cenv tycon @ AddGenericEqualityWithComparerBindings cenv tycon + + // We can only add the Equals override after we've done the augmentation because we have to wait until + // tycon.HasOverride can give correct results + let AddGenericEqualityBindings (cenv: cenv) (env: TcEnv) tycon = + let g = cenv.g + if AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithEquals g tycon then + let tcref = mkLocalTyconRef tycon + let tcaug = tycon.TypeContents + let ty = if tcref.Deref.IsFSharpException then g.exn_ty else generalizedTyconRef g tcref + 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 hasExplicitGenericIEquatable = tcaugHasNominalInterface g tcaug g.system_GenericIEquatable_tcref + + if hasExplicitGenericIEquatable then + errorR(Error(FSComp.SR.tcImplementsIEquatableExplicitly(tycon.DisplayName), m)) + + // Note: only provide the equals method if Equals is not implemented explicitly, and + // we're actually generating Hash/Equals for this type + if not hasExplicitObjectEqualsOverride && + Option.isSome tycon.GeneratedHashAndEqualsWithComparerValues then + + 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]) + PublishValueDefn cenv env ModuleOrMemberBinding vspec1 + PublishValueDefn cenv env ModuleOrMemberBinding vspec2 + AugmentTypeDefinitions.MakeBindingsForEqualsAugmentation g tycon + else [] + else [] + + let ShouldAugmentUnion (g: TcGlobals) (tycon: Tycon) = + g.langVersion.SupportsFeature LanguageFeature.UnionIsPropertiesVisible && + HasDefaultAugmentationAttribute g (mkLocalTyconRef tycon) + + let AddUnionAugmentationValues (cenv: cenv) (env: TcEnv) tycon = + let tcref = mkLocalTyconRef tycon + let vals = AugmentTypeDefinitions.MakeValsForUnionAugmentation cenv.g tcref + for v in vals do + PublishValueDefnMaybeInclCompilerGenerated cenv env true ModuleOrMemberBinding v + vals + // Checking of mutually recursive types, members and 'let' bindings in classes // // Technique: multiple passes. @@ -997,25 +1139,30 @@ module MutRecBindingChecking = for b1, b2 in List.pairwise defnAs do match b1, b2 with | TyconBindingPhase2A.Phase2AMember { - SyntacticBinding = NormalizedBinding(valSynData = SynValData(transformedFromProperty = Some getPropertyIdent; memberFlags = Some mf)) + SyntacticBinding = NormalizedBinding(pat = SynPat.Named(ident = SynIdent(ident = getIdent)); valSynData = SynValData(memberFlags = Some mf)) RecBindingInfo = RecursiveBindingInfo(vspec = vGet) }, TyconBindingPhase2A.Phase2AMember { - SyntacticBinding = NormalizedBinding(valSynData = SynValData(transformedFromProperty = Some setPropertyIdent)) + SyntacticBinding = NormalizedBinding(pat = SynPat.Named(ident = SynIdent(ident = setIdent))) RecBindingInfo = RecursiveBindingInfo(vspec = vSet) - } when Range.equals getPropertyIdent.idRange setPropertyIdent.idRange -> + } when Range.equals getIdent.idRange setIdent.idRange -> match vGet.ApparentEnclosingEntity with | ParentNone -> () | Parent parentRef -> - let apparentEnclosingType = generalizedTyconRef g parentRef - let vGet, vSet = if mf.MemberKind = SynMemberKind.PropertyGet then vGet, vSet else vSet, vGet - let item = - Item.Property( - getPropertyIdent.idText, - [ PropInfo.FSProp(g, apparentEnclosingType, Some (mkLocalValRef vGet), Some (mkLocalValRef vSet)) ], - Some getPropertyIdent.idRange - ) - CallNameResolutionSink cenv.tcSink (getPropertyIdent.idRange, envForTycon.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, envForTycon.eAccessRights) + let apparentEnclosingType = generalizedTyconRef g parentRef + let vGet, vSet = if mf.MemberKind = SynMemberKind.PropertyGet then vGet, vSet else vSet, vGet + let propertyName = + if vGet.Id.idText.StartsWith("get_", StringComparison.Ordinal) then + vGet.Id.idText.Replace("get_", "") + else + vGet.Id.idText + let item = + Item.Property( + propertyName, + [ 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) | _ -> () // If no constructor call, insert Phase2AIncrClassCtorJustAfterSuperInit at start @@ -1056,11 +1203,13 @@ module MutRecBindingChecking = if cenv.g.langVersion.SupportsFeature(LanguageFeature.CSharpExtensionAttributeNotRequired) then tyconOpt |> Option.map (fun tycon -> - tryAddExtensionAttributeIfNotAlreadyPresent + tryAddExtensionAttributeIfNotAlreadyPresentForType + g (fun tryFindExtensionAttribute -> tycon.MembersOfFSharpTyconSorted |> Seq.tryPick (fun m -> tryFindExtensionAttribute m.Attribs) ) + envForTycon.eModuleOrNamespaceTypeAccumulator tycon ) else @@ -1190,7 +1339,7 @@ module MutRecBindingChecking = let inheritsExpr, tpenv = try TcNewExpr cenv envInstance tpenv baseTy (Some synBaseTy.Range) true arg m - with e -> + with RecoverableException e -> errorRecovery e m mkUnit g m, tpenv let envInstance = match baseValOpt with Some baseVal -> AddLocalVal g cenv.tcSink scopem baseVal envInstance | None -> envInstance @@ -1290,7 +1439,25 @@ module MutRecBindingChecking = let innerState = (tpenv, envInstance, envStatic, envNonRec, generalizedRecBinds, preGeneralizationRecBinds, uncheckedRecBindsTable) Phase2BMember rbind.RecBindingInfo.Index, innerState) - + + let tyconOpt = + if not(cenv.g.langVersion.SupportsFeature(LanguageFeature.CSharpExtensionAttributeNotRequired)) then + tyconOpt + else + // We need to redo this check, which already happened in TcMutRecBindings_Phase2A_CreateRecursiveValuesAndCheckArgumentPatterns + // Because the environment is being reset in the case of recursive modules. + tyconOpt + |> Option.map (fun tycon -> + tryAddExtensionAttributeIfNotAlreadyPresentForType + g + (fun tryFindExtensionAttribute -> + tycon.MembersOfFSharpTyconSorted + |> Seq.tryPick (fun m -> tryFindExtensionAttribute m.Attribs) + ) + envForTycon.eModuleOrNamespaceTypeAccumulator + tycon + ) + let defnBs = MutRecShape.Tycon (TyconBindingsPhase2B(tyconOpt, tcref, defnBs)) let outerState = (tpenv, generalizedRecBinds, preGeneralizationRecBinds, uncheckedRecBindsTable, envNonRec) defnBs, outerState) @@ -1531,7 +1698,7 @@ module MutRecBindingChecking = let resolved = match p with | [] -> Result [] - | id :: rest -> ResolveLongIdentAsModuleOrNamespace cenv.tcSink cenv.amap m true OpenQualified env.NameEnv ad id rest false + | id :: rest -> ResolveLongIdentAsModuleOrNamespace cenv.tcSink cenv.amap m true OpenQualified env.NameEnv ad id rest false ShouldNotifySink.Yes let mvvs = ForceRaise resolved @@ -1723,7 +1890,7 @@ module MutRecBindingChecking = // Check it is not one of the generalized variables... not (genSet.Contains tp) && // Check it involves a generalized variable in one of its constraints... - freeInTypar.Exists(fun otherTypar -> genSet.Contains otherTypar)) + freeInTypar.Exists(genSet.Contains)) //printfn "unsolvedTyparsInvolvingGeneralizedVariables.Length = %d" unsolvedTyparsInvolvingGeneralizedVariables.Length //for x in unsolvedTypars do // printfn "unsolvedTyparsInvolvingGeneralizedVariable: %s #%d" x.DisplayName x.Stamp @@ -1927,134 +2094,7 @@ let TcMutRecDefns_Phase2 (cenv: cenv) envInitial mBinds scopem mutRecNSInfo (env MutRecBindingChecking.TcMutRecDefns_Phase2_Bindings cenv envInitial tpenv mBinds scopem mutRecNSInfo envMutRec binds - with exn -> errorRecovery exn scopem; [], envMutRec - -//------------------------------------------------------------------------- -// Build augmentation declarations -//------------------------------------------------------------------------- - -module AddAugmentationDeclarations = - let tcaugHasNominalInterface g (tcaug: TyconAugmentation) tcref = - tcaug.tcaug_interfaces |> List.exists (fun (x, _, _) -> - match tryTcrefOfAppTy g x with - | ValueSome tcref2 when tyconRefEq g tcref2 tcref -> true - | _ -> false) - - let AddGenericCompareDeclarations (cenv: cenv) (env: TcEnv) (scSet: Set) (tycon: Tycon) = - let g = cenv.g - if AugmentWithHashCompare.TyconIsCandidateForAugmentationWithCompare g tycon && scSet.Contains tycon.Stamp then - let tcref = mkLocalTyconRef tycon - 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 hasExplicitIComparable = tycon.HasInterface g g.mk_IComparable_ty - let hasExplicitGenericIComparable = tcaugHasNominalInterface g tcaug g.system_GenericIComparable_tcref - let hasExplicitIStructuralComparable = tycon.HasInterface g g.mk_IStructuralComparable_ty - - if hasExplicitIComparable then - errorR(Error(FSComp.SR.tcImplementsIComparableExplicitly(tycon.DisplayName), m)) - - elif hasExplicitGenericIComparable then - errorR(Error(FSComp.SR.tcImplementsGenericIComparableExplicitly(tycon.DisplayName), m)) - elif hasExplicitIStructuralComparable then - errorR(Error(FSComp.SR.tcImplementsIStructuralComparableExplicitly(tycon.DisplayName), m)) - else - let hasExplicitGenericIComparable = tycon.HasInterface g genericIComparableTy - let cvspec1, cvspec2 = AugmentWithHashCompare.MakeValsForCompareAugmentation g tcref - let cvspec3 = AugmentWithHashCompare.MakeValsForCompareWithComparerAugmentation g tcref - - PublishInterface cenv env.DisplayEnv tcref m true g.mk_IStructuralComparable_ty - PublishInterface cenv env.DisplayEnv tcref m true g.mk_IComparable_ty - if not tycon.IsFSharpException && not hasExplicitGenericIComparable then - PublishInterface cenv env.DisplayEnv tcref m true genericIComparableTy - tcaug.SetCompare (mkLocalValRef cvspec1, mkLocalValRef cvspec2) - tcaug.SetCompareWith (mkLocalValRef cvspec3) - PublishValueDefn cenv env ModuleOrMemberBinding cvspec1 - PublishValueDefn cenv env ModuleOrMemberBinding cvspec2 - PublishValueDefn cenv env ModuleOrMemberBinding cvspec3 - - let AddGenericEqualityWithComparerDeclarations (cenv: cenv) (env: TcEnv) (seSet: Set) (tycon: Tycon) = - let g = cenv.g - if AugmentWithHashCompare.TyconIsCandidateForAugmentationWithEquals g tycon && seSet.Contains tycon.Stamp then - let tcref = mkLocalTyconRef tycon - let tcaug = tycon.TypeContents - let m = tycon.Range - - let hasExplicitIStructuralEquatable = tycon.HasInterface g g.mk_IStructuralEquatable_ty - - if hasExplicitIStructuralEquatable then - errorR(Error(FSComp.SR.tcImplementsIStructuralEquatableExplicitly(tycon.DisplayName), m)) - else - let evspec1, evspec2, evspec3 = AugmentWithHashCompare.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 - - let AddGenericCompareBindings (cenv: cenv) (tycon: Tycon) = - if (* AugmentWithHashCompare.TyconIsCandidateForAugmentationWithCompare g tycon && *) Option.isSome tycon.GeneratedCompareToValues then - AugmentWithHashCompare.MakeBindingsForCompareAugmentation cenv.g tycon - else - [] - - let AddGenericCompareWithComparerBindings (cenv: cenv) (tycon: Tycon) = - let g = cenv.g - if Option.isSome tycon.GeneratedCompareToWithComparerValues then - AugmentWithHashCompare.MakeBindingsForCompareWithComparerAugmentation g tycon - else - [] - - let AddGenericEqualityWithComparerBindings (cenv: cenv) (tycon: Tycon) = - let g = cenv.g - if AugmentWithHashCompare.TyconIsCandidateForAugmentationWithEquals g tycon && Option.isSome tycon.GeneratedHashAndEqualsWithComparerValues then - (AugmentWithHashCompare.MakeBindingsForEqualityWithComparerAugmentation g tycon) - else - [] - - let AddGenericHashAndComparisonDeclarations (cenv: cenv) (env: TcEnv) scSet seSet tycon = - AddGenericCompareDeclarations cenv env scSet tycon - AddGenericEqualityWithComparerDeclarations cenv env seSet tycon - - let AddGenericHashAndComparisonBindings cenv tycon = - AddGenericCompareBindings cenv tycon @ AddGenericCompareWithComparerBindings cenv tycon @ AddGenericEqualityWithComparerBindings cenv tycon - - // We can only add the Equals override after we've done the augmentation because we have to wait until - // tycon.HasOverride can give correct results - let AddGenericEqualityBindings (cenv: cenv) (env: TcEnv) tycon = - let g = cenv.g - if AugmentWithHashCompare.TyconIsCandidateForAugmentationWithEquals g tycon then - let tcref = mkLocalTyconRef tycon - let tcaug = tycon.TypeContents - let ty = if tcref.Deref.IsFSharpException then g.exn_ty else generalizedTyconRef g tcref - 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 hasExplicitGenericIEquatable = tcaugHasNominalInterface g tcaug g.system_GenericIEquatable_tcref - - if hasExplicitGenericIEquatable then - errorR(Error(FSComp.SR.tcImplementsIEquatableExplicitly(tycon.DisplayName), m)) - - // Note: only provide the equals method if Equals is not implemented explicitly, and - // we're actually generating Hash/Equals for this type - if not hasExplicitObjectEqualsOverride && - Option.isSome tycon.GeneratedHashAndEqualsWithComparerValues then - - let vspec1, vspec2 = AugmentWithHashCompare.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]) - PublishValueDefn cenv env ModuleOrMemberBinding vspec1 - PublishValueDefn cenv env ModuleOrMemberBinding vspec2 - AugmentWithHashCompare.MakeBindingsForEqualsAugmentation g tycon - else [] - else [] - - + with RecoverableException exn -> errorRecovery exn scopem; [], envMutRec /// Infer 'comparison' and 'equality' constraints from type definitions module TyconConstraintInference = @@ -2068,7 +2108,7 @@ module TyconConstraintInference = // Initially, assume the equality relation is available for all structural type definitions let initialAssumedTycons = set [ for tycon, _ in tyconsWithStructuralTypes do - if AugmentWithHashCompare.TyconIsCandidateForAugmentationWithCompare g tycon then + if AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithCompare g tycon then yield tycon.Stamp ] // Initially, don't assume that the equality relation is dependent on any type variables @@ -2132,8 +2172,8 @@ module TyconConstraintInference = assumedTycons |> Set.filter (fun tyconStamp -> let tycon, structuralTypes = tab[tyconStamp] - if g.compilingFSharpCore && - AugmentWithHashCompare.TyconIsCandidateForAugmentationWithCompare g tycon && + if cenv.g.compilingFSharpCore && + AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithCompare g tycon && not (HasFSharpAttribute g g.attrib_StructuralComparisonAttribute tycon.Attribs) && not (HasFSharpAttribute g g.attrib_NoComparisonAttribute tycon.Attribs) then errorR(Error(FSComp.SR.tcFSharpCoreRequiresExplicit(), tycon.Range)) @@ -2199,7 +2239,7 @@ module TyconConstraintInference = // Initially, assume the equality relation is available for all structural type definitions let initialAssumedTycons = set [ for tycon, _ in tyconsWithStructuralTypes do - if AugmentWithHashCompare.TyconIsCandidateForAugmentationWithEquals g tycon then + if AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithEquals g tycon then yield tycon.Stamp ] // Initially, don't assume that the equality relation is dependent on any type variables @@ -2238,7 +2278,7 @@ module TyconConstraintInference = | AppTy g (tcref, tinst) -> (if initialAssumedTycons.Contains tcref.Stamp then assumedTycons.Contains tcref.Stamp - elif AugmentWithHashCompare.TyconIsCandidateForAugmentationWithEquals g tcref.Deref then + elif AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithEquals g tcref.Deref then Option.isSome tcref.GeneratedHashAndEqualsWithComparerValues else true) @@ -2260,8 +2300,8 @@ module TyconConstraintInference = let tycon, structuralTypes = tab[tyconStamp] - if g.compilingFSharpCore && - AugmentWithHashCompare.TyconIsCandidateForAugmentationWithEquals g tycon && + if cenv.g.compilingFSharpCore && + AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithEquals g tycon && not (HasFSharpAttribute g g.attrib_StructuralEqualityAttribute tycon.Attribs) && not (HasFSharpAttribute g g.attrib_NoEqualityAttribute tycon.Attribs) then errorR(Error(FSComp.SR.tcFSharpCoreRequiresExplicit(), tycon.Range)) @@ -2273,7 +2313,7 @@ module TyconConstraintInference = if not res then match TryFindFSharpBoolAttribute g g.attrib_StructuralEqualityAttribute tycon.Attribs with | Some true -> - if AugmentWithHashCompare.TyconIsCandidateForAugmentationWithEquals g tycon then + if AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithEquals g tycon then match structuralTypes |> List.tryFind (fst >> checkIfFieldTypeSupportsEquality tycon >> not) with | None -> assert false @@ -2288,7 +2328,7 @@ module TyconConstraintInference = | Some false -> () | None -> - if AugmentWithHashCompare.TyconIsCandidateForAugmentationWithEquals g tycon then + if AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithEquals g tycon then match structuralTypes |> List.tryFind (fst >> checkIfFieldTypeSupportsEquality tycon >> not) with | None -> assert false @@ -2382,7 +2422,7 @@ module TcExceptionDeclarations = match reprIdOpt with | Some longId -> let resolution = - ResolveExprLongIdent cenv.tcSink cenv.nameResolver m ad env.NameEnv TypeNameResolutionInfo.Default longId + ResolveExprLongIdent cenv.tcSink cenv.nameResolver m ad env.NameEnv TypeNameResolutionInfo.Default longId None |> ForceRaise match resolution with | _, Item.ExnCase exnc, [] -> @@ -2531,6 +2571,7 @@ module EstablishTypeDefinitionCores = error(Error(FSComp.SR.tcKindOfTypeSpecifiedDoesNotMatchDefinition(), m)) k + [] let private (|TyconCoreAbbrevThatIsReallyAUnion|_|) (hasMeasureAttr, envinner: TcEnv, id: Ident) synTyconRepr = match synTyconRepr with | SynTypeDefnSimpleRepr.TypeAbbrev(_, StripParenTypes (SynType.LongIdent(SynLongIdent([unionCaseName], _, _))), m) @@ -2538,9 +2579,9 @@ module EstablishTypeDefinitionCores = (not hasMeasureAttr && (isNil (LookupTypeNameInEnvNoArity OpenQualified unionCaseName.idText envinner.NameEnv) || id.idText = unionCaseName.idText)) -> - Some(unionCaseName, m) + ValueSome(unionCaseName, m) | _ -> - None + ValueNone /// Get the component types that make a record, union or struct type. /// @@ -3050,7 +3091,7 @@ module EstablishTypeDefinitionCores = if not inSig then cenv.amap.assemblyLoader.RecordGeneratedTypeRoot (ProviderGeneratedType(ilOrigRootTypeRef, ilTgtRootTyRef, nested)) - with exn -> + with RecoverableException exn -> errorRecovery exn rhsType.Range #endif @@ -3145,7 +3186,7 @@ module EstablishTypeDefinitionCores = | _ -> () - with exn -> + with RecoverableException exn -> errorRecovery exn m // Third phase: check and publish the super types. Run twice, once before constraints are established @@ -3257,7 +3298,7 @@ module EstablishTypeDefinitionCores = // Publish the super type tycon.TypeContents.tcaug_super <- super - with exn -> errorRecovery exn m)) + with RecoverableException exn -> errorRecovery exn m)) /// Establish the fields, dispatch slots and union cases of a type let private TcTyconDefnCore_Phase1G_EstablishRepresentation (cenv: cenv) envinner tpenv inSig (MutRecDefnsPhase1DataForTycon(_, synTyconRepr, _, _, _, _)) (tycon: Tycon) (attrs: Attribs) = @@ -3351,12 +3392,26 @@ module EstablishTypeDefinitionCores = let multiCaseUnionStructCheck (unionCases: UnionCase list) = if tycon.IsStructRecordOrUnionTycon && unionCases.Length > 1 then - let fieldNames = [ for uc in unionCases do for ft in uc.FieldTable.TrueInstanceFieldsAsList do yield (ft.LogicalName, ft.Range) ] - let distFieldNames = fieldNames |> List.distinctBy fst - if distFieldNames.Length <> fieldNames.Length then - let fieldRanges = distFieldNames |> List.map snd - for m in fieldRanges do - errorR(Error(FSComp.SR.tcStructUnionMultiCaseDistinctFields(), m)) + let allTypesEqual listOfNamesAndTypes = + match listOfNamesAndTypes with + | [] | [_] -> true + | (_,headField : RecdField) :: tail -> + let headType = headField.FormalType + tail |> List.forall (fun (_,elemType) -> typeEquivAux EraseAll g elemType.FormalType headType) + + let diagnostics,duplicateCriteria = + if cenv.g.langVersion.SupportsFeature(LanguageFeature.ReuseSameFieldsInStructUnions) then + FSComp.SR.tcStructUnionMultiCaseFieldsSameType, allTypesEqual >> not + else + FSComp.SR.tcStructUnionMultiCaseDistinctFields, (fun group -> group.Length > 1) + + [ for uc in unionCases do for ft in uc.FieldTable.TrueInstanceFieldsAsList do yield(ft.LogicalName,ft) ] + |> List.groupBy fst + |> List.filter (fun (_name,group) -> duplicateCriteria group) + |> List.iter (fun (_,dups) -> + for _,ft in dups do + errorR(Error(diagnostics(), ft.Range))) + // Notify the Language Service about field names in record/class declaration let ad = envinner.AccessRights @@ -3643,7 +3698,7 @@ module EstablishTypeDefinitionCores = | _ -> () (baseValOpt, safeInitInfo) - with exn -> + with RecoverableException exn -> errorRecovery exn m None, NoSafeInitInfo @@ -3864,7 +3919,7 @@ module EstablishTypeDefinitionCores = let envForTycon = MakeInnerEnvForTyconRef envForTycon thisTyconRef false try TcTyparConstraints cenv NoNewTypars checkConstraints ItemOccurence.UseInType envForTycon tpenv synTyconConstraints |> ignore - with exn -> + with RecoverableException exn -> errorRecovery exn m | _ -> ()) @@ -3882,7 +3937,7 @@ module EstablishTypeDefinitionCores = // Build the initial Tycon for each type definition (fun (innerParent, _, envForDecls) (typeDefCore, tyconMemberInfo) -> - let (MutRecDefnsPhase1DataForTycon(_, _, _, _, _, isAtOriginalTyconDefn)) = typeDefCore + let (MutRecDefnsPhase1DataForTycon(isAtOriginalTyconDefn=isAtOriginalTyconDefn)) = typeDefCore let tyconOpt = if isAtOriginalTyconDefn then Some (TcTyconDefnCore_Phase1A_BuildInitialTycon cenv envForDecls innerParent typeDefCore) @@ -4017,8 +4072,22 @@ module EstablishTypeDefinitionCores = // REVIEW: checking for cyclic inheritance is happening too late. See note above. TcTyconDefnCore_CheckForCyclicStructsAndInheritance cenv tycons + // Generate the union augmentation values for all tycons. + let withBaseValsAndSafeInitInfosAndUnionValues = + (envMutRecPrelim, withBaseValsAndSafeInitInfos) ||> MutRecShapes.mapTyconsWithEnv (fun envForDecls (origInfo, tyconOpt, fixupFinalAttrs, info) -> + let (tyconCore, _, _) = origInfo + let (MutRecDefnsPhase1DataForTycon (isAtOriginalTyconDefn=isAtOriginalTyconDefn)) = tyconCore + let vspecs = + match tyconOpt with + | Some tycon when isAtOriginalTyconDefn -> + if tycon.IsUnionTycon && AddAugmentationDeclarations.ShouldAugmentUnion cenv.g tycon then + AddAugmentationDeclarations.AddUnionAugmentationValues cenv envForDecls tycon + else + [] + | _ -> [] + (origInfo, tyconOpt, fixupFinalAttrs, info, vspecs)) - (tycons, envMutRecPrelim, withBaseValsAndSafeInitInfos) + (tycons, envMutRecPrelim, withBaseValsAndSafeInitInfosAndUnionValues) /// Bind declarations in implementation and signature files @@ -4069,6 +4138,10 @@ module TcDeclarations = tcref.Deref.IsFSharpDelegateTycon || tcref.Deref.IsFSharpEnumTycon + let isDelegateOrEnum = + tcref.Deref.IsFSharpDelegateTycon || + tcref.Deref.IsFSharpEnumTycon + let reqTypars = tcref.Typars m // Member definitions are intrinsic (added directly to the type) if: @@ -4104,7 +4177,7 @@ module TcDeclarations = // Note we return 'reqTypars' for intrinsic extensions since we may only have given warnings IntrinsicExtensionBinding, reqTypars else - if isInSameModuleOrNamespace && isInterfaceOrDelegateOrEnum then + if isInSameModuleOrNamespace && isDelegateOrEnum then errorR(Error(FSComp.SR.tcMembersThatExtendInterfaceMustBePlacedInSeparateModule(), tcref.Range)) if nReqTypars <> synTypars.Length then error(Error(FSComp.SR.tcDeclaredTypeParametersForExtensionDoNotMatchOriginal(tcref.DisplayNameWithStaticParametersAndUnderscoreTypars), m)) @@ -4170,12 +4243,23 @@ module TcDeclarations = | _ -> () | ds -> // Check for duplicated parameters in abstract methods + // Check for an interface implementation with auto properties on constructor-less types for slot in ds do if isAbstractSlot slot then match slot with | SynMemberDefn.AbstractSlot (slotSig = synVal; range = m) -> CheckDuplicatesArgNames synVal m | _ -> () + + if isInterface slot then + match slot with + | SynMemberDefn.Interface (members= Some defs) -> + for au in defs do + match au with + | SynMemberDefn.AutoProperty(isStatic = false; range = m) -> + errorR(Error(FSComp.SR.tcAutoPropertyRequiresImplicitConstructionSequence(), m)) + | _ -> () + | _ -> () // Classic class construction let _, ds = List.takeUntil (allFalse [isMember;isAbstractSlot;isInterface;isInherit;isField;isTycon]) ds @@ -4183,7 +4267,7 @@ module TcDeclarations = | SynMemberDefn.Member (range=m) :: _ -> errorR(InternalError("CheckMembersForm: List.takeUntil is wrong", m)) | SynMemberDefn.ImplicitCtor (range=m) :: _ -> errorR(InternalError("CheckMembersForm: implicit ctor line should be first", m)) | SynMemberDefn.ImplicitInherit (range=m) :: _ -> errorR(Error(FSComp.SR.tcInheritConstructionCallNotPartOfImplicitSequence(), m)) - | SynMemberDefn.AutoProperty(range=m) :: _ -> errorR(Error(FSComp.SR.tcAutoPropertyRequiresImplicitConstructionSequence(), m)) + | SynMemberDefn.AutoProperty(isStatic=false;range=m) :: _ -> errorR(Error(FSComp.SR.tcAutoPropertyRequiresImplicitConstructionSequence(), m)) | SynMemberDefn.LetBindings (isStatic=false; range=m) :: _ -> errorR(Error(FSComp.SR.tcLetAndDoRequiresImplicitConstructionSequence(), m)) | SynMemberDefn.AbstractSlot (range=m) :: _ | SynMemberDefn.Interface (range=m) :: _ @@ -4200,9 +4284,6 @@ module TcDeclarations = | SynMemberDefn.LetBindings (range=m) :: _ -> errorR(Error(FSComp.SR.tcTypeDefinitionsWithImplicitConstructionMustHaveLocalBindingsBeforeMembers(), m)) | _ -> () - - - /// Split auto-properties into 'let' and 'member' bindings let private SplitAutoProps members = let membersIncludingAutoProps, vals_Inherits_Abstractslots = @@ -4259,6 +4340,8 @@ module TcDeclarations = // 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) let fldId = ident (CompilerGeneratedName id.idText, mMemberPortion) + let headPatIds = if isStatic then [id] else [ident ("__", mMemberPortion);id] + let headPat = SynPat.LongIdent (SynLongIdent(headPatIds, [], List.replicate headPatIds.Length None), None, Some noInferredTypars, SynArgPats.Pats [], None, mMemberPortion) let memberFlags = { memberFlags with GetterOrSetterIsCompilerGenerated = true } let memberFlagsForSet = { memberFlagsForSet with GetterOrSetterIsCompilerGenerated = true } @@ -4275,20 +4358,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 headPatIds = - let id = - match mGetSetOpt with - | Some (GetSetKeywords.GetSet(get = mGet)) -> Ident(id.idText, mGet) - | _ -> id - if isStatic then [id] else [ident ("__", mMemberPortion);id] - let headPat = SynPat.LongIdent (SynLongIdent(headPatIds, [], List.replicate headPatIds.Length None), None, Some noInferredTypars, SynArgPats.Pats [], None, mMemberPortion) let binding = mkSynBinding (xmlDoc, headPat) (access, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, rhsExpr, rhsExpr.Range, [], attribs, Some memberFlags, SynBindingTrivia.Zero) - let binding = - match mGetSetOpt with - | Some (GetSetKeywords.GetSet _) -> - // Only add the additional meta data to the SynBinding (SynValData) is both get and set are present. - updatePropertyIdentInSynBinding id binding - | _ -> binding SynMemberDefn.Member (binding, mMemberPortion) yield getter | _ -> () @@ -4297,25 +4367,10 @@ module TcDeclarations = | SynMemberKind.PropertySet | SynMemberKind.PropertyGetSet -> let setter = - let vId = - match mGetSetOpt with - | Some (GetSetKeywords.GetSet(set = mSet)) -> ident("v", mSet) - | _ -> ident("v", mMemberPortion) - let headPatIds = - let id = - match mGetSetOpt with - | Some (GetSetKeywords.GetSet(set = mSet)) -> Ident(id.idText, mSet) - | _ -> id - if isStatic then [id] else [ident ("__", mMemberPortion);id] + 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 = - match mGetSetOpt with - | Some (GetSetKeywords.GetSet _) -> - // Only add the additional meta data to the SynBinding (SynValData) is both get and set are present. - updatePropertyIdentInSynBinding id binding - | _ -> binding SynMemberDefn.Member (binding, mMemberPortion) yield setter | _ -> ()] @@ -4414,7 +4469,7 @@ module TcDeclarations = let isAtOriginalTyconDefn = true let core = MutRecDefnsPhase1DataForTycon(synTyconInfo, SynTypeDefnSimpleRepr.Exception r, implements1, false, false, isAtOriginalTyconDefn) core, extra_vals_Inherits_Abstractslots @ extraMembers - + //------------------------------------------------------------------------- /// Bind a collection of mutually recursive definitions in an implementation file @@ -4433,9 +4488,14 @@ module TcDeclarations = cenv envInitial parent typeNames false tpenv m scopem mutRecNSInfo mutRecDefnsAfterSplit // Package up the phase two information for processing members. - let mutRecDefnsAfterPrep = + let unionValsLookup = Dictionary() + let mutRecDefnsAfterPrep = (envMutRecPrelim, mutRecDefnsAfterCore) - ||> MutRecShapes.mapTyconsWithEnv (fun envForDecls ((typeDefnCore, members, innerParent), tyconOpt, fixupFinalAttrs, (baseValOpt, safeInitInfo)) -> + ||> MutRecShapes.mapTyconsWithEnv (fun envForDecls ((typeDefnCore, members, innerParent), tyconOpt, fixupFinalAttrs, (baseValOpt, safeInitInfo), unionVals) -> + match tyconOpt with + | Some tycon when not unionVals.IsEmpty -> unionValsLookup.Add(tycon.Stamp, unionVals) + | _ -> () + let (MutRecDefnsPhase1DataForTycon(synTyconInfo, _, _, _, _, isAtOriginalTyconDefn)) = typeDefnCore let tyDeclRange = synTyconInfo.Range let (SynComponentInfo(_, TyparsAndConstraints (typars, cs1), cs2, longPath, _, _, _, _)) = synTyconInfo @@ -4496,16 +4556,20 @@ module TcDeclarations = |> List.map (function | MutRecShape.Tycon (Some tycon, bindings) -> let tycon = - tryAddExtensionAttributeIfNotAlreadyPresent + tryAddExtensionAttributeIfNotAlreadyPresentForType + g (fun tryFindExtensionAttribute -> tycon.MembersOfFSharpTyconSorted |> Seq.tryPick (fun m -> tryFindExtensionAttribute m.Attribs) ) + envFinal.eModuleOrNamespaceTypeAccumulator tycon + MutRecShape.Tycon (Some tycon, bindings) | MutRecShape.Module ((MutRecDefnsPhase2DataForModule(moduleOrNamespaceType, entity), env), shapes) -> let entity = - tryAddExtensionAttributeIfNotAlreadyPresent + tryAddExtensionAttributeIfNotAlreadyPresentForModule + g (fun tryFindExtensionAttribute -> moduleOrNamespaceType.Value.AllValsAndMembers |> Seq.filter(fun v -> v.IsModuleBinding) @@ -4532,7 +4596,16 @@ module TcDeclarations = // in, and there are code generation tests to check that. let binds = AddAugmentationDeclarations.AddGenericHashAndComparisonBindings cenv tycon let binds3 = AddAugmentationDeclarations.AddGenericEqualityBindings cenv envForDecls tycon - binds, binds3) + let binds4 = + if tycon.IsUnionTycon && AddAugmentationDeclarations.ShouldAugmentUnion g tycon then + let unionVals = + match unionValsLookup.TryGetValue(tycon.Stamp) with + | false, _ -> [] + | true, vs -> vs + AugmentTypeDefinitions.MakeBindingsForUnionAugmentation g tycon (List.map mkLocalValRef unionVals) + else + [] + binds@binds4, binds3) // Check for cyclic structs and inheritance all over again, since we may have added some fields to the struct when generating the implicit construction syntax EstablishTypeDefinitionCores.TcTyconDefnCore_CheckForCyclicStructsAndInheritance cenv tycons @@ -4587,19 +4660,20 @@ module TcDeclarations = // 'type X with ...' in a signature is always interpreted as an extrinsic extension. // Representation-hidden types with members and interfaces are written 'type X = ...' - | SynTypeDefnSigRepr.Simple(SynTypeDefnSimpleRepr.None _ as r, _) when not (isNil extraMembers) -> + | SynTypeDefnSigRepr.Simple(SynTypeDefnSimpleRepr.None _ as repr, _) when not (isNil extraMembers) -> let isAtOriginalTyconDefn = false - let tyconCore = MutRecDefnsPhase1DataForTycon (synTyconInfo, r, implements1, false, false, isAtOriginalTyconDefn) + let tyconCore = MutRecDefnsPhase1DataForTycon (synTyconInfo, repr, implements1, false, false, isAtOriginalTyconDefn) tyconCore, (synTyconInfo, extraMembers) - - | SynTypeDefnSigRepr.Exception r -> + + | SynTypeDefnSigRepr.Exception exnRepr -> let isAtOriginalTyconDefn = true - let core = MutRecDefnsPhase1DataForTycon(synTyconInfo, SynTypeDefnSimpleRepr.Exception r, implements1, false, false, isAtOriginalTyconDefn) + let repr = SynTypeDefnSimpleRepr.Exception exnRepr + let core = MutRecDefnsPhase1DataForTycon(synTyconInfo, repr, implements1, false, false, isAtOriginalTyconDefn) core, (synTyconInfo, extraMembers) - | SynTypeDefnSigRepr.Simple(r, _) -> + | SynTypeDefnSigRepr.Simple(repr, _) -> let isAtOriginalTyconDefn = true - let tyconCore = MutRecDefnsPhase1DataForTycon (synTyconInfo, r, implements1, false, false, isAtOriginalTyconDefn) + let tyconCore = MutRecDefnsPhase1DataForTycon (synTyconInfo, repr, implements1, false, false, isAtOriginalTyconDefn) tyconCore, (synTyconInfo, extraMembers) @@ -4607,9 +4681,9 @@ module TcDeclarations = let g = cenv.g (envMutRec, mutRecDefns) ||> MutRecShapes.mapWithEnv // Do this for the members in each 'type' declaration - (fun envForDecls ((tyconCore, (synTyconInfo, members), innerParent), tyconOpt, _fixupFinalAttrs, _) -> + (fun envForDecls ((tyconCore, (synTyconInfo, members), innerParent), tyconOpt, _fixupFinalAttrs, _, _extraValSpecs) -> let tpenv = emptyUnscopedTyparEnv - let (MutRecDefnsPhase1DataForTycon (_, _, _, _, _, isAtOriginalTyconDefn)) = tyconCore + let (MutRecDefnsPhase1DataForTycon (isAtOriginalTyconDefn=isAtOriginalTyconDefn)) = tyconCore let (SynComponentInfo(_, TyparsAndConstraints (typars, cs1), cs2, longPath, _, _, _, m)) = synTyconInfo let cs = cs1 @ cs2 let declKind, tcref, declaredTyconTypars = ComputeTyconDeclKind cenv envForDecls tyconOpt isAtOriginalTyconDefn true m typars cs longPath @@ -4617,8 +4691,28 @@ module TcDeclarations = let envForTycon = AddDeclaredTypars CheckForDuplicateTypars declaredTyconTypars envForDecls let envForTycon = MakeInnerEnvForTyconRef envForTycon tcref (declKind = ExtrinsicExtensionBinding) - TcTyconMemberSpecs cenv envForTycon (TyconContainerInfo(innerParent, tcref, declaredTyconTypars, NoSafeInitInfo)) declKind tpenv members) - + let vals, env = TcTyconMemberSpecs cenv envForTycon (TyconContainerInfo(innerParent, tcref, declaredTyconTypars, NoSafeInitInfo)) declKind tpenv members + if not(cenv.g.langVersion.SupportsFeature(LanguageFeature.CSharpExtensionAttributeNotRequired)) then + vals, env + else + // Check if any of the vals has the `[]` attribute + // If this is the case, add it to the type in the env. + let extensionAttributeOnVals = + vals + |> List.tryPick (fun v -> tryFindExtensionAttribute g v.Attribs) + + let typeEntity = + envForTycon.eModuleOrNamespaceTypeAccumulator.Value.AllEntitiesByLogicalMangledName.TryFind(tcref.LogicalName) + + match extensionAttributeOnVals, typeEntity with + | Some extensionAttribute, Some typeEntity -> + if Option.isNone (tryFindExtensionAttribute g typeEntity.Attribs) then + typeEntity.entity_attribs <- extensionAttribute :: typeEntity.Attribs + | _ -> () + + vals, env + + ) // Do this for each 'val' declaration in a module (fun envForDecls (containerInfo, valSpec) -> let tpenv = emptyUnscopedTyparEnv @@ -4649,7 +4743,7 @@ module TcDeclarations = let envMutRecPrelimWithReprs, withEnvs = (envInitial, MutRecShapes.dropEnvs mutRecDefnsAfterCore) ||> MutRecBindingChecking.TcMutRecDefns_ComputeEnvs - (fun (_, tyconOpt, _, _) -> tyconOpt) + (fun (_, tyconOpt, _, _, _) -> tyconOpt) (fun _binds -> [ (* no values are available yet *) ]) cenv true scopem m @@ -4658,6 +4752,16 @@ module TcDeclarations = // 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 //------------------------------------------------------------------------- @@ -4734,7 +4838,7 @@ let rec TcSignatureElementNonMutRec (cenv: cenv) parent typeNames endm (env: TcE let resolved = match p with | [] -> Result [] - | id :: rest -> ResolveLongIdentAsModuleOrNamespace cenv.tcSink cenv.amap m true OpenQualified env.NameEnv ad id rest false + | id :: rest -> ResolveLongIdentAsModuleOrNamespace cenv.tcSink cenv.amap m true OpenQualified env.NameEnv ad id rest false ShouldNotifySink.Yes let mvvs = ForceRaise resolved let scopem = unionRanges m endm let unfilteredModrefs = mvvs |> List.map p23 @@ -4814,7 +4918,7 @@ let rec TcSignatureElementNonMutRec (cenv: cenv) parent typeNames endm (env: TcE return env - with exn -> + with RecoverableException exn -> errorRecovery exn endm return env } @@ -5078,7 +5182,8 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem // //[] //let PlusOne (a:int) = a + 1 - tryAddExtensionAttributeIfNotAlreadyPresent + tryAddExtensionAttributeIfNotAlreadyPresentForModule + g (fun tryFindExtensionAttribute -> match moduleContents with | ModuleOrNamespaceContents.TMDefs(defs) -> @@ -5182,7 +5287,7 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem return (defns, [], topAttrs), env, envAtEnd - with exn -> + with RecoverableException exn -> errorRecovery exn synDecl.Range return ([], [], []), env, env } @@ -5338,7 +5443,7 @@ and TcModuleOrNamespaceElements cenv parent endm env xml mutRecNSInfo openDecls0 let moduleContents = TMDefs moduleDefs // Collect up the attributes that are global to the file - let topAttrsNew = compiledDefs |> List.map p33 |> List.concat + let topAttrsNew = compiledDefs |> List.collect p33 return (moduleContents, topAttrsNew, envAtEnd) } @@ -5404,7 +5509,7 @@ let CreateInitialTcEnv(g, amap, scopem, assemblyName, ccus) = (emptyTcEnv g, ccus) ||> List.collectFold (fun env (ccu, autoOpens, internalsVisible) -> try AddCcuToTcEnv(g, amap, scopem, env, assemblyName, ccu, autoOpens, internalsVisible) - with exn -> + with RecoverableException exn -> errorRecovery exn scopem [], env) @@ -5429,7 +5534,7 @@ let CombineTopAttrs topAttrs1 topAttrs2 = assemblyAttrs = topAttrs1.assemblyAttrs @ topAttrs2.assemblyAttrs } let rec IterTyconsOfModuleOrNamespaceType f (mty: ModuleOrNamespaceType) = - mty.AllEntities |> QueueList.iter (fun tycon -> f tycon) + mty.AllEntities |> QueueList.iter f mty.ModuleAndNamespaceDefinitions |> List.iter (fun v -> IterTyconsOfModuleOrNamespaceType f v.ModuleOrNamespaceType) @@ -5455,7 +5560,7 @@ let ApplyDefaults (cenv: cenv) g denvAtEnd m moduleContents extraAttribs = if not tp.IsSolved then if (tp.StaticReq <> TyparStaticReq.None) then ChooseTyparSolutionAndSolve cenv.css denvAtEnd tp) - with exn -> + with RecoverableException exn -> errorRecovery exn m let CheckValueRestriction denvAtEnd infoReader rootSigOpt implFileTypePriorToSig m = @@ -5475,7 +5580,7 @@ let CheckValueRestriction denvAtEnd infoReader rootSigOpt implFileTypePriorToSig | tp :: _ -> errorR (ValueRestriction(denvAtEnd, infoReader, false, v, tp, v.Range)) | _ -> () mty.ModuleAndNamespaceDefinitions |> List.iter (fun v -> check v.ModuleOrNamespaceType) - try check implFileTypePriorToSig with e -> errorRecovery e m + try check implFileTypePriorToSig with RecoverableException e -> errorRecovery e m let SolveInternalUnknowns g (cenv: cenv) denvAtEnd moduleContents extraAttribs = @@ -5513,7 +5618,7 @@ let CheckModuleSignature g (cenv: cenv) m denvAtEnd rootSigOpt implFileTypePrior if not (SignatureConformance.Checker(g, cenv.amap, denv, remapInfo, true).CheckSignature aenv cenv.infoReader (mkLocalModuleRef implFileSpecPriorToSig) sigFileType) then // We can just raise 'ReportedError' since CheckModuleOrNamespace raises its own error raise (ReportedError None) - with exn -> + with RecoverableException exn -> errorRecovery exn m (sigFileType, moduleContents) @@ -5591,7 +5696,7 @@ let CheckOneImplFile for check in cenv.css.GetPostInferenceChecksPreDefaults() do try check() - with exn -> + with RecoverableException exn -> errorRecovery exn m conditionallySuppressErrorReporting (checkForErrors()) (fun () -> @@ -5605,7 +5710,7 @@ let CheckOneImplFile implFileTypePriorToSig |> IterTyconsOfModuleOrNamespaceType (fun tycon -> FinalTypeDefinitionChecksAtEndOfInferenceScope (cenv.infoReader, envAtEnd.NameEnv, cenv.tcSink, true, denvAtEnd, tycon)) - with exn -> + with RecoverableException exn -> errorRecovery exn m) // Check the value restriction. Only checked if there is no signature. @@ -5626,7 +5731,7 @@ let CheckOneImplFile for check in cenv.css.GetPostInferenceChecksFinal() do try check() - with exn -> + with RecoverableException exn -> errorRecovery exn m) // We ALWAYS run the PostTypeCheckSemanticChecks phase, though we if we have already encountered some @@ -5645,7 +5750,7 @@ let CheckOneImplFile implFileTy, implFileContents, extraAttribs, isLastCompiland, isInternalTestSpanStackReferring) - with exn -> + with RecoverableException exn -> errorRecovery exn m false, StampMap.Empty) @@ -5707,7 +5812,7 @@ let CheckOneSigFile (g, amap, thisCcu, checkForErrors, conditionalDefines, tcSin try sigFileType |> IterTyconsOfModuleOrNamespaceType (fun tycon -> FinalTypeDefinitionChecksAtEndOfInferenceScope(cenv.infoReader, tcEnv.NameEnv, cenv.tcSink, false, tcEnv.DisplayEnv, tycon)) - with exn -> errorRecovery exn sigFile.QualifiedName.Range + with RecoverableException exn -> errorRecovery exn sigFile.QualifiedName.Range UpdatePrettyTyparNames.updateModuleOrNamespaceType sigFileType diff --git a/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fs b/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fs index d4f8ac482d..69189a7313 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fs +++ b/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fs @@ -474,7 +474,7 @@ let UnifyOverallType (cenv: cenv) (env: TcEnv) m overallTy actualTy = let UnifyOverallTypeAndRecover (cenv: cenv) env m overallTy actualTy = try UnifyOverallType cenv env m overallTy actualTy - with exn -> + with RecoverableException exn -> errorRecovery exn m /// Make an environment suitable for a module or namespace. Does not create a new accumulator but uses one we already have/ @@ -1090,14 +1090,14 @@ let PublishValueDefnPrim (cenv: cenv) env (vspec: Val) = UpdateAccModuleOrNamespaceType cenv env (fun _ mty -> mty.AddVal vspec) -let PublishValueDefn (cenv: cenv) env declKind (vspec: Val) = +let PublishValueDefnMaybeInclCompilerGenerated (cenv: cenv) env inclCompilerGenerated declKind (vspec: Val) = let g = cenv.g let isNamespace = let kind = (GetCurrAccumulatedModuleOrNamespaceType env).ModuleOrNamespaceKind match kind with | Namespace _ -> true | _ -> false - + if (declKind = ModuleOrMemberBinding) && isNamespace && (Option.isNone vspec.MemberInfo) then @@ -1116,9 +1116,9 @@ let PublishValueDefn (cenv: cenv) env declKind (vspec: Val) = match vspec.MemberInfo with | Some _ when - (not vspec.IsCompilerGenerated && + ((not vspec.IsCompilerGenerated || inclCompilerGenerated) && // Extrinsic extensions don't get added to the tcaug - not (declKind = ExtrinsicExtensionBinding)) -> + declKind <> ExtrinsicExtensionBinding) -> // // Static initializers don't get published to the tcaug // not (memberInfo.MemberFlags.MemberKind = SynMemberKind.ClassConstructor)) -> @@ -1128,6 +1128,9 @@ let PublishValueDefn (cenv: cenv) env declKind (vspec: Val) = tcaug.tcaug_adhoc_list.Add (ValRefIsExplicitImpl g vref, vref) | _ -> () +let PublishValueDefn cenv env declKind vspec = + PublishValueDefnMaybeInclCompilerGenerated cenv env false declKind vspec + let CombineVisibilityAttribs vis1 vis2 m = match vis1 with | Some _ -> @@ -1223,10 +1226,11 @@ let CheckRequiredProperties (g:TcGlobals) (env: TcEnv) (cenv: TcFileState) (minf let setterPropNames = finalAssignedItemSetters |> List.choose (function | AssignedItemSetter(_, AssignedPropSetter (_, pinfo, _, _), _) -> Some pinfo.PropertyName | _ -> None) + |> Set.ofList let missingProps = requiredProps - |> List.filter (fun pinfo -> not (List.contains pinfo.PropertyName setterPropNames)) + |> List.filter (fun pinfo -> not (Set.contains pinfo.PropertyName setterPropNames)) if missingProps.Length > 0 then let details = NicePrint.multiLineStringOfPropInfos g cenv.amap mMethExpr env.DisplayEnv missingProps errorR(Error(FSComp.SR.tcMissingRequiredMembers details, mMethExpr)) @@ -2354,7 +2358,7 @@ module BindingNormalization = NormalizedBindingPat(SynPat.InstanceMember(thisId, memberId, toolId, vis, m), PushMultiplePatternsToRhs cenv true args rhsExpr, valSynData, typars) let private NormalizeStaticMemberBinding (cenv: cenv) (memberFlags: SynMemberFlags) valSynData id vis typars args m rhsExpr = - let (SynValData(valInfo = valSynInfo; thisIdOpt = thisIdOpt; transformedFromProperty = tp)) = valSynData + let (SynValData(valInfo = valSynInfo; thisIdOpt = thisIdOpt)) = valSynData if memberFlags.IsInstance then // instance method without adhoc "this" argument error(Error(FSComp.SR.tcInstanceMemberRequiresTarget(), m)) @@ -2368,7 +2372,7 @@ module BindingNormalization = // static property: these transformed into methods taking one "unit" argument | [], SynMemberKind.Member -> let memberFlags = {memberFlags with MemberKind = SynMemberKind.PropertyGet} - let valSynData = SynValData(Some memberFlags, valSynInfo, thisIdOpt, tp) + let valSynData = SynValData(Some memberFlags, valSynInfo, thisIdOpt) NormalizedBindingPat(mkSynPatVar vis id, PushOnePatternToRhs cenv true (SynPat.Const(SynConst.Unit, m)) rhsExpr, valSynData, @@ -2376,7 +2380,7 @@ module BindingNormalization = | _ -> MakeNormalizedStaticOrValBinding cenv ValOrMemberBinding id vis typars args rhsExpr valSynData let private NormalizeInstanceMemberBinding (cenv: cenv) (memberFlags: SynMemberFlags) valSynData thisId memberId (toolId: Ident option) vis typars args m rhsExpr = - let (SynValData(_, valSynInfo, thisIdOpt, tap)) = valSynData + let (SynValData(_, valSynInfo, thisIdOpt)) = valSynData if not memberFlags.IsInstance then // static method with adhoc "this" argument @@ -2400,7 +2404,7 @@ module BindingNormalization = (SynPat.InstanceMember(thisId, memberId, toolId, vis, m), PushOnePatternToRhs cenv true (SynPat.Const(SynConst.Unit, m)) rhsExpr, // Update the member info to record that this is a SynMemberKind.PropertyGet - SynValData(Some memberFlags, valSynInfo, thisIdOpt, tap), + SynValData(Some memberFlags, valSynInfo, thisIdOpt), typars) | _ -> @@ -2511,10 +2515,10 @@ module EventDeclarationNormalization = | _ -> error(BadEventTransformation m) let private ConvertSynData m valSynData = - let (SynValData(memberFlagsOpt, valSynInfo, thisIdOpt, tap)) = valSynData + let (SynValData(memberFlagsOpt, valSynInfo, thisIdOpt)) = valSynData let memberFlagsOpt = ConvertMemberFlagsOpt m memberFlagsOpt let valSynInfo = ConvertSynInfo m valSynInfo - SynValData(memberFlagsOpt, valSynInfo, thisIdOpt, tap) + SynValData(memberFlagsOpt, valSynInfo, thisIdOpt) let rec private RenameBindingPattern f declPattern = match declPattern with @@ -3811,6 +3815,13 @@ type DelayedItem = /// Represents the valueExpr in "item <- valueExpr", also "item.[indexerArgs] <- valueExpr" etc. | DelayedSet of SynExpr * range +module DelayedItem = + let maybeAppliedArgForPreferExtensionOverProperty delayed = + match delayed with + | [] -> None + | DelayedItem.DelayedApp(argExpr=argExpr) :: _ -> Some argExpr + | _ -> None + let MakeDelayedSet(e: SynExpr, m) = // We have longId <- e. Wrap 'e' in another pair of parentheses to ensure it's never interpreted as // a named argument, e.g. for "el.Checked <- (el = el2)" @@ -3950,6 +3961,16 @@ let GetInstanceMemberThisVariable (vspec: Val, expr) = else None +/// c.atomicLeftMethExpr[idx] and atomicLeftExpr[idx] as applications give warnings +let checkHighPrecedenceFunctionApplicationToList (g: TcGlobals) args atomicFlag exprRange = + match args, atomicFlag with + | ([SynExpr.ArrayOrList (false, _, _)] | [SynExpr.ArrayOrListComputed (false, _, _)]), ExprAtomicFlag.Atomic -> + if g.langVersion.SupportsFeature LanguageFeature.IndexerNotationWithoutDot then + informationalWarning(Error(FSComp.SR.tcHighPrecedenceFunctionApplicationToListDeprecated(), exprRange)) + elif not (g.langVersion.IsExplicitlySpecifiedAs50OrBefore()) then + informationalWarning(Error(FSComp.SR.tcHighPrecedenceFunctionApplicationToListReserved(), exprRange)) + | _ -> () + /// 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 = @@ -4757,7 +4778,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 s <> null && typeEquiv g g.string_ty kind -> record(g.string_ty); box (s: string) + | SynConst.SourceIdentifier (_, s, _) when (not (isNull s)) && 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 @@ -4963,7 +4984,7 @@ and TcTypeOrMeasureAndRecover kindOpt (cenv: cenv) newOk checkConstraints occ iw let g = cenv.g try TcTypeOrMeasure kindOpt cenv newOk checkConstraints occ iwsam env tpenv ty - with e -> + with RecoverableException e -> errorRecovery e ty.Range let recoveryTy = @@ -5156,7 +5177,7 @@ and TcExpr (cenv: cenv) ty (env: TcEnv) tpenv (synExpr: SynExpr) = // So be careful! try TcExprNoRecover cenv ty env tpenv synExpr - with exn -> + with RecoverableException exn -> let m = synExpr.Range // Error recovery - return some rubbish expression, but replace/annotate // the type of the current expression with a type variable that indicates an error @@ -5185,7 +5206,7 @@ and TcExprOfUnknownTypeThen (cenv: cenv) env tpenv synExpr delayed = let expr, tpenv = try TcExprThen cenv (MustEqual exprTy) env tpenv false synExpr delayed - with exn -> + with RecoverableException exn -> let m = synExpr.Range errorRecovery exn m SolveTypeAsError env.DisplayEnv cenv.css m exprTy @@ -5298,6 +5319,10 @@ and TcExprThen (cenv: cenv) overallTy env tpenv isArg synExpr delayed = // 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)) + | _ -> () + TcNonControlFlowExpr env <| fun env -> CheckForAdjacentListExpression cenv synExpr hpa isInfix delayed arg @@ -5563,9 +5588,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) -> - if env.NameEnv.eUnqualifiedItems |> Map.containsKey "_arg1" - then + 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 @@ -5629,11 +5658,17 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE TcNonControlFlowExpr env <| fun env -> TcExprTuple cenv overallTy env tpenv (isExplicitStruct, args, m) - | SynExpr.AnonRecd (isStruct, withExprOpt, unsortedFieldExprs, mWholeExpr, _) -> - TcNonControlFlowExpr env <| fun env -> - TcPossiblyPropagatingExprLeafThenConvert (fun ty -> isAnonRecdTy g ty || isTyparTy g ty) cenv overallTy env mWholeExpr (fun overallTy -> - TcAnonRecdExpr cenv overallTy env tpenv (isStruct, withExprOpt, unsortedFieldExprs, mWholeExpr) - ) + | SynExpr.AnonRecd (isStruct, withExprOpt, unsortedFieldExprs, mWholeExpr, trivia) -> + match withExprOpt with + | None + | Some(SynExpr.Ident _, _) -> + TcNonControlFlowExpr env <| fun env -> + TcPossiblyPropagatingExprLeafThenConvert (fun ty -> isAnonRecdTy g ty || isTyparTy g ty) cenv overallTy env mWholeExpr (fun overallTy -> + TcAnonRecdExpr cenv overallTy env tpenv (isStruct, withExprOpt, unsortedFieldExprs, mWholeExpr) + ) + | Some withExpr -> + BindOriginalRecdExpr withExpr (fun withExpr -> SynExpr.AnonRecd (isStruct, withExpr, unsortedFieldExprs, mWholeExpr, trivia)) + |> TcExpr cenv overallTy env tpenv | SynExpr.ArrayOrList (isArray, args, m) -> TcNonControlFlowExpr env <| fun env -> @@ -5659,8 +5694,14 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE TcExprObjectExpr cenv overallTy env tpenv (synObjTy, argopt, binds, extraImpls, mNewExpr, m) | SynExpr.Record (inherits, withExprOpt, synRecdFields, mWholeExpr) -> - TcNonControlFlowExpr env <| fun env -> - TcExprRecord cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, mWholeExpr) + match withExprOpt with + | None + | Some(SynExpr.Ident _, _) -> + TcNonControlFlowExpr env <| fun env -> + TcExprRecord cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, mWholeExpr) + | Some withExpr -> + BindOriginalRecdExpr withExpr (fun withExpr -> SynExpr.Record (inherits, withExpr, synRecdFields, mWholeExpr)) + |> TcExpr cenv overallTy env tpenv | SynExpr.While (spWhile, synGuardExpr, synBodyExpr, m) -> TcExprWhileLoop cenv overallTy env tpenv (spWhile, synGuardExpr, synBodyExpr, m) @@ -5682,7 +5723,7 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE cenv.TcArrayOrListComputedExpression cenv env overallTy tpenv (isArray, comp) m | SynExpr.LetOrUse _ -> - TcLinearExprs (TcExprThatCanBeCtorBody cenv) cenv env overallTy tpenv false synExpr (fun x -> x) + TcLinearExprs (TcExprThatCanBeCtorBody cenv) cenv env overallTy tpenv false synExpr id | SynExpr.TryWith (synBodyExpr, synWithClauses, mTryToLast, spTry, spWith, trivia) -> TcExprTryWith cenv overallTy env tpenv (synBodyExpr, synWithClauses, trivia.WithToEndRange, mTryToLast, spTry, spWith) @@ -5714,7 +5755,7 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE TcStmtThatCantBeCtorBody cenv env tpenv synInnerExpr | SynExpr.IfThenElse _ -> - TcLinearExprs (TcExprThatCanBeCtorBody cenv) cenv env overallTy tpenv false synExpr (fun x -> x) + TcLinearExprs (TcExprThatCanBeCtorBody cenv) cenv env overallTy tpenv false synExpr id // This is for internal use in the libraries only | SynExpr.LibraryOnlyStaticOptimization (constraints, expr2, expr3, m) -> @@ -6055,7 +6096,7 @@ and TcExprJoinIn (cenv: cenv) overallTy env tpenv (synExpr1, mInToken, synExpr2, and TcExprSequential (cenv: cenv) overallTy env tpenv (synExpr, _sp, dir, synExpr1, synExpr2, m) = if dir then - TcLinearExprs (TcExprThatCanBeCtorBody cenv) cenv env overallTy tpenv false synExpr (fun x -> x) + TcLinearExprs (TcExprThatCanBeCtorBody cenv) cenv env overallTy tpenv false synExpr id else // Constructors using "new (...) = then " let env = { env with eIsControlFlow = true } @@ -6799,6 +6840,12 @@ 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 + let logicalMethId = id + bindingRhs, logicalMethId, memberFlags | SynPat.InstanceMember(thisId, memberId, _, _, _), Some memberFlags -> CheckMemberFlags None NewSlotsOK OverridesOK memberFlags mBinding @@ -7001,10 +7048,14 @@ and TcObjectExpr (cenv: cenv) env tpenv (objTy, realObjTy, argopt, binds, extraI // 2. check usage conditions overridesAndVirts |> List.iter (fun (m, implTy, dispatchSlots, dispatchSlotsKeyed, availPriorOverrides, overrides) -> 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, implTy, dispatchSlots, availPriorOverrides, overrideSpecs) |> ignore) + DispatchSlotChecking.CheckDispatchSlotsAreImplemented (env.DisplayEnv, cenv.infoReader, m, env.NameEnv, cenv.tcSink, false, true, implTy, dispatchSlots, availPriorOverrides, overrideSpecs) |> ignore) // 3. create the specs of overrides let allTypeImpls = @@ -7012,9 +7063,9 @@ and TcObjectExpr (cenv: cenv) env tpenv (objTy, realObjTy, argopt, binds, extraI let overrides' = [ for overrideMeth in overrides do let overrideInfo, (_, thisVal, methodVars, bindingAttribs, bindingBody) = overrideMeth - let (Override(_, _, id, mtps, _, _, _, isFakeEventProperty, _)) = overrideInfo + let (Override(_, _, id, mtps, _, _, _, isFakeEventProperty, _, isInstance)) = overrideInfo - if not isFakeEventProperty then + if not isFakeEventProperty && isInstance then let searchForOverride = dispatchSlotsKeyed |> NameMultiMap.find id.idText @@ -7334,7 +7385,7 @@ and TcConstExpr cenv (overallTy: OverallTy) env m tpenv c = let expr = let modName = "NumericLiteral" + suffix let ad = env.eAccessRights - match ResolveLongIdentAsModuleOrNamespace cenv.tcSink cenv.amap m true OpenQualified env.eNameResEnv ad (ident (modName, m)) [] false with + match ResolveLongIdentAsModuleOrNamespace cenv.tcSink cenv.amap m true OpenQualified env.eNameResEnv ad (ident (modName, m)) [] false ShouldNotifySink.Yes with | Result [] | Exception _ -> error(Error(FSComp.SR.tcNumericLiteralRequiresModule modName, m)) | Result ((_, mref, _) :: _) -> @@ -8083,7 +8134,7 @@ and TcNameOfExpr (cenv: cenv) env tpenv (synArg: SynExpr) = // 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. let typeNameResInfo = GetLongIdentTypeNameInfo delayed - let nameResolutionResult = ResolveLongIdentAsExprAndComputeRange cenv.tcSink cenv.nameResolver (rangeOfLid longId) ad env.eNameResEnv typeNameResInfo longId + let nameResolutionResult = ResolveLongIdentAsExprAndComputeRange cenv.tcSink cenv.nameResolver (rangeOfLid longId) ad env.eNameResEnv typeNameResInfo longId None let resolvesAsExpr = match nameResolutionResult with | Result (_, item, _, _, _ as res) @@ -8121,7 +8172,7 @@ and TcNameOfExpr (cenv: cenv) env tpenv (synArg: SynExpr) = let resolvedToModuleOrNamespaceName = if delayed.IsEmpty then let id,rest = List.headAndTail longId - match ResolveLongIdentAsModuleOrNamespace cenv.tcSink cenv.amap m true OpenQualified env.eNameResEnv ad id rest true with + match ResolveLongIdentAsModuleOrNamespace cenv.tcSink cenv.amap m true OpenQualified env.eNameResEnv ad id rest true ShouldNotifySink.Yes with | Result modref when delayed.IsEmpty && modref |> List.exists (p23 >> IsEntityAccessible cenv.amap m ad) -> true // resolved to a module or namespace, done with checks | _ -> @@ -8202,13 +8253,7 @@ and TcApplicationThen (cenv: cenv) (overallTy: OverallTy) env tpenv mExprAndArg // atomicLeftExpr[idx] unifying as application gives a warning if not isSugar then - match synArg, atomicFlag with - | (SynExpr.ArrayOrList (false, _, _) | SynExpr.ArrayOrListComputed (false, _, _)), ExprAtomicFlag.Atomic -> - if g.langVersion.SupportsFeature LanguageFeature.IndexerNotationWithoutDot then - informationalWarning(Error(FSComp.SR.tcHighPrecedenceFunctionApplicationToListDeprecated(), mExprAndArg)) - elif not (g.langVersion.IsExplicitlySpecifiedAs50OrBefore()) then - informationalWarning(Error(FSComp.SR.tcHighPrecedenceFunctionApplicationToListReserved(), mExprAndArg)) - | _ -> () + checkHighPrecedenceFunctionApplicationToList g [synArg] atomicFlag mExprAndArg match leftExpr with | ApplicableExpr(expr=NameOfExpr g _) when g.langVersion.SupportsFeature LanguageFeature.NameOf -> @@ -8300,7 +8345,8 @@ and TcLongIdentThen (cenv: cenv) (overallTy: OverallTy) env tpenv (SynLongIdent( let ad = env.eAccessRights let typeNameResInfo = GetLongIdentTypeNameInfo delayed let nameResolutionResult = - ResolveLongIdentAsExprAndComputeRange cenv.tcSink cenv.nameResolver (rangeOfLid longId) ad env.eNameResEnv typeNameResInfo longId + let maybeAppliedArgExpr = DelayedItem.maybeAppliedArgForPreferExtensionOverProperty delayed + ResolveLongIdentAsExprAndComputeRange cenv.tcSink cenv.nameResolver (rangeOfLid longId) ad env.eNameResEnv typeNameResInfo longId maybeAppliedArgExpr |> ForceRaise TcItemThen cenv overallTy env tpenv nameResolutionResult None delayed @@ -8552,7 +8598,7 @@ and TcTypeItemThen (cenv: cenv) overallTy env nm ty tpenv mItem tinstEnclosing d let item = Item.Types(nm, [ty]) CallNameResolutionSink cenv.tcSink (mExprAndTypeArgs, env.NameEnv, item, emptyTyparInst, ItemOccurence.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 + 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' -> @@ -9116,8 +9162,9 @@ and TcLookupThen cenv overallTy env tpenv mObjExpr objExpr objExprTy longId dela // 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 item, mItem, rest, afterResolution = ResolveExprDotLongIdentAndComputeRange cenv.tcSink cenv.nameResolver mExprAndLongId ad env.NameEnv objExprTy longId TypeNameResolutionInfo.Default findFlag false + + 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 and TcLookupItemThen cenv overallTy env tpenv mObjExpr objExpr objExprTy delayed item mItem rest afterResolution = @@ -9366,6 +9413,9 @@ and TcMethodApplicationThen // Nb. args is always of List.length <= 1 except for indexed setters, when it is 2 let mWholeExpr = (m, args) ||> List.fold (fun m arg -> unionRanges m arg.Range) + // c.atomicLeftMethExpr[idx] as application gives a warning + checkHighPrecedenceFunctionApplicationToList g args atomicFlag mWholeExpr + // Work out if we know anything about the return type of the overall expression. If there are any delayed // lookups then we don't know anything. let exprTy = if isNil delayed then overallTy else MustEqual (NewInferenceType g) @@ -9395,7 +9445,8 @@ and GetNewInferenceTypeForMethodArg (cenv: cenv) env tpenv x = 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.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 @@ -10525,8 +10576,8 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt match rotRetSynAttrs with | [] -> valSynData | {Range=mHead} :: _ -> - let (SynValData(valMf, SynValInfo(args, SynArgInfo(attrs, opt, retId)), valId, tap)) = valSynData - SynValData(valMf, SynValInfo(args, SynArgInfo({Attributes=rotRetSynAttrs; Range=mHead} :: attrs, opt, retId)), valId, tap) + let (SynValData(valMf, SynValInfo(args, SynArgInfo(attrs, opt, retId)), valId)) = valSynData + SynValData(valMf, SynValInfo(args, SynArgInfo({Attributes=rotRetSynAttrs; Range=mHead} :: attrs, opt, retId)), valId) retAttribs, valAttribs, valSynData let isVolatile = HasFSharpAttribute g g.attrib_VolatileFieldAttribute valAttribs @@ -10963,7 +11014,7 @@ and TcAttributesWithPossibleTargetsEx canFail (cenv: cenv) env attrTgt attrEx sy attribsAndTargets, didFail || didFail2 - with e -> + with RecoverableException e -> errorRecovery e synAttrib.Range [], false) @@ -11008,7 +11059,7 @@ and TcLetBinding (cenv: cenv) isUse env containerInfo declKind tpenv (synBinds, let lazyFreeInEnv = lazy (GeneralizationHelpers.ComputeUngeneralizableTypars env) // Generalize the bindings... - (((fun x -> x), env, tpenv), checkedBinds) ||> List.fold (fun (buildExpr, env, tpenv) tbinfo -> + ((id, env, tpenv), checkedBinds) ||> List.fold (fun (buildExpr, env, tpenv) tbinfo -> let (CheckedBindingInfo(inlineFlag, attrs, xmlDoc, tcPatPhase2, explicitTyparInfo, nameToPrelimValSchemeMap, rhsExpr, _, tauTy, m, debugPoint, _, literalValue, isFixed)) = tbinfo let enclosingDeclaredTypars = [] let (ExplicitTyparInfo(_, declaredTypars, canInferTypars)) = explicitTyparInfo @@ -11235,7 +11286,11 @@ and ApplyAbstractSlotInference (cenv: cenv) (envinner: TcEnv) (_: Val option) (a let uniqueAbstractMethSigs = match dispatchSlots with | [] -> - errorR(Error(FSComp.SR.tcNoMemberFoundForOverride(), memberId.idRange)) + let instanceExpected = memberFlags.IsInstance + if instanceExpected then + errorR(Error(FSComp.SR.tcNoMemberFoundForOverride(), memberId.idRange)) + else + errorR(Error(FSComp.SR.tcNoStaticMemberFoundForOverride (), memberId.idRange)) [] | slot :: _ as slots -> @@ -11294,7 +11349,7 @@ and ApplyAbstractSlotInference (cenv: cenv) (envinner: TcEnv) (_: Val option) (a | SynMemberKind.PropertyGet | SynMemberKind.PropertySet as k -> - let dispatchSlots = GetAbstractPropInfosForSynPropertyDecl(cenv.infoReader, ad, memberId, m, typToSearchForAbstractMembers) + let dispatchSlots = GetAbstractPropInfosForSynPropertyDecl(cenv.infoReader, ad, memberId, m, typToSearchForAbstractMembers, memberFlags) // Only consider those abstract slots where the get/set flags match the value we're defining let dispatchSlots = @@ -11307,7 +11362,11 @@ and ApplyAbstractSlotInference (cenv: cenv) (envinner: TcEnv) (_: Val option) (a let uniqueAbstractPropSigs = match dispatchSlots with | [] when not (CompileAsEvent g attribs) -> - errorR(Error(FSComp.SR.tcNoPropertyFoundForOverride(), memberId.idRange)) + let instanceExpected = memberFlags.IsInstance + if instanceExpected then + errorR(Error(FSComp.SR.tcNoPropertyFoundForOverride(), memberId.idRange)) + else + errorR (Error(FSComp.SR.tcNoStaticPropertyFoundForOverride (), memberId.idRange)) [] | [uniqueAbstractProp] -> [uniqueAbstractProp] | _ -> @@ -11511,7 +11570,6 @@ and AnalyzeRecursiveInstanceMemberDecl thisId, memberId: Ident, toolId: Ident option, - isTransformedProperty: bool, bindingAttribs, vis2, tcrefContainerInfo, @@ -11570,12 +11628,11 @@ and AnalyzeRecursiveInstanceMemberDecl | None -> None let memberInfo = MakeMemberDataAndMangledNameForMemberVal(g, tcref, isExtrinsic, bindingAttribs, optInferredImplSlotTys, memberFlags, valSynInfo, memberId, false) - // This line factored in the 'get' or 'set' as the identifier for a property declaration using "with get () = ... and set v = ..." + // We used to factored in the 'get' or 'set' as the identifier for a property declaration using "with get () = ... and set v = ..." // It has been removed from FSharp.Compiler.Service because we want the property name to be the location of // the definition of these symbols. // // See https://github.com/fsharp/FSharp.Compiler.Service/issues/79. - let memberId = match toolId with Some tid when isTransformedProperty -> ident(memberId.idText, tid.idRange) | _ -> memberId envinner, tpenv, memberId, toolId, Some memberInfo, vis, vis2, None, enclosingDeclaredTypars, baseValOpt, explicitTyparInfo, bindingRhs, declaredTypars | _ -> @@ -11590,7 +11647,6 @@ and AnalyzeRecursiveDecl declaredTypars, thisIdOpt, valSynInfo, - isTransformedProperty, explicitTyparInfo, newslotsOK, overridesOK, @@ -11635,7 +11691,7 @@ and AnalyzeRecursiveDecl AnalyzeRecursiveInstanceMemberDecl (cenv, envinner, tpenv, declKind, synTyparDecls, valSynInfo, explicitTyparInfo, newslotsOK, - overridesOK, vis1, thisId, memberId, toolId, isTransformedProperty, + overridesOK, vis1, thisId, memberId, toolId, bindingAttribs, vis2, tcrefContainerInfo, memberFlagsOpt, ty, bindingRhs, mBinding) @@ -11665,7 +11721,7 @@ and AnalyzeAndMakeAndPublishRecursiveValue // Pull apart the inputs let (NormalizedBinding(vis1, bindingKind, isInline, isMutable, bindingSynAttribs, bindingXmlDoc, synTyparDecls, valSynData, declPattern, bindingRhs, mBinding, debugPoint)) = binding let (NormalizedBindingRhs(_, _, bindingExpr)) = bindingRhs - let (SynValData(memberFlagsOpt, valSynInfo, thisIdOpt, transformedFromProperty)) = valSynData + let (SynValData(memberFlagsOpt, valSynInfo, thisIdOpt)) = valSynData let (ContainerInfo(altActualParent, tcrefContainerInfo)) = containerInfo let attrTgt = declKind.AllowedAttribTargets memberFlagsOpt @@ -11689,7 +11745,7 @@ and AnalyzeAndMakeAndPublishRecursiveValue let envinner, tpenv, bindingId, toolIdOpt, memberInfoOpt, vis, vis2, safeThisValOpt, enclosingDeclaredTypars, baseValOpt, explicitTyparInfo, bindingRhs, declaredTypars = AnalyzeRecursiveDecl (cenv, envinner, tpenv, declKind, synTyparDecls, declaredTypars, thisIdOpt, valSynInfo, - transformedFromProperty.IsSome, explicitTyparInfo, + explicitTyparInfo, newslotsOK, overridesOK, vis1, declPattern, bindingAttribs, tcrefContainerInfo, memberFlagsOpt, ty, bindingRhs, mBinding) @@ -12265,7 +12321,7 @@ and TcLetrecBindings overridesOK (cenv: cenv) env tpenv (binds, bindsm, scopem) bindsWithoutLaziness //(fun (fun doBindings bindings -> doBindings bindings) - (fun bindings -> bindings) + id (fun doBindings bindings -> [doBindings bindings]) bindsm List.concat results diff --git a/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fsi b/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fsi index 0ecc045f05..16a759c2e3 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fsi +++ b/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fsi @@ -578,6 +578,10 @@ val PublishTypeDefn: cenv: TcFileState -> env: TcEnv -> mspec: Tycon -> unit /// Publish a value definition to the module/namespace type accumulator. val PublishValueDefn: cenv: TcFileState -> env: TcEnv -> declKind: DeclKind -> vspec: Val -> unit +/// Publish a value definition to the module/namespace type accumulator. +val PublishValueDefnMaybeInclCompilerGenerated: + cenv: TcFileState -> env: TcEnv -> inclCompilerGenerated: bool -> declKind: DeclKind -> vspec: Val -> unit + /// Mark a typar as no longer being an inference type variable val SetTyparRigid: DisplayEnv -> range -> Typar -> unit diff --git a/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fs b/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fs index 252066f868..00229e5eb4 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fs +++ b/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fs @@ -216,7 +216,7 @@ and TcPatBindingName cenv env id ty isMemberThis vis1 valReprInfo (vFlags: TcPat and TcPatAndRecover warnOnUpper cenv (env: TcEnv) valReprInfo (vFlags: TcPatValFlags) patEnv ty (synPat: SynPat) = try TcPat warnOnUpper cenv env valReprInfo vFlags patEnv ty synPat - with e -> + with RecoverableException e -> // Error recovery - return some rubbish expression, but replace/annotate // the type of the current expression with a type variable that indicates an error let m = synPat.Range @@ -335,7 +335,7 @@ and TcConstPat warnOnUpper cenv env vFlags patEnv ty synConst m = try let c = TcConst cenv ty m env synConst (fun _ -> TPat_const (c, m)), patEnv - with e -> + with RecoverableException e -> errorRecovery e m (fun _ -> TPat_error m), patEnv @@ -387,14 +387,14 @@ and TcPatOr warnOnUpper cenv env vFlags patEnv ty pat1 pat2 m = let pat2R, patEnv2 = TcPat warnOnUpper cenv env None vFlags (TcPatLinearEnv(tpenv, names, takenNames)) ty pat2 let (TcPatLinearEnv(tpenv, names2, takenNames2)) = patEnv2 - if not (takenNames1 = takenNames2) then + if takenNames1 <> takenNames2 then errorR (UnionPatternsBindDifferentNames m) names1 |> Map.iter (fun _ (PrelimVal1 (id=id1; prelimType=ty1)) -> match names2.TryGetValue id1.idText with | true, PrelimVal1 (id=id2; prelimType=ty2) -> try UnifyTypes cenv env id2.idRange ty1 ty2 - with exn -> errorRecovery exn m + with RecoverableException exn -> errorRecovery exn m | _ -> ()) let namesR = NameMap.layer names1 names2 @@ -417,7 +417,7 @@ and TcPatTuple warnOnUpper cenv env vFlags patEnv ty isExplicitStruct args m = let argsR, acc = TcPatterns warnOnUpper cenv env vFlags patEnv argTys args let phase2 values = TPat_tuple(tupInfo, List.map (fun f -> f values) argsR, argTys, m) phase2, acc - with e -> + with RecoverableException e -> errorRecovery e m let _, acc = TcPatterns warnOnUpper cenv env vFlags patEnv (NewInferenceTypes g args) args let phase2 _ = TPat_error m @@ -462,7 +462,7 @@ and TcRecordPat warnOnUpper cenv env vFlags patEnv ty fieldPats m = and TcNullPat cenv env patEnv ty m = try AddCxTypeUseSupportsNull env.DisplayEnv cenv.css m NoTrace ty - with exn -> + with RecoverableException exn -> errorRecovery exn m (fun _ -> TPat_null m), patEnv @@ -486,7 +486,7 @@ and IsNameOf (cenv: cenv) (env: TcEnv) ad m (id: Ident) = let g = cenv.g id.idText = "nameof" && try - match ResolveExprLongIdent cenv.tcSink cenv.nameResolver m ad env.NameEnv TypeNameResolutionInfo.Default [id] with + match ResolveExprLongIdent cenv.tcSink cenv.nameResolver m ad env.NameEnv TypeNameResolutionInfo.Default [id] None with | Result (_, Item.Value vref, _) -> valRefEq g vref g.nameof_vref | _ -> false with _ -> false @@ -579,9 +579,14 @@ and ApplyUnionCaseOrExn m (cenv: cenv) env overallTy item = CheckUnionCaseAccessible cenv.amap m ad ucref |> ignore let resTy = actualResultTyOfUnionCase ucinfo.TypeInst ucref let inst = mkTyparInst ucref.TyconRef.TyparsNoRange ucinfo.TypeInst - UnifyTypes cenv env m overallTy resTy - let mkf mArgs args = TPat_unioncase(ucref, ucinfo.TypeInst, args, unionRanges m mArgs) - mkf, actualTysOfUnionCaseFields inst ucref, [ for f in ucref.AllFieldsAsList -> f] + let mkf = + try + UnifyTypes cenv env m overallTy resTy + fun mArgs args -> TPat_unioncase(ucref, ucinfo.TypeInst, args, unionRanges m mArgs) + with RecoverableException e -> + errorRecovery e m + fun _ _ -> TPat_error m + mkf, actualTysOfUnionCaseFields inst ucref, [ for f in ucref.AllFieldsAsList -> f ] | _ -> invalidArg "item" "not a union case or exception reference" diff --git a/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fs b/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fs index a1d36d6359..5f59e1ac3e 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fs +++ b/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fs @@ -11,6 +11,9 @@ open FSharp.Compiler.SyntaxTreeOps open FSharp.Compiler.Text.Position open FSharp.Compiler.Text.Range open FSharp.Compiler.TypedTree +open FSharp.Compiler.Xml +open FSharp.Compiler.SyntaxTrivia +open TypedTreeOps /// Merges updates to nested record fields on the same level in record copy-and-update. /// @@ -30,16 +33,15 @@ let GroupUpdatesToNestedFields (fields: ((Ident list * Ident) * SynExpr option) let rec groupIfNested res xs = match xs with | [] -> res - | x :: [] -> x :: res + | [ x ] -> x :: res | x :: y :: ys -> match x, y with - | (lidwid, Some (SynExpr.Record (baseInfo, copyInfo, fields1, m))), (_, Some (SynExpr.Record (recordFields = fields2))) -> + | (lidwid, Some(SynExpr.Record(baseInfo, copyInfo, fields1, m))), (_, Some(SynExpr.Record(recordFields = fields2))) -> let reducedRecd = (lidwid, Some(SynExpr.Record(baseInfo, copyInfo, fields1 @ fields2, m))) groupIfNested res (reducedRecd :: ys) - | (lidwid, Some (SynExpr.AnonRecd (isStruct, copyInfo, fields1, m, trivia))), - (_, Some (SynExpr.AnonRecd (recordFields = fields2))) -> + | (lidwid, Some(SynExpr.AnonRecd(isStruct, copyInfo, fields1, m, trivia))), (_, Some(SynExpr.AnonRecd(recordFields = fields2))) -> let reducedRecd = (lidwid, Some(SynExpr.AnonRecd(isStruct, copyInfo, fields1 @ fields2, m, trivia))) @@ -118,9 +120,10 @@ let TransformAstForNestedUpdates (cenv: TcFileState) (env: TcEnv) overallTy (lid synExprRecd copyInfo fieldId rest exprBeingAssigned match item with - | Item.AnonRecdField(anonInfo = { - AnonRecdTypeInfo.TupInfo = TupInfo.Const isStruct - }) -> + | Item.AnonRecdField( + anonInfo = { + AnonRecdTypeInfo.TupInfo = TupInfo.Const isStruct + }) -> let fields = [ LongIdentWithDots([ fieldId ], []), None, nestedField ] SynExpr.AnonRecd(isStruct, copyInfo outerFieldId, fields, outerFieldId.idRange, { OpeningBraceRange = range0 }) | _ -> @@ -146,3 +149,29 @@ let TransformAstForNestedUpdates (cenv: TcFileState) (env: TcEnv) overallTy (lid (accessIds, outerFieldId), Some(synExprRecd (recdExprCopyInfo (fields |> List.map fst) withExpr) outerFieldId rest exprBeingAssigned) + +/// When the original expression in copy-and-update is more complex than `{ x with ... }`, like `{ f () with ... }`, +/// we bind it first, so that it's not evaluated multiple times during a nested update +let BindOriginalRecdExpr (withExpr: SynExpr * BlockSeparator) mkRecdExpr = + let originalExpr, blockSep = withExpr + let mOrigExprSynth = originalExpr.Range.MakeSynthetic() + let id = mkSynId mOrigExprSynth "bind@" + let withExpr = SynExpr.Ident id, blockSep + + let binding = + mkSynBinding + (PreXmlDoc.Empty, mkSynPatVar None id) + (None, + false, + false, + mOrigExprSynth, + DebugPointAtBinding.NoneAtSticky, + None, + originalExpr, + mOrigExprSynth, + [], + [], + None, + SynBindingTrivia.Zero) + + SynExpr.LetOrUse(false, false, [ binding ], mkRecdExpr (Some withExpr), mOrigExprSynth, SynExprLetOrUseTrivia.Zero) diff --git a/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fsi b/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fsi index f239c82436..4e4f40d750 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fsi +++ b/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fsi @@ -3,7 +3,6 @@ module internal FSharp.Compiler.CheckRecordSyntaxHelpers open FSharp.Compiler.CheckBasics -open FSharp.Compiler.NameResolution open FSharp.Compiler.Syntax open FSharp.Compiler.Text open FSharp.Compiler.TypedTree @@ -19,3 +18,6 @@ val TransformAstForNestedUpdates<'a> : exprBeingAssigned: SynExpr -> withExpr: SynExpr * (range * 'a) -> (Ident list * Ident) * SynExpr option + +val BindOriginalRecdExpr: + withExpr: SynExpr * BlockSeparator -> mkRecdExpr: ((SynExpr * BlockSeparator) option -> SynExpr) -> SynExpr diff --git a/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fs b/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fs index 8eeb6d11bb..b1b472a9dd 100644 --- a/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fs +++ b/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fs @@ -1066,7 +1066,7 @@ and SolveAnonInfoEqualsAnonInfo (csenv: ConstraintSolverEnv) m2 (anonInfo1: Anon if not (ccuEq anonInfo1.Assembly anonInfo2.Assembly) then do! ErrorD (ConstraintSolverError(FSComp.SR.tcAnonRecdCcuMismatch(anonInfo1.Assembly.AssemblyName, anonInfo2.Assembly.AssemblyName), csenv.m,m2)) - if not (anonInfo1.SortedNames = anonInfo2.SortedNames) then + if anonInfo1.SortedNames <> anonInfo2.SortedNames then let (|Subset|Superset|Overlap|CompletelyDifferent|) (first, second) = let first = Set first let second = Set second @@ -2359,7 +2359,7 @@ and SolveTypeSupportsComparison (csenv: ConstraintSolverEnv) ndeep m2 trace ty = // Give a good error for structural types excluded from the comparison relation because of their fields elif (isAppTy g ty && let tcref = tcrefOfAppTy g ty - AugmentWithHashCompare.TyconIsCandidateForAugmentationWithCompare g tcref.Deref && + AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithCompare g tcref.Deref && Option.isNone tcref.GeneratedCompareToWithComparerValues) then ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportComparison3(NicePrint.minimalStringOfType denv ty), m, m2)) @@ -2389,7 +2389,7 @@ and SolveTypeSupportsEquality (csenv: ConstraintSolverEnv) ndeep m2 trace ty = match ty with | AppTy g (tcref, tinst) -> // Give a good error for structural types excluded from the equality relation because of their fields - if AugmentWithHashCompare.TyconIsCandidateForAugmentationWithEquals g tcref.Deref && + if AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithEquals g tcref.Deref && Option.isNone tcref.GeneratedHashAndEqualsWithComparerValues then ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportEquality3(NicePrint.minimalStringOfType denv ty), m, m2)) diff --git a/src/fcs-fable/src/Compiler/Checking/InfoReader.fsi b/src/fcs-fable/src/Compiler/Checking/InfoReader.fsi index 2d6489e70c..3e8ceb927c 100644 --- a/src/fcs-fable/src/Compiler/Checking/InfoReader.fsi +++ b/src/fcs-fable/src/Compiler/Checking/InfoReader.fsi @@ -41,6 +41,7 @@ type PropertyCollector = new: g: TcGlobals * amap: ImportMap * m: range * ty: TType * optFilter: string option * ad: AccessorDomain -> PropertyCollector + member Close: unit -> PropInfo list member Collect: membInfo: ValMemberInfo * vref: ValRef -> unit @@ -109,6 +110,7 @@ type InfoReader = /// Read the IL fields of a type, including inherited ones. Cache the result for monomorphic types. member GetILFieldInfosOfType: optFilter: string option * ad: AccessorDomain * m: range * ty: TType -> ILFieldInfo list + member GetImmediateIntrinsicEventsOfType: optFilter: string option * ad: AccessorDomain * m: range * ty: TType -> EventInfo list diff --git a/src/fcs-fable/src/Compiler/Checking/MethodCalls.fs b/src/fcs-fable/src/Compiler/Checking/MethodCalls.fs index eeec6f40ae..03f3177d2e 100644 --- a/src/fcs-fable/src/Compiler/Checking/MethodCalls.fs +++ b/src/fcs-fable/src/Compiler/Checking/MethodCalls.fs @@ -841,7 +841,7 @@ let InferLambdaArgsForLambdaPropagation origRhsExpr = match e with | SynExpr.Lambda (body = rest) -> 1 + loop rest | SynExpr.MatchLambda _ -> 1 - | SynExpr.DotLambda _ -> 1 + | SynExpr.DotLambda (expr = body) -> 1 + loop body | _ -> 0 loop origRhsExpr diff --git a/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fs b/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fs index 314c2d4dd1..5abf08578f 100644 --- a/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fs +++ b/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fs @@ -44,7 +44,9 @@ type OverrideInfo = argTypes: TType list list * returnType: TType option * isFakeEventProperty: bool * - isCompilerGenerated: bool + isCompilerGenerated: bool * + isInstance: bool + member x.CanImplement = let (Override(canImplement=a)) = x in a @@ -61,6 +63,9 @@ type OverrideInfo = member x.ReturnType = let (Override(returnType=b)) = x in b member x.IsCompilerGenerated = let (Override(isCompilerGenerated=b)) = x in b + + member x.IsInstance = let (Override(isInstance=b)) = x in b + type RequiredSlot = | RequiredSlot of methodInfo: MethInfo * isOptional: bool @@ -104,7 +109,7 @@ exception OverrideDoesntOverride of DisplayEnv * OverrideInfo * MethInfo option module DispatchSlotChecking = /// 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, _, _)) = + let PrintOverrideToBuffer denv os (Override(_, _, id, methTypars, memberToParentInst, argTys, retTy, _, _, _)) = let denv = { denv with showTyparBinding = true } let retTy = (retTy |> GetFSharpViewOfReturnType denv.g) let argInfos = @@ -136,7 +141,7 @@ module DispatchSlotChecking = let (CompiledSig (argTys, retTy, fmethTypars, ttpinst)) = CompiledSigOfMeth g amap m minfo let isFakeEventProperty = minfo.IsFSharpEventPropertyMethod - Override(parentType, minfo.ApparentEnclosingTyconRef, mkSynId m nm, fmethTypars, ttpinst, argTys, retTy, isFakeEventProperty, false) + Override(parentType, minfo.ApparentEnclosingTyconRef, mkSynId m nm, fmethTypars, ttpinst, argTys, retTy, isFakeEventProperty, false, minfo.IsInstance) /// Get the override info for a value being used to implement a dispatch slot. let GetTypeMemberOverrideInfo g reqdTy (overrideBy: ValRef) = @@ -175,7 +180,7 @@ module DispatchSlotChecking = //CanImplementAnySlot <<----- Change to this to enable implicit interface implementation let isFakeEventProperty = overrideBy.IsFSharpEventProperty(g) - Override(implKind, overrideBy.MemberApparentEntity, mkSynId overrideBy.Range nm, memberMethodTypars, memberToParentInst, argTys, retTy, isFakeEventProperty, overrideBy.IsCompilerGenerated) + Override(implKind, overrideBy.MemberApparentEntity, mkSynId overrideBy.Range nm, memberMethodTypars, memberToParentInst, argTys, retTy, isFakeEventProperty, overrideBy.IsCompilerGenerated, overrideBy.IsInstanceMember) /// Get the override information for an object expression method being used to implement dispatch slots let GetObjectExprOverrideInfo g amap (implTy, id: Ident, memberFlags, ty, arityInfo, bindingAttribs, rhsExpr) = @@ -200,7 +205,7 @@ module DispatchSlotChecking = CanImplementAnyClassHierarchySlot //CanImplementAnySlot <<----- Change to this to enable implicit interface implementation let isFakeEventProperty = CompileAsEvent g bindingAttribs - let overrideByInfo = Override(implKind, tcrefOfAppTy g implTy, id, tps, [], argTys, retTy, isFakeEventProperty, false) + let overrideByInfo = Override(implKind, tcrefOfAppTy g implTy, id, tps, [], argTys, retTy, isFakeEventProperty, false, memberFlags.IsInstance) overrideByInfo, (baseValOpt, thisv, vs, bindingAttribs, rhsExpr) | _ -> error(InternalError("Unexpected shape for object expression override", id.idRange)) @@ -227,7 +232,7 @@ module DispatchSlotChecking = /// Check if an override is a partial match for the requirements for a dispatch slot except for the name. let IsSigPartialMatch g (dispatchSlot: MethInfo) compiledSig overrideBy = - let (Override(_, _, _, methTypars, _, argTys, _retTy, _, _)) = overrideBy + let (Override(_, _, _, methTypars, _, argTys, _retTy, _, _, _)) = overrideBy let (CompiledSig (vargTys, _, fvmethTypars, _)) = compiledSig methTypars.Length = fvmethTypars.Length && IsTyparKindMatch compiledSig overrideBy && @@ -249,7 +254,7 @@ module DispatchSlotChecking = /// Check if an override exactly matches the requirements for a dispatch slot except for the name. let IsSigExactMatch g amap m dispatchSlot overrideBy = - let (Override(_, _, _, methTypars, memberToParentInst, argTys, retTy, _, _)) = overrideBy + let (Override(_, _, _, methTypars, memberToParentInst, argTys, retTy, _, _, _)) = overrideBy let compiledSig = CompiledSigOfMeth g amap m dispatchSlot IsSigPartialMatch g dispatchSlot compiledSig overrideBy && let (CompiledSig (vargTys, vrty, fvmethTypars, ttpinst)) = compiledSig @@ -300,7 +305,8 @@ module DispatchSlotChecking = /// Check if an override exactly matches the requirements for a dispatch slot. let IsExactMatch g amap m dispatchSlot overrideBy = IsNameMatch dispatchSlot overrideBy && - IsSigExactMatch g amap m dispatchSlot overrideBy + IsSigExactMatch g amap m dispatchSlot overrideBy && + dispatchSlot.IsInstance = overrideBy.IsInstance /// Check if an override implements a dispatch slot let OverrideImplementsDispatchSlot g amap m dispatchSlot availPriorOverride = @@ -318,14 +324,15 @@ module DispatchSlotChecking = let CheckDispatchSlotsAreImplemented (denv, infoReader: InfoReader, m, nenv, sink: TcResultsSink, isOverallTyAbstract, + isObjExpr: bool, reqdTy, dispatchSlots: RequiredSlot list, availPriorOverrides: OverrideInfo list, - overrides: OverrideInfo list) = + overrides: OverrideInfo list) = let g = infoReader.g let amap = infoReader.amap - let isReqdTyInterface = isInterfaceTy g reqdTy + let isReqdTyInterface = isInterfaceTy g reqdTy let showMissingMethodsAndRaiseErrors = (isReqdTyInterface || not isOverallTyAbstract) let mutable res = true @@ -353,8 +360,8 @@ module DispatchSlotChecking = |> List.filter (OverrideImplementsDispatchSlot g amap m dispatchSlot) match maybeResolvedSlot with - | [ovd] -> - if not ovd.IsCompilerGenerated then + | [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) | [] -> @@ -372,8 +379,9 @@ module DispatchSlotChecking = // error reporting path let compiledSig = CompiledSigOfMeth g amap m dispatchSlot - let noimpl() = - missingOverloadImplementation.Add((isReqdTyInterface, lazy NicePrint.stringOfMethInfo infoReader m denv dispatchSlot)) + let noimpl() = + if dispatchSlot.IsInstance then + missingOverloadImplementation.Add((isReqdTyInterface, lazy NicePrint.stringOfMethInfo infoReader m denv dispatchSlot)) match overrides |> List.filter (IsPartialMatch g dispatchSlot compiledSig) with | [] -> @@ -386,7 +394,7 @@ module DispatchSlotChecking = noimpl() | [ overrideBy ] -> - let (Override(_, _, _, methTypars, _, argTys, _, _, _)) = overrideBy + let (Override(_, _, _, methTypars, _, argTys, _, _, _, isInstance)) = overrideBy let moreThanOnePossibleDispatchSlot = dispatchSlots @@ -395,18 +403,21 @@ module DispatchSlotChecking = |> not let (CompiledSig (vargTys, _, fvmethTypars, _)) = compiledSig - - if moreThanOnePossibleDispatchSlot then - noimpl() - - elif argTys.Length <> vargTys.Length then - fail(Error(FSComp.SR.typrelMemberDoesNotHaveCorrectNumberOfArguments(FormatOverride denv overrideBy, FormatMethInfoSig g amap m denv dispatchSlot), overrideBy.Range)) - elif methTypars.Length <> fvmethTypars.Length then - 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 - fail(Error(FSComp.SR.typrelMemberCannotImplement(FormatOverride denv overrideBy, NicePrint.stringOfMethInfo infoReader m denv dispatchSlot, FormatMethInfoSig g amap m denv dispatchSlot), overrideBy.Range)) + + // Object expressions can only implement instance members + let isObjExprWithInstanceMembers = (isObjExpr && isInstance) + if isObjExprWithInstanceMembers || isInstance then + if moreThanOnePossibleDispatchSlot then + noimpl() + + elif (argTys.Length <> vargTys.Length) then + fail(Error(FSComp.SR.typrelMemberDoesNotHaveCorrectNumberOfArguments(FormatOverride denv overrideBy, FormatMethInfoSig g amap m denv dispatchSlot), overrideBy.Range)) + elif methTypars.Length <> fvmethTypars.Length then + 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 + 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)) @@ -428,10 +439,7 @@ module DispatchSlotChecking = // check any of the missing overrides has isReqdTyInterface flag set // in which case we use the message "with suggestion" missingOverloadImplementation - |> Seq.map fst - |> Seq.filter id - |> Seq.isEmpty - |> not + |> Seq.exists fst if missingOverloadImplementation.Count = 1 then // only one missing override, we have specific message for that @@ -444,8 +452,7 @@ module DispatchSlotChecking = let signatures = (missingOverloadImplementation |> Seq.truncate maxDisplayedOverrides - |> Seq.map snd - |> Seq.map (fun signature -> System.Environment.NewLine + "\t'" + signature.Value + "'") + |> Seq.map (snd >> fun signature -> System.Environment.NewLine + "\t'" + signature.Value + "'") |> String.concat "") + System.Environment.NewLine // we have specific message if the list is truncated @@ -593,11 +600,18 @@ module DispatchSlotChecking = match relevantVirts |> List.filter (fun dispatchSlot -> IsPartialMatch g dispatchSlot (CompiledSigOfMeth g amap m dispatchSlot) overrideBy) with | [dispatchSlot] -> errorR(OverrideDoesntOverride(denv, overrideBy, Some dispatchSlot, g, amap, m)) - | _ -> + | _ -> match relevantVirts |> List.filter (fun dispatchSlot -> IsNameMatch dispatchSlot overrideBy) with - | [] -> errorR(OverrideDoesntOverride(denv, overrideBy, None, g, amap, m)) - | [dispatchSlot] -> - errorR(OverrideDoesntOverride(denv, overrideBy, Some dispatchSlot, g, amap, m)) + | [] -> + if isObjExpr && not overrideBy.IsInstance then + errorR(Error(FSComp.SR.chkStaticMembersOnObjectExpressions(), overrideBy.Range)) + else + errorR(OverrideDoesntOverride(denv, overrideBy, None, g, amap, m)) + | [dispatchSlot] -> + if isObjExpr && not overrideBy.IsInstance then + errorR(Error(FSComp.SR.chkStaticMembersOnObjectExpressions(), overrideBy.Range)) + else + errorR(OverrideDoesntOverride(denv, overrideBy, Some dispatchSlot, g, amap, m)) | possibleDispatchSlots -> let details = possibleDispatchSlots @@ -612,7 +626,8 @@ module DispatchSlotChecking = if dispatchSlot.IsFinal && (isObjExpr || not (typeEquiv g reqdTy dispatchSlot.ApparentEnclosingType)) then errorR(Error(FSComp.SR.typrelMethodIsSealed(NicePrint.stringOfMethInfo infoReader m denv dispatchSlot), m)) | dispatchSlots -> - match dispatchSlots |> List.filter (fun dispatchSlot -> + match dispatchSlots |> List.filter (fun dispatchSlot -> + (dispatchSlot.IsInstance = overrideBy.IsInstance) && isInterfaceTy g dispatchSlot.ApparentEnclosingType || not (DispatchSlotIsAlreadyImplemented g amap m availPriorOverridesKeyed dispatchSlot)) with | h1 :: h2 :: _ -> @@ -738,7 +753,7 @@ module DispatchSlotChecking = GetIntrinsicPropInfosOfType infoReader None ad AllowMultiIntfInstantiations.Yes IgnoreOverrides reqdTyRange reqdTy |> List.filter isRelevantRequiredProperty - let dispatchSlots = dispatchSlotSet |> List.map snd |> List.concat + let dispatchSlots = dispatchSlotSet |> List.collect snd let dispatchSlotsKeyed = dispatchSlots |> NameMultiMap.initBy (fun reqdSlot -> reqdSlot.MethodInfo.LogicalName) yield SlotImplSet(dispatchSlots, dispatchSlotsKeyed, availPriorOverrides, reqdProperties) ] @@ -812,8 +827,8 @@ module DispatchSlotChecking = // We don't give missing method errors for abstract classes if isImplementation && not (isInterfaceTy g overallTy) then - let overrides = allImmediateMembersThatMightImplementDispatchSlots |> List.map snd - let allCorrect = CheckDispatchSlotsAreImplemented (denv, infoReader, m, nenv, sink, tcaug.tcaug_abstract, reqdTy, dispatchSlots, availPriorOverrides, overrides) + let overrides = allImmediateMembersThatMightImplementDispatchSlots |> List.map snd + 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 @@ -826,7 +841,7 @@ module DispatchSlotChecking = CheckOverridesAreAllUsedOnce (denv, g, infoReader, false, reqdTy, dispatchSlotsKeyed, availPriorOverrides, overridesToCheck) - with e -> errorRecovery e m + with RecoverableException e -> errorRecovery e m // Now record the full slotsigs of the abstract members implemented by each override. // This is used to generate IL MethodImpls in the code generator. @@ -886,12 +901,12 @@ let FinalTypeDefinitionChecksAtEndOfInferenceScope (infoReader: InfoReader, nenv not tycon.IsFSharpInterfaceTycon then (* Warn when we're doing this for class types *) - if AugmentWithHashCompare.TyconIsCandidateForAugmentationWithEquals g tycon then + if AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithEquals g tycon then warning(Error(FSComp.SR.typrelTypeImplementsIComparableShouldOverrideObjectEquals(tycon.DisplayName), tycon.Range)) else warning(Error(FSComp.SR.typrelTypeImplementsIComparableDefaultObjectEqualsProvided(tycon.DisplayName), tycon.Range)) - AugmentWithHashCompare.CheckAugmentationAttribs isImplementation g amap tycon + AugmentTypeDefinitions.CheckAugmentationAttribs isImplementation g amap tycon // Check some conditions about generic comparison and hashing. We can only check this condition after we've done the augmentation if isImplementation #if !NO_TYPEPROVIDERS @@ -940,7 +955,7 @@ let GetAbstractMethInfosForSynMethodDecl(infoReader: InfoReader, ad, memberName: NameMultiMap.find memberName.idText dispatchSlotsKeyed |> List.map (fun reqdSlot -> reqdSlot.MethodInfo) | ty, None -> GetIntrinsicMethInfosOfType infoReader (Some memberName.idText) ad AllowMultiIntfInstantiations.Yes findFlag bindm ty - let dispatchSlots = minfos |> List.filter (fun minfo -> minfo.IsDispatchSlot) + let dispatchSlots = minfos |> List.filter (fun minfo -> minfo.IsDispatchSlot && minfo.IsInstance = memberFlags.IsInstance) let valReprSynArities = SynInfo.AritiesOfArgs valSynData // We only return everything if it's empty or if it's a non-instance member. @@ -955,7 +970,7 @@ let GetAbstractMethInfosForSynMethodDecl(infoReader: InfoReader, ad, memberName: /// Get the properties relevant to determining if a uniquely-identified-override exists based on the syntactic information /// at the member signature prior to type inference. This is used to pre-assign type information if it does -let GetAbstractPropInfosForSynPropertyDecl(infoReader: InfoReader, ad, memberName: Ident, bindm, typToSearchForAbstractMembers) = +let GetAbstractPropInfosForSynPropertyDecl(infoReader: InfoReader, ad, memberName: Ident, bindm, typToSearchForAbstractMembers, memberFlags: SynMemberFlags) = let pinfos = match typToSearchForAbstractMembers with | _, Some(SlotImplSet(_, _, _, reqdProps)) -> @@ -963,6 +978,5 @@ let GetAbstractPropInfosForSynPropertyDecl(infoReader: InfoReader, ad, memberNam | ty, None -> GetIntrinsicPropInfosOfType infoReader (Some memberName.idText) ad AllowMultiIntfInstantiations.Yes IgnoreOverrides bindm ty - let dispatchSlots = pinfos |> List.filter (fun pinfo -> pinfo.IsVirtualProperty) + let dispatchSlots = pinfos |> List.filter (fun pinfo -> pinfo.IsVirtualProperty && (not pinfo.IsStatic) = memberFlags.IsInstance) dispatchSlots - diff --git a/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fsi b/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fsi index d18a8cdc6f..b06fb16e49 100644 --- a/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fsi +++ b/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fsi @@ -32,7 +32,8 @@ type OverrideInfo = argTypes: TType list list * returnType: TType option * isFakeEventProperty: bool * - isCompilerGenerated: bool + isCompilerGenerated: bool * + isInstance: bool member ArgTypes: TType list list @@ -42,6 +43,8 @@ type OverrideInfo = member IsCompilerGenerated: bool + member IsInstance: bool + member IsFakeEventProperty: bool member LogicalName: string @@ -110,6 +113,7 @@ module DispatchSlotChecking = nenv: NameResolutionEnv * sink: TcResultsSink * isOverallTyAbstract: bool * + isObjExpr: bool * reqdTy: TType * dispatchSlots: RequiredSlot list * availPriorOverrides: OverrideInfo list * @@ -167,5 +171,6 @@ val GetAbstractPropInfosForSynPropertyDecl: ad: AccessorDomain * memberName: Ident * bindm: range * - typToSearchForAbstractMembers: (TType * SlotImplSet option) -> + typToSearchForAbstractMembers: (TType * SlotImplSet option) * + memberFlags: SynMemberFlags -> PropInfo list diff --git a/src/fcs-fable/src/Compiler/Checking/NameResolution.fs b/src/fcs-fable/src/Compiler/Checking/NameResolution.fs index 292343dd22..7b660d3d21 100644 --- a/src/fcs-fable/src/Compiler/Checking/NameResolution.fs +++ b/src/fcs-fable/src/Compiler/Checking/NameResolution.fs @@ -568,7 +568,7 @@ let GetTyconRefForExtensionMembers minfo (deref: Entity) amap m g = | AppTy g (tcrefOfTypeExtended, _) when not (isByrefTy g thisTy) -> Some tcrefOfTypeExtended | _ -> None Some rs - with e -> // Import of the ILType may fail, if so report the error and skip on + with RecoverableException e -> // Import of the ILType may fail, if so report the error and skip on errorRecovery e m None @@ -578,8 +578,8 @@ let private GetCSharpStyleIndexedExtensionMembersForTyconRef (amap: Import.Impor let pri = NextExtensionMethodPriority() if g.langVersion.SupportsFeature(LanguageFeature.CSharpExtensionAttributeNotRequired) then - let csharpStyleExtensionMembers = - if IsTyconRefUsedForCSharpStyleExtensionMembers g m tcrefOfStaticClass || tcrefOfStaticClass.IsLocalRef 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 @@ -2364,14 +2364,19 @@ let CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities // Consume ids that refer to a namespace, module, or type //------------------------------------------------------------------------- +[] +type ShouldNotifySink = + | Yes + | No + /// Perform name resolution for an identifier which must resolve to be a module or namespace. -let rec ResolveLongIdentAsModuleOrNamespace sink (amap: Import.ImportMap) m first fullyQualified (nenv: NameResolutionEnv) ad (id:Ident) (rest: Ident list) isOpenDecl = +let rec ResolveLongIdentAsModuleOrNamespace sink (amap: Import.ImportMap) m first fullyQualified (nenv: NameResolutionEnv) ad (id:Ident) (rest: Ident list) isOpenDecl notifySink = if first && id.idText = MangledGlobalName then match rest with | [] -> error (Error(FSComp.SR.nrGlobalUsedOnlyAsFirstName(), id.idRange)) | id2 :: rest2 -> - ResolveLongIdentAsModuleOrNamespace sink amap m false FullyQualified nenv ad id2 rest2 isOpenDecl + ResolveLongIdentAsModuleOrNamespace sink amap m false FullyQualified nenv ad id2 rest2 isOpenDecl notifySink else let notFoundAux (id: Ident) depth error (tcrefs: TyconRef seq) = let suggestNames (addToBuffer: string -> unit) = @@ -2432,7 +2437,8 @@ let rec ResolveLongIdentAsModuleOrNamespace sink (amap: Import.ImportMap) m firs modrefs |> List.map (fun modref -> if IsEntityAccessible amap m ad modref then - notifyNameResolution modref id.idRange + if notifySink = ShouldNotifySink.Yes then + notifyNameResolution modref id.idRange look 1 modref rest else raze (namespaceOrModuleNotFound.Force())) @@ -2440,8 +2446,8 @@ let rec ResolveLongIdentAsModuleOrNamespace sink (amap: Import.ImportMap) m firs | _ -> raze (namespaceOrModuleNotFound.Force()) // Note - 'rest' is annotated due to a bug currently in Unity (see: https://github.com/dotnet/fsharp/pull/7427) -let ResolveLongIdentAsModuleOrNamespaceThen sink atMostOne amap m fullyQualified (nenv: NameResolutionEnv) ad id (rest: Ident list) isOpenDecl f = - match ResolveLongIdentAsModuleOrNamespace sink amap m true fullyQualified nenv ad id [] isOpenDecl with +let ResolveLongIdentAsModuleOrNamespaceThen sink atMostOne amap m fullyQualified (nenv: NameResolutionEnv) ad id (rest: Ident list) isOpenDecl notifySink f = + match ResolveLongIdentAsModuleOrNamespace sink amap m true fullyQualified nenv ad id [] isOpenDecl notifySink with | Result modrefs -> match rest with | [] -> error(Error(FSComp.SR.nrUnexpectedEmptyLongId(), id.idRange)) @@ -2575,7 +2581,10 @@ let CheckNestedTypesOfType (ncenv: NameResolver) (resInfo: ResolutionInfo) ad nm // REVIEW: this shows up on performance logs. Consider for example endless resolutions of "List.map" to // the empty set of results, or "x.Length" for a list or array type. This indicates it could be worth adding a cache here. -let rec ResolveLongIdentInTypePrim (ncenv: NameResolver) nenv lookupKind (resInfo: ResolutionInfo) depth m ad (id: Ident) (rest: Ident list) findFlag (typeNameResInfo: TypeNameResolutionInfo) ty = + +// maybeAppliedArgExpr is used in context of resolving extension method that would override property name, it may contain argExpr coming from the DelayedApp(argExpr: SynExpr) +// see RFC-1137 +let rec ResolveLongIdentInTypePrim (ncenv: NameResolver) nenv lookupKind (resInfo: ResolutionInfo) depth m ad (id: Ident) (rest: Ident list) findFlag (typeNameResInfo: TypeNameResolutionInfo) ty (maybeAppliedArgExpr: SynExpr option) = let g = ncenv.g let m = unionRanges m id.idRange let nm = id.idText // used to filter the searches of the tables @@ -2619,8 +2628,56 @@ let rec ResolveLongIdentInTypePrim (ncenv: NameResolver) nenv lookupKind (resInf // make sure to keep the intrinsic pinfos before the extension pinfos in the list, // since later on this logic is used when giving preference to intrinsic definitions match DecodeFSharpEvent (pinfos@extensionPropInfos) ad g ncenv m with - | Some x -> success [resInfo, x, rest] - | None -> raze (UndefinedName (depth, FSComp.SR.undefinedNameFieldConstructorOrMember, id, NoSuggestions)) + | Some x -> + if + not (g.langVersion.SupportsFeature LanguageFeature.PreferExtensionMethodOverPlainProperty) + || not (List.isEmpty rest) // if not empty, it is .X.Y... + then + success [resInfo, x, rest] + else + match maybeAppliedArgExpr with + | None -> success [resInfo, x, rest] + | Some _argExpr -> + // RFC-1137 prefer extension method when ... + + let ignoreProperty (p: PropInfo) = + // do not hide properties if: + // * is indexed property e.g.: + // ```fsharp + // member x.Prop with + // get (indexPiece1:int,indexPiece2: string) = ... + // and set (indexPiece1:int,indexPiece2: string) value = ... + // ``` + // which is called like this: obj.Prop(1,"a") or obj.Prop(1,"a") <- someValue + // * is function type e.g.: + // ```fsharp + // member x.Prop with + // get () = fun a -> printfn $"{a}" + // ``` + // which is called like this: obj.Prop 123 + if p.IsIndexer then + true + else + match p.GetPropertyType(ncenv.amap, m) with + | TType_var(typar={typar_solution = Some (TType_fun _) }) -> + true + | _ -> false + + match x with + | Item.Property(info=ps) when ps |> List.exists ignoreProperty -> + success [resInfo, x, rest] + | _ -> + // lookup in-scope extension methods + // to keep in sync with the same expression in `| Some(MethodItem msets) when isLookupExpr` below + match ExtensionMethInfosOfTypeInScope ResultCollectionSettings.AllResults ncenv.InfoReader nenv optFilter isInstanceFilter m ty with + | [] -> success [resInfo, x, rest] + | methods -> + let extensionMethods = Item.MakeMethGroup(nm, methods) + success ((resInfo,extensionMethods,rest)::[resInfo,x,rest]) + | None -> + // todo: consider if we should check extension method, but we'd probably won't have matched + // `Some(PropertyItem psets) when isLookUpExpr` in the first place. + raze (UndefinedName (depth, FSComp.SR.undefinedNameFieldConstructorOrMember, id, NoSuggestions)) | Some(MethodItem msets) when isLookUpExpr -> let minfos = msets |> ExcludeHiddenOfMethInfos g ncenv.amap m @@ -2753,20 +2810,20 @@ and ResolveLongIdentInNestedTypes (ncenv: NameResolver) nenv lookupKind resInfo resInfo.AddEntity(id.idRange, tcref) | _ -> resInfo - ResolveLongIdentInTypePrim ncenv nenv lookupKind resInfo depth m ad id2 rest findFlag typeNameResInfo ty + ResolveLongIdentInTypePrim ncenv nenv lookupKind resInfo depth m ad id2 rest findFlag typeNameResInfo ty None |> AtMostOneResult m) /// Resolve a long identifier using type-qualified name resolution. let ResolveLongIdentInType sink (ncenv: NameResolver) nenv lookupKind m ad id findFlag typeNameResInfo ty = let resInfo, item, rest = - ResolveLongIdentInTypePrim ncenv nenv lookupKind ResolutionInfo.Empty 0 m ad id [] findFlag typeNameResInfo ty + ResolveLongIdentInTypePrim ncenv nenv lookupKind ResolutionInfo.Empty 0 m ad id [] findFlag typeNameResInfo ty None |> AtMostOneResult m |> ForceRaise ResolutionInfo.SendEntityPathToSink (sink, ncenv, nenv, ItemOccurence.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 = +let private ResolveLongIdentInTyconRef (ncenv: NameResolver) nenv lookupKind (resInfo: ResolutionInfo) depth m ad id rest typeNameResInfo tcref maybeAppliedArgExpr = #if !NO_TYPEPROVIDERS // No dotting through type generators to get to a member! CheckForDirectReferenceToGeneratedType (tcref, PermitDirectReferenceToGeneratedType.No, m) @@ -2775,12 +2832,12 @@ let private ResolveLongIdentInTyconRef (ncenv: NameResolver) nenv lookupKind (re match resInfo.EnclosingTypeInst with | [] -> FreshenTycon ncenv m tcref | tinstEnclosing -> FreshenTyconWithEnclosingTypeInst ncenv m tinstEnclosing tcref - ty |> ResolveLongIdentInTypePrim ncenv nenv lookupKind resInfo depth m ad id rest IgnoreOverrides typeNameResInfo + ResolveLongIdentInTypePrim ncenv nenv lookupKind resInfo depth m ad id rest IgnoreOverrides typeNameResInfo ty maybeAppliedArgExpr -let private ResolveLongIdentInTyconRefs atMostOne (ncenv: NameResolver) nenv lookupKind depth m ad id rest typeNameResInfo idRange tcrefs = +let private ResolveLongIdentInTyconRefs atMostOne (ncenv: NameResolver) nenv lookupKind depth m ad id rest typeNameResInfo idRange tcrefs maybeAppliedArgExpr = tcrefs |> CollectResults2 atMostOne (fun (resInfo: ResolutionInfo, tcref) -> let resInfo = resInfo.AddEntity(idRange, tcref) - tcref |> ResolveLongIdentInTyconRef ncenv nenv lookupKind resInfo depth m ad id rest typeNameResInfo |> AtMostOneResult m) + ResolveLongIdentInTyconRef ncenv nenv lookupKind resInfo depth m ad id rest typeNameResInfo tcref maybeAppliedArgExpr |> AtMostOneResult m) //------------------------------------------------------------------------- // ResolveExprLongIdentInModuleOrNamespace @@ -2829,7 +2886,7 @@ let rec ResolveExprLongIdentInModuleOrNamespace (ncenv: NameResolver) nenv (type let typeNameResInfo = TypeNameResolutionInfo.ResolveToTypeRefs typeNameResInfo.StaticArgsInfo CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs, typeNameResInfo, PermitDirectReferenceToGeneratedType.No, unionRanges m id.idRange) - ResolveLongIdentInTyconRefs ResultCollectionSettings.AtMostOneResult ncenv nenv lookupKind (depth+1) m ad id2 rest2 typeNameResInfo id.idRange tcrefs + ResolveLongIdentInTyconRefs ResultCollectionSettings.AtMostOneResult ncenv nenv lookupKind (depth+1) m ad id2 rest2 typeNameResInfo id.idRange tcrefs None // Check if we've got some explicit type arguments | _ -> @@ -2927,7 +2984,7 @@ let ResolveUnqualifiedTyconRefs nenv tcrefs = /// Resolve F# "A.B.C" syntax in expressions /// Not all of the sequence will necessarily be swallowed, i.e. we return some identifiers /// that may represent further actions, e.g. further lookups. -let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified m ad nenv (typeNameResInfo: TypeNameResolutionInfo) (id: Ident) (rest: Ident list) isOpenDecl = +let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified m ad nenv (typeNameResInfo: TypeNameResolutionInfo) (id: Ident) (rest: Ident list) isOpenDecl maybeAppliedArgExpr = let lookupKind = LookupKind.Expr LookupIsInstance.No @@ -2945,9 +3002,9 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified | [] -> raze (Error(FSComp.SR.nrGlobalUsedOnlyAsFirstName(), id.idRange)) | [next] -> - ResolveExprLongIdentPrim sink ncenv false fullyQualified m ad nenv typeNameResInfo next [] isOpenDecl + ResolveExprLongIdentPrim sink ncenv false fullyQualified m ad nenv typeNameResInfo next [] isOpenDecl maybeAppliedArgExpr | id2 :: rest2 -> - ResolveExprLongIdentPrim sink ncenv false FullyQualified m ad nenv typeNameResInfo id2 rest2 isOpenDecl + ResolveExprLongIdentPrim sink ncenv false FullyQualified m ad nenv typeNameResInfo id2 rest2 isOpenDecl maybeAppliedArgExpr else if isNil rest && fullyQualified <> FullyQualified then let mutable typeError = None @@ -3067,7 +3124,7 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified // Otherwise modules are searched first. REVIEW: modules and types should be searched together. // For each module referenced by 'id', search the module as if it were an F# module and/or a .NET namespace. let moduleSearch ad () = - ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AtMostOneResult ncenv.amap m fullyQualified nenv ad id rest isOpenDecl + ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AtMostOneResult ncenv.amap m fullyQualified nenv ad id rest isOpenDecl ShouldNotifySink.No (ResolveExprLongIdentInModuleOrNamespace ncenv nenv typeNameResInfo ad) // REVIEW: somewhat surprisingly, this shows up on performance traces, with tcrefs non-nil. @@ -3082,7 +3139,7 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified let tcrefs = let typeNameResInfo = TypeNameResolutionInfo.ResolveToTypeRefs typeNameResInfo.StaticArgsInfo CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities (tcrefs, typeNameResInfo, PermitDirectReferenceToGeneratedType.No, unionRanges m id.idRange) - ResolveLongIdentInTyconRefs ResultCollectionSettings.AtMostOneResult ncenv nenv lookupKind 1 m ad id2 rest2 typeNameResInfo id.idRange tcrefs + ResolveLongIdentInTyconRefs ResultCollectionSettings.AtMostOneResult ncenv nenv lookupKind 1 m ad id2 rest2 typeNameResInfo id.idRange tcrefs maybeAppliedArgExpr | _ -> NoResultsOrUsefulErrors @@ -3136,10 +3193,10 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurence.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 = +let ResolveExprLongIdent sink (ncenv: NameResolver) m ad nenv typeNameResInfo lid maybeAppliedArgExpr = match lid with | [] -> raze (Error(FSComp.SR.nrInvalidExpression(textOfLid lid), m)) - | id :: rest -> ResolveExprLongIdentPrim sink ncenv true OpenQualified m ad nenv typeNameResInfo id rest false + | id :: rest -> ResolveExprLongIdentPrim sink ncenv true OpenQualified m ad nenv typeNameResInfo id rest false maybeAppliedArgExpr //------------------------------------------------------------------------- // Resolve F#/IL "." syntax in patterns @@ -3177,7 +3234,7 @@ let rec ResolvePatternLongIdentInModuleOrNamespace (ncenv: NameResolver) nenv nu match rest with | id2 :: rest2 -> let tcrefs = tcrefs.Force() - ResolveLongIdentInTyconRefs ResultCollectionSettings.AtMostOneResult (ncenv: NameResolver) nenv LookupKind.Pattern (depth+1) m ad id2 rest2 numTyArgsOpt id.idRange tcrefs + ResolveLongIdentInTyconRefs ResultCollectionSettings.AtMostOneResult (ncenv: NameResolver) nenv LookupKind.Pattern (depth+1) m ad id2 rest2 numTyArgsOpt id.idRange tcrefs None | _ -> NoResultsOrUsefulErrors @@ -3258,7 +3315,7 @@ let rec ResolvePatternLongIdentPrim sink (ncenv: NameResolver) fullyQualified wa ResolutionInfo.SendEntityPathToSink (sink, ncenv, nenv, ItemOccurence.Pattern, ad, res, ResultTyparChecker(fun () -> true)) Item.Types (id.idText, [ mkAppTy tcref [] ]) | _ -> - match ResolveLongIdentAsModuleOrNamespace sink ncenv.amap id.idRange true fullyQualified nenv ad id [] false with + 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)) @@ -3271,7 +3328,7 @@ let rec ResolvePatternLongIdentPrim sink (ncenv: NameResolver) fullyQualified wa // Long identifiers in patterns else let moduleSearch ad () = - ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AtMostOneResult ncenv.amap m fullyQualified nenv ad id rest false + ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AtMostOneResult ncenv.amap m fullyQualified nenv ad id rest false ShouldNotifySink.Yes (ResolvePatternLongIdentInModuleOrNamespace ncenv nenv numTyArgsOpt ad) let tyconSearch ad = @@ -3280,7 +3337,7 @@ let rec ResolvePatternLongIdentPrim sink (ncenv: NameResolver) fullyQualified wa let tcrefs = LookupTypeNameInEnvNoArity fullyQualified id.idText nenv if isNil tcrefs then NoResultsOrUsefulErrors else let tcrefs = tcrefs |> List.map (fun tcref -> (ResolutionInfo.Empty, tcref)) - ResolveLongIdentInTyconRefs ResultCollectionSettings.AtMostOneResult ncenv nenv LookupKind.Pattern 1 id.idRange ad id2 rest2 numTyArgsOpt id.idRange tcrefs + ResolveLongIdentInTyconRefs ResultCollectionSettings.AtMostOneResult ncenv nenv LookupKind.Pattern 1 id.idRange ad id2 rest2 numTyArgsOpt id.idRange tcrefs None | _ -> NoResultsOrUsefulErrors @@ -3494,12 +3551,12 @@ let rec ResolveTypeLongIdentPrim sink (ncenv: NameResolver) occurence first full NoResultsOrUsefulErrors let modulSearch = - ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AllResults ncenv.amap m2 fullyQualified nenv ad id rest false + ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AllResults ncenv.amap m2 fullyQualified nenv ad id rest false ShouldNotifySink.Yes (ResolveTypeLongIdentInModuleOrNamespace sink nenv ncenv typeNameResInfo ad genOk) |?> List.concat let modulSearchFailed() = - ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AllResults ncenv.amap m2 fullyQualified nenv AccessibleFromSomeFSharpCode id rest false + ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AllResults ncenv.amap m2 fullyQualified nenv AccessibleFromSomeFSharpCode id rest false ShouldNotifySink.Yes (ResolveTypeLongIdentInModuleOrNamespace sink nenv ncenv typeNameResInfo.DropStaticArgsInfo AccessibleFromSomeFSharpCode genOk) |?> List.concat @@ -3571,7 +3628,7 @@ let rec ResolveFieldInModuleOrNamespace (ncenv: NameResolver) nenv ad (resInfo: let tcrefs = LookupTypeNameInEntityMaybeHaveArity (ncenv.amap, id.idRange, ad, id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, modref) if isNil tcrefs then NoResultsOrUsefulErrors else let tcrefs = tcrefs |> List.map (fun tcref -> (ResolutionInfo.Empty, tcref)) - let tyconSearch = ResolveLongIdentInTyconRefs ResultCollectionSettings.AllResults ncenv nenv LookupKind.RecdField (depth+1) m ad id2 rest2 typeNameResInfo id.idRange tcrefs + let tyconSearch = ResolveLongIdentInTyconRefs ResultCollectionSettings.AllResults ncenv nenv LookupKind.RecdField (depth+1) m ad id2 rest2 typeNameResInfo id.idRange tcrefs None // choose only fields let tyconSearch = tyconSearch |?> List.choose (function resInfo, Item.RecdField(RecdFieldInfo(_, rfref)), rest -> Some(resInfo, FieldResolution(FreshenRecdFieldRef ncenv m rfref, false), rest) | _ -> None) tyconSearch @@ -3700,7 +3757,7 @@ let ResolveFieldPrim sink (ncenv: NameResolver) nenv ad ty (mp, id: Ident) allFi let tcrefs = LookupTypeNameInEnvNoArity OpenQualified tn.idText nenv if isNil tcrefs then NoResultsOrUsefulErrors else let tcrefs = tcrefs |> List.map (fun tcref -> (ResolutionInfo.Empty, tcref)) - let tyconSearch = ResolveLongIdentInTyconRefs ResultCollectionSettings.AllResults ncenv nenv LookupKind.RecdField 1 m ad id2 rest2 typeNameResInfo tn.idRange tcrefs + let tyconSearch = ResolveLongIdentInTyconRefs ResultCollectionSettings.AllResults ncenv nenv LookupKind.RecdField 1 m ad id2 rest2 typeNameResInfo tn.idRange tcrefs None // choose only fields let tyconSearch = tyconSearch |?> List.choose (function resInfo, Item.RecdField(RecdFieldInfo(_, rfref)), rest -> Some(resInfo, FieldResolution(FreshenRecdFieldRef ncenv m rfref, false), rest) | _ -> None) tyconSearch @@ -3710,7 +3767,7 @@ let ResolveFieldPrim sink (ncenv: NameResolver) nenv ad ty (mp, id: Ident) allFi match lid with | [] -> NoResultsOrUsefulErrors | id2 :: rest2 -> - ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AtMostOneResult ncenv.amap m OpenQualified nenv ad id2 rest2 false + ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AtMostOneResult ncenv.amap m OpenQualified nenv ad id2 rest2 false ShouldNotifySink.Yes (ResolveFieldInModuleOrNamespace ncenv nenv ad) let resInfo, item, rest = @@ -3812,7 +3869,7 @@ let ResolveNestedField sink (ncenv: NameResolver) nenv ad recdTy lid = if isNil tcrefs then NoResultsOrUsefulErrors else - ResolveLongIdentInTyconRefs ResultCollectionSettings.AllResults ncenv nenv LookupKind.RecdField 1 tyconId.idRange ad fieldId rest typeNameResInfo fieldId.idRange tcrefs + ResolveLongIdentInTyconRefs ResultCollectionSettings.AllResults ncenv nenv LookupKind.RecdField 1 tyconId.idRange ad fieldId rest typeNameResInfo fieldId.idRange tcrefs None |?> List.choose (fun x -> match x with | _, (Item.RecdField _ as item), rest -> Some (fieldId, item, rest) @@ -3823,7 +3880,7 @@ let ResolveNestedField sink (ncenv: NameResolver) nenv ad recdTy lid = match lid with | [] -> NoResultsOrUsefulErrors | modOrNsId :: rest -> - ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AtMostOneResult ncenv.amap modOrNsId.idRange OpenQualified nenv ad modOrNsId rest false (ResolveFieldInModuleOrNamespace ncenv nenv ad) + ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AtMostOneResult ncenv.amap modOrNsId.idRange OpenQualified nenv ad modOrNsId rest false ShouldNotifySink.Yes (ResolveFieldInModuleOrNamespace ncenv nenv ad) |?> List.map (fun (_, FieldResolution(rfinfo, _), restAfterField) -> let fieldId = rest.[ rest.Length - restAfterField.Length - 1 ] fieldId, Item.RecdField rfinfo, restAfterField) @@ -3879,9 +3936,9 @@ let ResolveNestedField sink (ncenv: NameResolver) nenv ad recdTy lid = /// determine any valid members // // QUERY (instantiationGenerator cleanup): it would be really nice not to flow instantiationGenerator to here. -let private ResolveExprDotLongIdent (ncenv: NameResolver) m ad nenv ty (id: Ident) rest (typeNameResInfo: TypeNameResolutionInfo) findFlag = +let private ResolveExprDotLongIdent (ncenv: NameResolver) m ad nenv ty (id: Ident) rest (typeNameResInfo: TypeNameResolutionInfo) findFlag maybeArgExpr = let lookupKind = LookupKind.Expr LookupIsInstance.Yes - let adhocDotSearchAccessible = AtMostOneResult m (ResolveLongIdentInTypePrim ncenv nenv lookupKind ResolutionInfo.Empty 1 m ad id rest findFlag typeNameResInfo ty) + let adhocDotSearchAccessible = AtMostOneResult m (ResolveLongIdentInTypePrim ncenv nenv lookupKind ResolutionInfo.Empty 1 m ad id rest findFlag typeNameResInfo ty maybeArgExpr) match adhocDotSearchAccessible with | Exception _ -> // If the dot is not resolved by adhoc overloading then look for a record field @@ -3901,7 +3958,7 @@ let private ResolveExprDotLongIdent (ncenv: NameResolver) m ad nenv ty (id: Iden let adhocDotSearchAll () = let lookupKind = LookupKind.Expr LookupIsInstance.Ambivalent - ResolveLongIdentInTypePrim ncenv nenv lookupKind ResolutionInfo.Empty 1 m AccessibleFromSomeFSharpCode id rest findFlag typeNameResInfo ty + ResolveLongIdentInTypePrim ncenv nenv lookupKind ResolutionInfo.Empty 1 m AccessibleFromSomeFSharpCode id rest findFlag typeNameResInfo ty None dotFieldIdSearch +++ adhocDotSearchAll |> AtMostOneResult m @@ -3953,8 +4010,10 @@ type AfterResolution = /// Resolve a long identifier occurring in an expression position. /// /// Called for 'TypeName.Bar' - for VS IntelliSense, we can filter out instance members from method groups -let ResolveLongIdentAsExprAndComputeRange (sink: TcResultsSink) (ncenv: NameResolver) wholem ad nenv typeNameResInfo lid = - match ResolveExprLongIdent sink ncenv wholem ad nenv typeNameResInfo lid with +// maybeAppliedArgExpr is used in context of resolving extension method that would override property name, it may contain argExpr coming from the DelayedApp(argExpr: SynExpr) +// see RFC-1137 +let ResolveLongIdentAsExprAndComputeRange (sink: TcResultsSink) (ncenv: NameResolver) wholem ad nenv typeNameResInfo lid (maybeAppliedArgExpr: SynExpr option) = + match ResolveExprLongIdent sink ncenv wholem ad nenv typeNameResInfo lid maybeAppliedArgExpr with | Exception e -> Exception e | Result (tinstEnclosing, item1, rest) -> let itemRange = ComputeItemRange wholem lid rest @@ -4014,12 +4073,12 @@ let (|NonOverridable|_|) namedItem = /// 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 -let ResolveExprDotLongIdentAndComputeRange (sink: TcResultsSink) (ncenv: NameResolver) wholem ad nenv ty lid (typeNameResInfo: TypeNameResolutionInfo) findFlag staticOnly = +let ResolveExprDotLongIdentAndComputeRange (sink: TcResultsSink) (ncenv: NameResolver) wholem ad nenv ty lid (typeNameResInfo: TypeNameResolutionInfo) findFlag staticOnly maybeAppliedArgExpr = let resolveExpr findFlag = let resInfo, item, rest = match lid with | id :: rest -> - ResolveExprDotLongIdent ncenv wholem ad nenv ty id rest typeNameResInfo findFlag + ResolveExprDotLongIdent ncenv wholem ad nenv ty id rest typeNameResInfo findFlag maybeAppliedArgExpr | _ -> error(InternalError("ResolveExprDotLongIdentAndComputeRange", wholem)) let itemRange = ComputeItemRange wholem lid rest resInfo, item, rest, itemRange @@ -4258,7 +4317,7 @@ let ResolveCompletionsInType (ncenv: NameResolver) nenv (completionTargets: Reso not minfo.IsExtensionMember && match minfo.LogicalName with | "GetType" -> false - | "GetHashCode" -> isObjTy g minfo.ApparentEnclosingType && not (AugmentWithHashCompare.TypeDefinitelyHasEquality g ty) + | "GetHashCode" -> isObjTy g minfo.ApparentEnclosingType && not (AugmentTypeDefinitions.TypeDefinitelyHasEquality g ty) | "ToString" -> false | "Equals" -> if not (isObjTy g minfo.ApparentEnclosingType) then @@ -4266,7 +4325,7 @@ let ResolveCompletionsInType (ncenv: NameResolver) nenv (completionTargets: Reso false elif minfo.IsInstance then // System.Object has only one instance Equals method and we want to suppress it unless Augment.TypeDefinitelyHasEquality is true - not (AugmentWithHashCompare.TypeDefinitelyHasEquality g ty) + not (AugmentTypeDefinitions.TypeDefinitelyHasEquality g ty) else // System.Object has only one static Equals method and we always want to suppress it true @@ -4281,8 +4340,8 @@ let ResolveCompletionsInType (ncenv: NameResolver) nenv (completionTargets: Reso not (MethInfoIsUnseen g m ty minfo) && not minfo.IsConstructor && not minfo.IsClassConstructor && - not (minfo.LogicalName = ".cctor") && - not (minfo.LogicalName = ".ctor") && + (minfo.LogicalName <> ".cctor") && + (minfo.LogicalName <> ".ctor") && isApplicableMeth minfo ty && not (suppressedMethNames.Contains minfo.LogicalName) @@ -4345,7 +4404,7 @@ let ResolveCompletionsInType (ncenv: NameResolver) nenv (completionTargets: Reso if methsWithStaticParams.IsEmpty then minfos else minfos |> List.filter (fun minfo -> let nm = minfo.LogicalName - not (nm.Contains "," && methsWithStaticParams |> List.exists (fun m -> nm.StartsWithOrdinal m))) + not (nm.Contains "," && methsWithStaticParams |> List.exists (nm.StartsWithOrdinal))) #endif minfos @@ -4958,7 +5017,7 @@ let ResolveCompletionsInTypeForItem (ncenv: NameResolver) nenv m ad statics ty ( not minfo.IsExtensionMember && match minfo.LogicalName with | "GetType" -> false - | "GetHashCode" -> isObjTy g minfo.ApparentEnclosingType && not (AugmentWithHashCompare.TypeDefinitelyHasEquality g ty) + | "GetHashCode" -> isObjTy g minfo.ApparentEnclosingType && not (AugmentTypeDefinitions.TypeDefinitelyHasEquality g ty) | "ToString" -> false | "Equals" -> if not (isObjTy g minfo.ApparentEnclosingType) then @@ -4966,7 +5025,7 @@ let ResolveCompletionsInTypeForItem (ncenv: NameResolver) nenv m ad statics ty ( false elif minfo.IsInstance then // System.Object has only one instance Equals method and we want to suppress it unless Augment.TypeDefinitelyHasEquality is true - not (AugmentWithHashCompare.TypeDefinitelyHasEquality g ty) + not (AugmentTypeDefinitions.TypeDefinitelyHasEquality g ty) else // System.Object has only one static Equals method and we always want to suppress it true @@ -4980,8 +5039,8 @@ let ResolveCompletionsInTypeForItem (ncenv: NameResolver) nenv m ad statics ty ( not (MethInfoIsUnseen g m ty minfo) && not minfo.IsConstructor && not minfo.IsClassConstructor && - not (minfo.LogicalName = ".cctor") && - not (minfo.LogicalName = ".ctor") && + (minfo.LogicalName <> ".cctor") && + (minfo.LogicalName <> ".ctor") && not (suppressedMethNames.Contains minfo.LogicalName) result @@ -5038,7 +5097,7 @@ let ResolveCompletionsInTypeForItem (ncenv: NameResolver) nenv m ad statics ty ( if methsWithStaticParams.IsEmpty then minfos else minfos |> List.filter (fun minfo -> let nm = minfo.LogicalName - not (nm.Contains "," && methsWithStaticParams |> List.exists (fun m -> nm.StartsWithOrdinal m))) + not (nm.Contains "," && methsWithStaticParams |> List.exists (nm.StartsWithOrdinal))) #endif minfos diff --git a/src/fcs-fable/src/Compiler/Checking/NameResolution.fsi b/src/fcs-fable/src/Compiler/Checking/NameResolution.fsi index 5dcc55efc9..3ba5113b00 100755 --- a/src/fcs-fable/src/Compiler/Checking/NameResolution.fsi +++ b/src/fcs-fable/src/Compiler/Checking/NameResolution.fsi @@ -598,6 +598,12 @@ type AfterResolution = (MethInfo * PropInfo option * TyparInstantiation -> unit) * (unit -> unit) +/// Indicates whether we want to report found items to the name resolution sink +[] +type ShouldNotifySink = + | Yes + | No + /// Temporarily redirect reporting of name resolution and type checking results val internal WithNewTypecheckResultsSink: ITypecheckResultsSink * TcResultsSink -> System.IDisposable @@ -684,6 +690,7 @@ val internal ResolveLongIdentAsModuleOrNamespace: id: Ident -> rest: Ident list -> isOpenDecl: bool -> + notifySink: ShouldNotifySink -> ResultOrException<(int * ModuleOrNamespaceRef * ModuleOrNamespaceType) list> /// Resolve a long identifier to an object constructor. @@ -774,6 +781,7 @@ val internal ResolveExprLongIdent: nenv: NameResolutionEnv -> typeNameResInfo: TypeNameResolutionInfo -> lid: Ident list -> + maybeAppliedArgExpr: SynExpr option -> ResultOrException val internal getRecordFieldsInScope: NameResolutionEnv -> Item list @@ -794,6 +802,7 @@ val internal ResolveLongIdentAsExprAndComputeRange: nenv: NameResolutionEnv -> typeNameResInfo: TypeNameResolutionInfo -> lid: Ident list -> + maybeAppliedArgExpr: SynExpr option -> ResultOrException /// Resolve a long identifier occurring in an expression position, qualified by a type. @@ -808,6 +817,7 @@ val internal ResolveExprDotLongIdentAndComputeRange: typeNameResInfo: TypeNameResolutionInfo -> findFlag: FindMemberFlag -> staticOnly: bool -> + maybeAppliedArgExpr: SynExpr option -> Item * range * Ident list * AfterResolution /// A generator of type instantiations used when no more specific type instantiation is known. diff --git a/src/fcs-fable/src/Compiler/Checking/NicePrint.fs b/src/fcs-fable/src/Compiler/Checking/NicePrint.fs index 53ec1c5f51..5783996d42 100755 --- a/src/fcs-fable/src/Compiler/Checking/NicePrint.fs +++ b/src/fcs-fable/src/Compiler/Checking/NicePrint.fs @@ -1941,6 +1941,9 @@ module TastDefinitionPrinting = let props = GetImmediateIntrinsicPropInfosOfType (None, ad) g amap m ty |> List.filter (fun pinfo -> shouldShow pinfo.ArbitraryValRef) + // Filter out 'IsA' properties which are implied by the union cases since they don't need to be displayed + // in any printed outputs + |> List.filter (fun prop -> not prop.IsUnionCaseTester) let events = infoReader.GetEventInfosOfType(None, ad, m, ty) @@ -1968,7 +1971,8 @@ module TastDefinitionPrinting = IsMethInfoAccessible amap m ad minfo && // Discard method impls such as System.IConvertible.ToBoolean not (minfo.IsILMethod && minfo.DisplayName.Contains(".")) && - not (minfo.DisplayName.Split('.') |> Array.exists (fun part -> isDiscard part))) + not minfo.IsUnionCaseTester && + not (minfo.DisplayName.Split('.') |> Array.exists isDiscard)) let ilFields = infoReader.GetILFieldInfosOfType (None, ad, m, ty) @@ -2025,7 +2029,7 @@ module TastDefinitionPrinting = let instanceValLs = instanceVals |> List.map (fun f -> layoutRecdField (fun l -> WordL.keywordVal ^^ l) true denv infoReader tcref f) - + let propLs = props |> List.collect (fun x -> @@ -2433,8 +2437,7 @@ module InferredSigPrinting = |> List.choose (function ModuleOrNamespaceBinding.Binding bind -> Some bind | _ -> None) |> valsOfBinds |> List.filter filterVal - |> List.map mkLocalValRef - |> List.map (PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader) + |> List.map (mkLocalValRef >> PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader) |> aboveListL) @@ (mbinds @@ -2445,8 +2448,7 @@ module InferredSigPrinting = | TMDefLet(bind, _) -> ([bind.Var] |> List.filter filterVal - |> List.map mkLocalValRef - |> List.map (PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader) + |> List.map (mkLocalValRef >> PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader) |> aboveListL) | TMDefOpens _ -> emptyL @@ -2670,8 +2672,7 @@ let stringOfMethInfoFSharpStyle infoReader m denv minfo = /// Convert MethInfos to lines separated by newline including a newline as the first character let multiLineStringOfMethInfos infoReader m denv minfos = minfos - |> List.map (stringOfMethInfo infoReader m denv) - |> List.map (sprintf "%s %s" Environment.NewLine) + |> List.map (stringOfMethInfo infoReader m denv >> sprintf "%s %s" Environment.NewLine) |> String.concat "" let stringOfPropInfo g amap m denv pinfo = @@ -2680,8 +2681,7 @@ let stringOfPropInfo g amap m denv pinfo = /// Convert PropInfos to lines separated by newline including a newline as the first character let multiLineStringOfPropInfos g amap m denv pinfos = pinfos - |> List.map (stringOfPropInfo g amap m denv) - |> List.map (sprintf "%s %s" Environment.NewLine) + |> List.map (stringOfPropInfo g amap m denv >> sprintf "%s %s" Environment.NewLine) |> String.concat "" /// Convert a ParamData to a string diff --git a/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fs b/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fs index 0df62266ab..33c93e6e36 100644 --- a/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fs +++ b/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fs @@ -234,7 +234,7 @@ let RefuteDiscrimSet g m path discrims : Expr * CounterExampleType = and mkOneKnown tm n tys = let flds = List.mapi (fun i ty -> if i = n then tm ty else (mkUnknown ty, CounterExampleType.WithoutEnum)) tys List.map fst flds, List.fold (fun acc (_, eCoversVals) -> acc.Combine(eCoversVals)) CounterExampleType.WithoutEnum flds - and mkUnknowns tys = List.map (fun x -> mkUnknown x) tys + and mkUnknowns tys = List.map mkUnknown tys let tm ty = match discrims with @@ -245,24 +245,24 @@ let RefuteDiscrimSet g m path discrims : Expr * CounterExampleType = | DecisionTreeTest.Const c :: rest -> let consts = Set.ofList (c :: List.choose (function DecisionTreeTest.Const c -> Some c | _ -> None) rest) let c' = - Seq.tryFind (fun c -> not (consts.Contains c)) + Seq.tryFind (consts.Contains >> not) (match c with - | Const.Bool _ -> [ true; false ] |> List.toSeq |> Seq.map (fun v -> Const.Bool v) - | Const.SByte _ -> Seq.append (seq { 0y .. System.SByte.MaxValue }) (seq { System.SByte.MinValue .. 0y })|> Seq.map (fun v -> Const.SByte v) - | Const.Int16 _ -> Seq.append (seq { 0s .. System.Int16.MaxValue }) (seq { System.Int16.MinValue .. 0s }) |> Seq.map (fun v -> Const.Int16 v) - | Const.Int32 _ -> Seq.append (seq { 0 .. System.Int32.MaxValue }) (seq { System.Int32.MinValue .. 0 })|> Seq.map (fun v -> Const.Int32 v) - | Const.Int64 _ -> Seq.append (seq { 0L .. System.Int64.MaxValue }) (seq { System.Int64.MinValue .. 0L })|> Seq.map (fun v -> Const.Int64 v) - | Const.IntPtr _ -> Seq.append (seq { 0L .. System.Int64.MaxValue }) (seq { System.Int64.MinValue .. 0L })|> Seq.map (fun v -> Const.IntPtr v) - | Const.Byte _ -> seq { 0uy .. System.Byte.MaxValue } |> Seq.map (fun v -> Const.Byte v) - | Const.UInt16 _ -> seq { 0us .. System.UInt16.MaxValue } |> Seq.map (fun v -> Const.UInt16 v) - | Const.UInt32 _ -> seq { 0u .. System.UInt32.MaxValue } |> Seq.map (fun v -> Const.UInt32 v) - | Const.UInt64 _ -> seq { 0UL .. System.UInt64.MaxValue } |> Seq.map (fun v -> Const.UInt64 v) - | Const.UIntPtr _ -> seq { 0UL .. System.UInt64.MaxValue } |> Seq.map (fun v -> Const.UIntPtr v) - | Const.Double _ -> seq { 0 .. System.Int32.MaxValue } |> Seq.map (fun v -> Const.Double(float v)) - | Const.Single _ -> seq { 0 .. System.Int32.MaxValue } |> Seq.map (fun v -> Const.Single(float32 v)) - | Const.Char _ -> seq { 32us .. System.UInt16.MaxValue } |> Seq.map (fun v -> Const.Char(char v)) + | Const.Bool _ -> [ true; false ] |> List.toSeq |> Seq.map Const.Bool + | Const.SByte _ -> Seq.append (seq { 0y .. System.SByte.MaxValue }) (seq { System.SByte.MinValue .. 0y })|> Seq.map Const.SByte + | Const.Int16 _ -> Seq.append (seq { 0s .. System.Int16.MaxValue }) (seq { System.Int16.MinValue .. 0s }) |> Seq.map Const.Int16 + | Const.Int32 _ -> Seq.append (seq { 0 .. System.Int32.MaxValue }) (seq { System.Int32.MinValue .. 0 })|> Seq.map Const.Int32 + | Const.Int64 _ -> Seq.append (seq { 0L .. System.Int64.MaxValue }) (seq { System.Int64.MinValue .. 0L })|> Seq.map Const.Int64 + | Const.IntPtr _ -> Seq.append (seq { 0L .. System.Int64.MaxValue }) (seq { System.Int64.MinValue .. 0L })|> Seq.map Const.IntPtr + | Const.Byte _ -> seq { 0uy .. System.Byte.MaxValue } |> Seq.map Const.Byte + | Const.UInt16 _ -> seq { 0us .. System.UInt16.MaxValue } |> Seq.map Const.UInt16 + | Const.UInt32 _ -> seq { 0u .. System.UInt32.MaxValue } |> Seq.map Const.UInt32 + | Const.UInt64 _ -> seq { 0UL .. System.UInt64.MaxValue } |> Seq.map Const.UInt64 + | Const.UIntPtr _ -> seq { 0UL .. System.UInt64.MaxValue } |> Seq.map Const.UIntPtr + | Const.Double _ -> seq { 0 .. System.Int32.MaxValue } |> Seq.map (float >> Const.Double) + | Const.Single _ -> seq { 0 .. System.Int32.MaxValue } |> Seq.map (float32 >> Const.Single) + | Const.Char _ -> seq { 32us .. System.UInt16.MaxValue } |> Seq.map (char >> Const.Char) | Const.String _ -> seq { 1 .. System.Int32.MaxValue } |> Seq.map (fun v -> Const.String(System.String('a', v))) - | Const.Decimal _ -> seq { 1 .. System.Int32.MaxValue } |> Seq.map (fun v -> Const.Decimal(decimal v)) + | Const.Decimal _ -> seq { 1 .. System.Int32.MaxValue } |> Seq.map (decimal >> Const.Decimal) | _ -> raise CannotRefute) @@ -1152,6 +1152,8 @@ let CompilePatternBasic // The main recursive loop of the pattern match compiler. let rec InvestigateFrontiers refuted frontiers = + Cancellable.CheckAndThrow() + match frontiers with | [] -> failwith "CompilePattern: compile - empty clauses: at least the final clause should always succeed" | Frontier (i, active, valMap) :: rest -> diff --git a/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fs b/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fs index 79720a0040..a4963093ed 100644 --- a/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fs +++ b/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fs @@ -2178,8 +2178,8 @@ let CheckModuleBinding cenv env (TBind(v, e, _) as bind) = // Default augmentation contains the nasty 'Is' etc. let prefix = "Is" - if nm.StartsWithOrdinal prefix && hasDefaultAugmentation then - match tcref.GetUnionCaseByName(nm[prefix.Length ..]) with + if not v.IsImplied && nm.StartsWithOrdinal prefix && hasDefaultAugmentation then + match tcref.GetUnionCaseByName(nm[prefix.Length ..]) with | Some uc -> error(NameClash(nm, kind, v.DisplayName, v.Range, FSComp.SR.chkUnionCaseDefaultAugmentation(), uc.DisplayName, uc.Range)) | None -> () @@ -2212,7 +2212,7 @@ let CheckModuleBinding cenv env (TBind(v, e, _) as bind) = match TryChopPropertyName v.DisplayName with | Some res -> check true res | None -> () - with e -> errorRecovery e v.Range + with RecoverableException e -> errorRecovery e v.Range end CheckBinding cenv { env with returnScope = 1 } true PermitByRefExpr.Yes bind |> ignore @@ -2414,11 +2414,14 @@ let CheckEntityDefn cenv env (tycon: Entity) = // Check to see if the signatures of the both getter and the setter imply the same property type - if pinfo.HasGetter && pinfo.HasSetter && not pinfo.IsIndexer then + if pinfo.HasGetter && pinfo.HasSetter then let ty1 = pinfo.DropSetter().GetPropertyType(cenv.amap, m) let ty2 = pinfo.DropGetter().GetPropertyType(cenv.amap, m) if not (typeEquivAux EraseNone cenv.amap.g ty1 ty2) then - errorR(Error(FSComp.SR.chkGetterAndSetterHaveSamePropertyType(pinfo.PropertyName, NicePrint.minimalStringOfType cenv.denv ty1, NicePrint.minimalStringOfType cenv.denv ty2), m)) + if g.langVersion.SupportsFeature(LanguageFeature.WarningIndexedPropertiesGetSetSameType) && pinfo.IsIndexer then + warning(Error(FSComp.SR.chkIndexedGetterAndSetterHaveSamePropertyType(pinfo.PropertyName, NicePrint.minimalStringOfType cenv.denv ty1, NicePrint.minimalStringOfType cenv.denv ty2), m)) + if not pinfo.IsIndexer then + errorR(Error(FSComp.SR.chkGetterAndSetterHaveSamePropertyType(pinfo.PropertyName, NicePrint.minimalStringOfType cenv.denv ty1, NicePrint.minimalStringOfType cenv.denv ty2), m)) hashOfImmediateProps[nm] <- pinfo :: others diff --git a/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fs b/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fs index 3dbe65ca8c..b7dd2b1c7f 100644 --- a/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fs +++ b/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fs @@ -267,11 +267,12 @@ and ConvWitnessInfo cenv env m traitInfo = let witnessInfo = traitInfo.GetWitnessInfo() let env = { env with suppressWitnesses = true } // First check if this is a witness in ReflectedDefinition code - if env.witnessesInScope.ContainsKey witnessInfo then - let witnessArgIdx = env.witnessesInScope[witnessInfo] + match env.witnessesInScope.TryGetValue witnessInfo with + | true, witnessesInScopeValue -> + let witnessArgIdx = witnessesInScopeValue QP.mkVar witnessArgIdx // Otherwise it is a witness in a quotation literal - else + | false, _ -> let holeTy = GenWitnessTy g witnessInfo let idx = cenv.exprSplices.Count let fillExpr = Expr.WitnessArg(traitInfo, m) @@ -712,18 +713,14 @@ and private ConvExprCore cenv (env : QuotationTranslationEnv) (expr: Expr) : QP. wfail(Error(FSComp.SR.crefQuotationsCantRequireByref(), m)) | TOp.TraitCall traitInfo, _, args -> - let g = g + //let g = g let inWitnessPassingScope = not env.witnessesInScope.IsEmpty let witnessArgInfo = if g.generateWitnesses && inWitnessPassingScope then let witnessInfo = traitInfo.GetWitnessInfo() -#if FABLE_COMPILER - env.witnessesInScope.TryFind witnessInfo -#else match env.witnessesInScope.TryGetValue witnessInfo with | true, storage -> Some storage | _ -> None -#endif else None diff --git a/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fsi b/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fsi index d82bfa32bc..288a8e1e73 100644 --- a/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fsi +++ b/src/fcs-fable/src/Compiler/Checking/QuotationTranslator.fsi @@ -32,6 +32,7 @@ type QuotationSerializationFormat = type QuotationGenerationScope = static member Create: TcGlobals * ImportMap * CcuThunk * ConstraintSolver.TcValF * IsReflectedDefinition -> QuotationGenerationScope + member Close: unit -> ILTypeRef list * (TType * range) list * (Expr * range) list static member ComputeQuotationFormat: TcGlobals -> QuotationSerializationFormat diff --git a/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fs b/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fs index 27cbe35a13..f24a93c5fc 100644 --- a/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fs +++ b/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fs @@ -162,7 +162,7 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = (errorR(Error(FSComp.SR.typrelSigImplNotCompatibleConstraintsDifferRemove(sigTypar.Name, LayoutRender.showL(NicePrint.layoutTyparConstraint denv (sigTypar, sigTyparCx))), m)); false) else true) && - (not checkingSig || checkAttribs aenv implTypar.Attribs sigTypar.Attribs (fun attribs -> implTypar.SetAttribs attribs))) + (not checkingSig || checkAttribs aenv implTypar.Attribs sigTypar.Attribs (implTypar.SetAttribs))) and checkTypeDef (aenv: TypeEquivEnv) (infoReader: InfoReader) (implTycon: Tycon) (sigTycon: Tycon) = let m = implTycon.Range @@ -349,7 +349,7 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = checkTypars m aenv implTypars sigTypars && if not (typeAEquiv g aenv implValTy sigValTy) then err denv FSComp.SR.ValueNotContainedMutabilityTypesDiffer elif not (checkValInfo aenv (err denv) implVal sigVal) then false - elif not (implVal.IsExtensionMember = sigVal.IsExtensionMember) then err denv FSComp.SR.ValueNotContainedMutabilityExtensionsDiffer + elif implVal.IsExtensionMember <> sigVal.IsExtensionMember then err denv FSComp.SR.ValueNotContainedMutabilityExtensionsDiffer elif not (checkMemberDatasConform (err denv) (implVal.Attribs, implVal, implVal.MemberInfo) (sigVal.Attribs, sigVal, sigVal.MemberInfo)) then false else checkAttribs aenv implVal.Attribs sigVal.Attribs (fun attribs -> implVal.SetAttribs attribs) @@ -403,9 +403,9 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = match implMemberInfo, sigMemberInfo with | None, None -> true | Some implMembInfo, Some sigMembInfo -> - if not ((implVal.CompiledName g.CompilerGlobalState) = (sigVal.CompiledName g.CompilerGlobalState)) then + if (implVal.CompiledName g.CompilerGlobalState) <> (sigVal.CompiledName g.CompilerGlobalState) then err(FSComp.SR.ValueNotContainedMutabilityDotNetNamesDiffer) - elif not (implMembInfo.MemberFlags.IsInstance = sigMembInfo.MemberFlags.IsInstance) then + elif implMembInfo.MemberFlags.IsInstance <> sigMembInfo.MemberFlags.IsInstance then err(FSComp.SR.ValueNotContainedMutabilityStaticsDiffer) elif false then err(FSComp.SR.ValueNotContainedMutabilityVirtualsDiffer) @@ -419,9 +419,9 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = // This is an example where it is OK for the signature to say 'non-final' when the implementation says 'final' elif not implMembInfo.MemberFlags.IsFinal && sigMembInfo.MemberFlags.IsFinal then err(FSComp.SR.ValueNotContainedMutabilityFinalsDiffer) - elif not (implMembInfo.MemberFlags.IsOverrideOrExplicitImpl = sigMembInfo.MemberFlags.IsOverrideOrExplicitImpl) then + elif implMembInfo.MemberFlags.IsOverrideOrExplicitImpl <> sigMembInfo.MemberFlags.IsOverrideOrExplicitImpl then err(FSComp.SR.ValueNotContainedMutabilityOverridesDiffer) - elif not (implMembInfo.MemberFlags.MemberKind = sigMembInfo.MemberFlags.MemberKind) then + elif implMembInfo.MemberFlags.MemberKind <> sigMembInfo.MemberFlags.MemberKind then err(FSComp.SR.ValueNotContainedMutabilityOneIsConstructor) else let finstance = ValSpecIsCompiledAsInstance g sigVal diff --git a/src/fcs-fable/src/Compiler/Checking/SignatureHash.fs b/src/fcs-fable/src/Compiler/Checking/SignatureHash.fs index 2193f4325b..77a9ede414 100644 --- a/src/fcs-fable/src/Compiler/Checking/SignatureHash.fs +++ b/src/fcs-fable/src/Compiler/Checking/SignatureHash.fs @@ -95,14 +95,14 @@ module HashIL = let rec hashILType (ty: ILType) : Hash = match ty with | ILType.Void -> hash ILType.Void - | ILType.Array (sh, t) -> hashILType t @@ hashILArrayShape sh + | 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 + | ILType.Modified(_, _, t) -> hashILType t and hashILCallingSignature (signature: ILCallingSignature) = let res = signature.ReturnType |> hashILType @@ -113,7 +113,7 @@ module HashAccessibility = let isHiddenToObserver (TAccess access) (observer: ObserverVisibility) = let isInternalCompPath x = match x with - | CompPath (ILScopeRef.Local, []) -> true + | CompPath(ILScopeRef.Local, []) -> true | _ -> false match access with @@ -134,7 +134,7 @@ module rec HashTypes = let hashMemberFlags (memFlags: SynMemberFlags) = hash memFlags /// Hash an attribute 'Type(arg1, ..., argN)' - let private hashAttrib (Attrib (tyconRef = tcref)) = hashTyconRefImpl tcref + let private hashAttrib (Attrib(tyconRef = tcref)) = hashTyconRefImpl tcref let hashAttributeList attrs = attrs |> hashListOrderIndependent hashAttrib @@ -151,18 +151,18 @@ module rec HashTypes = 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.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.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.SimpleChoice(tys, _) -> tpHash @@ 12 @@ (tys |> hashListOrderIndependent (hashTType g)) | TyparConstraint.RequiresDefaultConstructor _ -> tpHash @@ 13 /// Hash type parameter constraints @@ -197,23 +197,23 @@ module rec HashTypes = 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) -> + | 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) -> + | 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_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_var(r, _) -> hashTyparRefWithInfo r | TType_measure unt -> hashMeasure unt // Hash a single argument, including its name and type @@ -268,7 +268,7 @@ module rec HashTypes = let hashMemberType (g: TcGlobals) vref typarInst argInfos retTy = match PartitionValRefTypars g vref with - | Some (_, _, memberMethodTypars, memberToParentInst, _) -> + | Some(_, _, memberMethodTypars, memberToParentInst, _) -> hashMemberSigCore g memberToParentInst (typarInst, memberMethodTypars, argInfos, retTy) | None -> hashUncurriedSig g typarInst argInfos retTy @@ -293,7 +293,11 @@ module HashTastMemberOrVals = let combinedHash = memberFlagsHash - @@ parentTypeHash @@ memberTypeHash @@ flagsHash @@ nameHash @@ attribsHash + @@ parentTypeHash + @@ memberTypeHash + @@ flagsHash + @@ nameHash + @@ attribsHash combinedHash @@ -344,7 +348,10 @@ module TyconDefinitionHash = let combined = nameHash @@ attribHash - @@ typeHash @@ (hash fld.IsStatic) @@ (hash fld.IsVolatile) @@ (hash fld.IsMutable) + @@ typeHash + @@ (hash fld.IsStatic) + @@ (hash fld.IsVolatile) + @@ (hash fld.IsMutable) combined @@ -368,7 +375,7 @@ module TyconDefinitionHash = |> hashListOrderMatters (hashUnionCase (g, obs)) let private hashFsharpDelegate g slotSig = - let (TSlotSig (_, _, _, _, paraml, retTy)) = slotSig + let (TSlotSig(_, _, _, _, paraml, retTy)) = slotSig (paraml |> hashListOrderMatters (fun pl -> pl |> hashListOrderMatters (fun sp -> hashTType g sp.Type))) @@ -471,11 +478,11 @@ let calculateHashOfImpliedSignature g observer (expr: ModuleOrNamespaceContents) match monb with | ModuleOrNamespaceBinding.Binding b when b.Var.LogicalName.StartsWith("doval@") -> 0 | ModuleOrNamespaceBinding.Binding b -> HashTastMemberOrVals.hashValOrMemberNoInst (g, observer) (mkLocalValRef b.Var) - | ModuleOrNamespaceBinding.Module (moduleInfo, contents) -> hashSingleModuleOrNameSpaceIncludingName (moduleInfo, contents) + | ModuleOrNamespaceBinding.Module(moduleInfo, contents) -> hashSingleModuleOrNameSpaceIncludingName (moduleInfo, contents) and hashSingleModuleOrNamespaceContents x = match x with - | TMDefRec (_, _opens, tycons, mbinds, _) -> + | TMDefRec(_, _opens, tycons, mbinds, _) -> let mbindsHash = mbinds |> hashListOrderIndependent (hashModuleOrNameSpaceBinding) let tyconsHash = TyconDefinitionHash.hashTyconDefns (g, observer) tycons @@ -485,7 +492,7 @@ let calculateHashOfImpliedSignature g observer (expr: ModuleOrNamespaceContents) else 0 - | TMDefLet (bind, _) -> HashTastMemberOrVals.hashValOrMemberNoInst (g, observer) (mkLocalValRef bind.Var) + | TMDefLet(bind, _) -> HashTastMemberOrVals.hashValOrMemberNoInst (g, observer) (mkLocalValRef bind.Var) | TMDefOpens _ -> 0 (* empty hash *) | TMDefs defs -> defs |> hashListOrderIndependent hashSingleModuleOrNamespaceContents | TMDefDo _ -> 0 (* empty hash *) @@ -525,4 +532,5 @@ let calculateHashOfAssemblyTopAttributes (attrs: TopAttribs) (platform: ILPlatfo HashTypes.hashAttributeList attrs.assemblyAttrs @@ HashTypes.hashAttributeList attrs.mainMethodAttrs - @@ HashTypes.hashAttributeList attrs.netModuleAttrs @@ platformHash + @@ HashTypes.hashAttributeList attrs.netModuleAttrs + @@ platformHash diff --git a/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fs b/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fs index 9371f59955..1faa9a50a3 100644 --- a/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fs +++ b/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fs @@ -20,9 +20,8 @@ let PostInferenceChecksStackGuardDepth = GetEnvInteger "FSHARP_TailCallChecks" 5 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) + | InnerExprPat(Expr.App(funcExpr = InnerExprPat(Expr.Val(valRef = vref; flags = valUseFlags))) | Expr.Val( + valRef = vref; flags = valUseFlags)) -> Some(vref, valUseFlags) | _ -> None type TailCallReturnType = @@ -36,10 +35,7 @@ type TailCall = static member private IsVoidRet (g: TcGlobals) (v: Val) = match v.ValReprInfo with | Some info -> - let _tps, tau = destTopForallTy g info v.Type - - let _curriedArgInfos, returnTy = - GetTopTauTypeInFSharpForm g info.ArgInfos tau v.Range + let _, _, returnTy, _ = GetValReprTypeInFSharpForm g info v.Type v.Range if isUnitTy g returnTy then TailCallReturnType.MustReturnVoid @@ -51,7 +47,7 @@ type TailCall = static member YesFromExpr (g: TcGlobals) (expr: Expr) = match expr with - | ValUseAtApp (valRef, _) -> TailCall.Yes(TailCall.IsVoidRet g valRef.Deref) + | ValUseAtApp(valRef, _) -> TailCall.Yes(TailCall.IsVoidRet g valRef.Deref) | _ -> TailCall.Yes TailCallReturnType.NonVoid member x.AtExprLambda = @@ -136,11 +132,11 @@ let mkArgsForAppliedVal isBaseCall (vref: ValRef) argsl = let rec mkArgsForAppliedExpr isBaseCall argsl x = match stripDebugPoints (stripExpr x) with // recognise val - | Expr.Val (vref, _, _) -> mkArgsForAppliedVal isBaseCall vref argsl + | Expr.Val(vref, _, _) -> mkArgsForAppliedVal isBaseCall vref argsl // step through instantiations - | Expr.App (f, _fty, _tyargs, [], _) -> mkArgsForAppliedExpr isBaseCall argsl f + | Expr.App(f, _fty, _tyargs, [], _) -> mkArgsForAppliedExpr isBaseCall argsl f // step through subsumption coercions - | Expr.Op (TOp.Coerce, _, [ f ], _) -> mkArgsForAppliedExpr isBaseCall argsl f + | Expr.Op(TOp.Coerce, _, [ f ], _) -> mkArgsForAppliedExpr isBaseCall argsl f | _ -> [] /// Check an expression, where the expression is in a position where byrefs can be generated @@ -154,12 +150,12 @@ and CheckForNonTailRecCall (cenv: cenv) expr (tailCall: TailCall) = let expr = stripDebugPoints expr match expr with - | Expr.App (f, _fty, _tyargs, argsl, m) -> + | 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 -> + | ValUseAtApp(vref, valUseFlags) when cenv.mustTailCall.Contains vref.Deref -> let canTailCall = match tailCall with @@ -169,16 +165,19 @@ and CheckForNonTailRecCall (cenv: cenv) expr (tailCall: TailCall) = if vref.IsMemberOrModuleBinding && vref.ValReprInfo.IsSome then let topValInfo = vref.ValReprInfo.Value - let (nowArgs, laterArgs), returnTy = - let _tps, tau = destTopForallTy g topValInfo _fty - - let curriedArgInfos, returnTy = - GetTopTauTypeInFSharpForm cenv.g topValInfo.ArgInfos tau m + let nowArgs, laterArgs = + let _, curriedArgInfos, _, _ = + GetValReprTypeInFSharpForm cenv.g topValInfo vref.Type m if argsl.Length >= curriedArgInfos.Length then - (List.splitAfter curriedArgInfos.Length argsl), returnTy + (List.splitAfter curriedArgInfos.Length argsl) else - ([], argsl), returnTy + ([], argsl) + + let numEnclosingTypars = CountEnclosingTyparsOfActualParentOfVal vref.Deref + + let _, _, _, returnTy, _ = + GetValReprTypeInCompiledForm g topValInfo numEnclosingTypars vref.Type m let _, _, isNewObj, isSuperInit, isSelfInit, _, _, _ = GetMemberCallInfo cenv.g (vref, valUseFlags) @@ -191,7 +190,7 @@ and CheckForNonTailRecCall (cenv: cenv) expr (tailCall: TailCall) = let hasByrefArg = nowArgs |> List.exists (tyOfExpr cenv.g >> isByrefTy cenv.g) let mustGenerateUnitAfterCall = - (isUnitTy g returnTy && returnType <> TailCallReturnType.MustReturnVoid) + (Option.isNone returnTy && returnType <> TailCallReturnType.MustReturnVoid) let noTailCallBlockers = not isNewObj @@ -220,8 +219,8 @@ and CheckCall cenv args ctxts (tailCall: TailCall) = // detect CPS-like expressions let rec (|IsAppInLambdaBody|_|) e = match stripDebugPoints e with - | Expr.TyLambda (bodyExpr = bodyExpr) - | Expr.Lambda (bodyExpr = bodyExpr) -> + | Expr.TyLambda(bodyExpr = bodyExpr) + | Expr.Lambda(bodyExpr = bodyExpr) -> match (stripDebugPoints bodyExpr) with | Expr.App _ -> Some(TailCall.YesFromExpr cenv.g e) | IsAppInLambdaBody t -> Some t @@ -258,12 +257,12 @@ and CheckCallWithReceiver cenv args ctxts = and CheckExprLinear (cenv: cenv) expr (ctxt: PermitByRefExpr) (tailCall: TailCall) : unit = match expr with - | Expr.Sequential (e1, e2, NormalSeq, _) -> + | Expr.Sequential(e1, e2, NormalSeq, _) -> CheckExprNoByrefs cenv TailCall.No e1 // tailcall CheckExprLinear cenv e2 ctxt tailCall - | Expr.Let (TBind (v, _bindRhs, _) as bind, body, _, _) -> + | Expr.Let(TBind(v, _bindRhs, _) as bind, body, _, _) -> let isByRef = isByrefTy cenv.g v.Type let bindingContext = @@ -276,18 +275,18 @@ and CheckExprLinear (cenv: cenv) expr (ctxt: PermitByRefExpr) (tailCall: TailCal // tailcall CheckExprLinear cenv body ctxt tailCall - | LinearOpExpr (_op, _tyargs, argsHead, argLast, _m) -> + | LinearOpExpr(_op, _tyargs, argsHead, argLast, _m) -> argsHead |> List.iter (CheckExprNoByrefs cenv tailCall) // tailcall CheckExprLinear cenv argLast PermitByRefExpr.No tailCall - | LinearMatchExpr (_spMatch, _exprm, dtree, tg1, e2, _m, _ty) -> + | LinearMatchExpr(_spMatch, _exprm, dtree, tg1, e2, _m, _ty) -> CheckDecisionTree cenv dtree CheckDecisionTreeTarget cenv tailCall ctxt tg1 // tailcall CheckExprLinear cenv e2 ctxt tailCall - | Expr.DebugPoint (_, innerExpr) -> CheckExprLinear cenv innerExpr ctxt tailCall + | Expr.DebugPoint(_, innerExpr) -> CheckExprLinear cenv innerExpr ctxt tailCall | _ -> // not a linear expression @@ -313,10 +312,10 @@ and CheckExpr (cenv: cenv) origExpr (ctxt: PermitByRefExpr) (tailCall: TailCall) | LinearOpExpr _ | LinearMatchExpr _ | Expr.Let _ - | Expr.Sequential (_, _, NormalSeq, _) + | Expr.Sequential(_, _, NormalSeq, _) | Expr.DebugPoint _ -> CheckExprLinear cenv expr ctxt tailCall - | Expr.Sequential (e1, e2, ThenDoSeq, _) -> + | Expr.Sequential(e1, e2, ThenDoSeq, _) -> CheckExprNoByrefs cenv TailCall.No e1 CheckExprNoByrefs cenv TailCall.No e2 @@ -326,10 +325,10 @@ and CheckExpr (cenv: cenv) origExpr (ctxt: PermitByRefExpr) (tailCall: TailCall) | StructStateMachineExpr g info -> CheckStructStateMachineExpr cenv info - | Expr.Obj (_, ty, _basev, superInitCall, overrides, iimpls, _) -> CheckObjectExpr cenv (ty, superInitCall, overrides, iimpls) + | Expr.Obj(_, ty, _basev, superInitCall, overrides, iimpls, _) -> CheckObjectExpr cenv (ty, superInitCall, overrides, iimpls) // Allow base calls to F# methods - | Expr.App (InnerExprPat (ExprValWithPossibleTypeInst (v, vFlags, _, _) as f), _fty, _tyargs, Expr.Val (baseVal, _, _) :: rest, _m) when + | Expr.App(InnerExprPat(ExprValWithPossibleTypeInst(v, vFlags, _, _) as f), _fty, _tyargs, Expr.Val(baseVal, _, _) :: rest, _m) when ((match vFlags with | VSlotDirectCall -> true | _ -> false) @@ -338,14 +337,14 @@ and CheckExpr (cenv: cenv) origExpr (ctxt: PermitByRefExpr) (tailCall: TailCall) CheckFSharpBaseCall cenv (v, f, rest) // Allow base calls to IL methods - | Expr.Op (TOp.ILCall (isVirtual, _, _, _, _, _, _, _ilMethRef, _enclTypeInst, _methInst, _retTypes), - _tyargs, - Expr.Val (baseVal, _, _) :: rest, - _m) when not isVirtual && baseVal.IsBaseVal -> + | Expr.Op(TOp.ILCall(isVirtual, _, _, _, _, _, _, _ilMethRef, _enclTypeInst, _methInst, _retTypes), + _tyargs, + Expr.Val(baseVal, _, _) :: rest, + _m) when not isVirtual && baseVal.IsBaseVal -> CheckILBaseCall cenv rest - | Expr.Op (op, tyargs, args, m) -> CheckExprOp cenv (op, tyargs, args, m) ctxt + | Expr.Op(op, tyargs, args, m) -> CheckExprOp cenv (op, tyargs, args, m) ctxt // Allow 'typeof' calls as a special case, the only accepted use of System.Void! | TypeOfExpr g ty when isVoidTy g ty -> () @@ -354,14 +353,14 @@ and CheckExpr (cenv: cenv) origExpr (ctxt: PermitByRefExpr) (tailCall: TailCall) | TypeDefOfExpr g ty when isVoidTy g ty -> () // Check an application - | Expr.App (f, _fty, _tyargs, argsl, _m) -> + | Expr.App(f, _fty, _tyargs, argsl, _m) -> // detect expressions like List.collect let checkArgForLambdaWithAppOfMustTailCall e = match stripDebugPoints e with - | Expr.TyLambda (bodyExpr = bodyExpr) - | Expr.Lambda (bodyExpr = bodyExpr) -> + | Expr.TyLambda(bodyExpr = bodyExpr) + | Expr.Lambda(bodyExpr = bodyExpr) -> match bodyExpr with - | Expr.App (ValUseAtApp (vref, _valUseFlags), _formalType, _typeArgs, _exprs, _range) -> + | Expr.App(ValUseAtApp(vref, _valUseFlags), _formalType, _typeArgs, _exprs, _range) -> cenv.mustTailCall.Contains vref.Deref | _ -> false | _ -> false @@ -374,17 +373,17 @@ and CheckExpr (cenv: cenv) origExpr (ctxt: PermitByRefExpr) (tailCall: TailCall) CheckApplication cenv (f, argsl) tailCall - | Expr.Lambda (_, _, _, argvs, _, m, bodyTy) -> CheckLambda cenv expr (argvs, m, bodyTy) tailCall + | Expr.Lambda(_, _, _, argvs, _, m, bodyTy) -> CheckLambda cenv expr (argvs, m, bodyTy) tailCall - | Expr.TyLambda (_, tps, _, m, bodyTy) -> CheckTyLambda cenv expr (tps, m, bodyTy) tailCall + | Expr.TyLambda(_, tps, _, m, bodyTy) -> CheckTyLambda cenv expr (tps, m, bodyTy) tailCall - | Expr.TyChoose (_tps, e1, _) -> CheckExprNoByrefs cenv tailCall e1 + | Expr.TyChoose(_tps, e1, _) -> CheckExprNoByrefs cenv tailCall e1 - | Expr.Match (_, _, dtree, targets, _m, _ty) -> CheckMatch cenv ctxt (dtree, targets) tailCall + | Expr.Match(_, _, dtree, targets, _m, _ty) -> CheckMatch cenv ctxt (dtree, targets) tailCall - | Expr.LetRec (binds, bodyExpr, _, _) -> CheckLetRec cenv (binds, bodyExpr) tailCall + | Expr.LetRec(binds, bodyExpr, _, _) -> CheckLetRec cenv (binds, bodyExpr) tailCall - | Expr.StaticOptimization (_constraints, e2, e3, _m) -> CheckStaticOptimization cenv (e2, e3) + | Expr.StaticOptimization(_constraints, e2, e3, _m) -> CheckStaticOptimization cenv (e2, e3) | Expr.WitnessArg _ -> () @@ -422,7 +421,7 @@ and CheckApplication cenv (f, argsl) (tailCall: TailCall) : unit = let hasReceiver = match f with - | Expr.Val (vref, _, _) when vref.IsInstanceMember && not argsl.IsEmpty -> true + | Expr.Val(vref, _, _) when vref.IsInstanceMember && not argsl.IsEmpty -> true | _ -> false let ctxts = mkArgsForAppliedExpr false argsl f @@ -461,7 +460,7 @@ and CheckStaticOptimization cenv (e2, e3) = and CheckMethods cenv (ty, methods) = methods |> List.iter (CheckMethod cenv ty) -and CheckMethod cenv _ty (TObjExprMethod (_, _, _tps, _vs, body, _m)) = +and CheckMethod cenv _ty (TObjExprMethod(_, _, _tps, _vs, body, _m)) = let tailCall = match stripDebugPoints body with | Expr.App _ as a -> TailCall.YesFromExpr cenv.g a @@ -480,26 +479,26 @@ and CheckExprOp cenv (op, tyargs, args, m) ctxt : unit = // Special cases match op, tyargs, args with // Handle these as special cases since mutables are allowed inside their bodies - | TOp.While _, _, [ Expr.Lambda (_, _, _, [ _ ], e1, _, _); Expr.Lambda (_, _, _, [ _ ], e2, _, _) ] -> + | TOp.While _, _, [ Expr.Lambda(_, _, _, [ _ ], e1, _, _); Expr.Lambda(_, _, _, [ _ ], e2, _, _) ] -> CheckExprsNoByRefLike cenv [ e1; e2 ] - | TOp.TryFinally _, [ _ ], [ Expr.Lambda (_, _, _, [ _ ], e1, _, _); Expr.Lambda (_, _, _, [ _ ], e2, _, _) ] -> + | TOp.TryFinally _, [ _ ], [ Expr.Lambda(_, _, _, [ _ ], e1, _, _); Expr.Lambda(_, _, _, [ _ ], e2, _, _) ] -> CheckExpr cenv e1 ctxt TailCall.No // result of a try/finally can be a byref if in a position where the overall expression is can be a byref CheckExprNoByrefs cenv TailCall.No e2 | TOp.IntegerForLoop _, _, - [ Expr.Lambda (_, _, _, [ _ ], e1, _, _); Expr.Lambda (_, _, _, [ _ ], e2, _, _); Expr.Lambda (_, _, _, [ _ ], e3, _, _) ] -> + [ Expr.Lambda(_, _, _, [ _ ], e1, _, _); Expr.Lambda(_, _, _, [ _ ], e2, _, _); Expr.Lambda(_, _, _, [ _ ], e3, _, _) ] -> CheckExprsNoByRefLike cenv [ e1; e2; e3 ] | TOp.TryWith _, [ _ ], - [ Expr.Lambda (_, _, _, [ _ ], e1, _, _); Expr.Lambda (_, _, _, [ _ ], _e2, _, _); Expr.Lambda (_, _, _, [ _ ], e3, _, _) ] -> + [ Expr.Lambda(_, _, _, [ _ ], e1, _, _); Expr.Lambda(_, _, _, [ _ ], _e2, _, _); Expr.Lambda(_, _, _, [ _ ], e3, _, _) ] -> CheckExpr cenv e1 ctxt TailCall.No // result of a try/catch can be a byref if in a position where the overall expression is can be a byref // [(* e2; -- don't check filter body - duplicates logic in 'catch' body *) e3] CheckExpr cenv e3 ctxt TailCall.No // result of a try/catch can be a byref if in a position where the overall expression is can be a byref - | TOp.ILCall (_, _, _, _, _, _, _, ilMethRef, _enclTypeInst, _methInst, retTypes), _, _ -> + | TOp.ILCall(_, _, _, _, _, _, _, ilMethRef, _enclTypeInst, _methInst, retTypes), _, _ -> let hasReceiver = (ilMethRef.CallingConv.IsInstance || ilMethRef.CallingConv.IsInstanceExplicit) @@ -527,13 +526,13 @@ and CheckExprOp cenv (op, tyargs, args, m) ctxt : unit = CheckExprsPermitByRefLike cenv args | _ -> CheckExprsNoByRefLike cenv args - | TOp.LValueOp (LAddrOf _, _vref), _, _ -> CheckExprsNoByRefLike cenv args + | TOp.LValueOp(LAddrOf _, _vref), _, _ -> CheckExprsNoByRefLike cenv args - | TOp.LValueOp (LByrefSet, _vref), _, [ _arg ] -> () + | TOp.LValueOp(LByrefSet, _vref), _, [ _arg ] -> () - | TOp.LValueOp (LByrefGet, _vref), _, [] -> () + | TOp.LValueOp(LByrefGet, _vref), _, [] -> () - | TOp.LValueOp (LSet, _vref), _, [ _arg ] -> () + | TOp.LValueOp(LSet, _vref), _, [ _arg ] -> () | TOp.AnonRecdGet _, _, [ arg1 ] | TOp.TupleFieldGet _, _, [ arg1 ] -> CheckExprsPermitByRefLike cenv [ arg1 ] @@ -553,10 +552,10 @@ and CheckExprOp cenv (op, tyargs, args, m) ctxt : unit = | TOp.Reraise, [ _ty1 ], [] -> () // Check get of static field - | TOp.ValFieldGetAddr (_rfref, _readonly), _tyargs, [] -> () + | TOp.ValFieldGetAddr(_rfref, _readonly), _tyargs, [] -> () // Check get of instance field - | TOp.ValFieldGetAddr (_rfref, _readonly), _tyargs, [ obj ] -> + | TOp.ValFieldGetAddr(_rfref, _readonly), _tyargs, [ obj ] -> // Recursively check in same ctxt, e.g. if at PermitOnlyReturnable the obj arg must also be returnable CheckExpr cenv obj ctxt TailCall.No @@ -564,14 +563,14 @@ and CheckExprOp cenv (op, tyargs, args, m) ctxt : unit = | TOp.UnionCaseTagGet _, _, [ arg1 ] -> CheckExprPermitByRefLike cenv arg1 // allow byref - it may be address-of-struct - | TOp.UnionCaseFieldGetAddr (_uref, _idx, _readonly), _tyargs, [ obj ] -> + | TOp.UnionCaseFieldGetAddr(_uref, _idx, _readonly), _tyargs, [ obj ] -> // Recursively check in same ctxt, e.g. if at PermitOnlyReturnable the obj arg must also be returnable CheckExpr cenv obj ctxt TailCall.No - | TOp.ILAsm (instrs, _retTypes), _, _ -> + | TOp.ILAsm(instrs, _retTypes), _, _ -> match instrs, args with // Write a .NET instance field - | [ I_stfld (_alignment, _vol, _fspec) ], _ -> + | [ I_stfld(_alignment, _vol, _fspec) ], _ -> match args with | [ _; rhs ] -> CheckExprNoByrefs cenv TailCall.No rhs | _ -> () @@ -581,12 +580,12 @@ and CheckExprOp cenv (op, tyargs, args, m) ctxt : unit = CheckExprsPermitByRefLike cenv args // Read a .NET instance field - | [ I_ldfld (_alignment, _vol, _fspec) ], _ -> + | [ I_ldfld(_alignment, _vol, _fspec) ], _ -> // permit byref for lhs lvalue CheckExprsPermitByRefLike cenv args // Read a .NET instance field - | [ I_ldfld (_alignment, _vol, _fspec); AI_nop ], _ -> + | [ I_ldfld(_alignment, _vol, _fspec); AI_nop ], _ -> // permit byref for lhs lvalue of readonly value CheckExprsPermitByRefLike cenv args @@ -597,7 +596,7 @@ and CheckExprOp cenv (op, tyargs, args, m) ctxt : unit = // Recursively check in same ctxt, e.g. if at PermitOnlyReturnable the obj arg must also be returnable CheckExpr cenv obj ctxt TailCall.No - | [ I_ldelema (_, _isNativePtr, _, _) ], lhsArray :: indices -> + | [ I_ldelema(_, _isNativePtr, _, _) ], lhsArray :: indices -> // permit byref for lhs lvalue CheckExprPermitByRefLike cenv lhsArray CheckExprsNoByRefLike cenv indices @@ -634,10 +633,10 @@ and CheckLambdas // The valReprInfo here says we are _guaranteeing_ to compile a function value // as a .NET method with precisely the corresponding argument counts. match stripDebugPoints expr with - | Expr.TyChoose (_tps, e1, m) -> CheckLambdas isTop memberVal cenv inlined valReprInfo tailCall alwaysCheckNoReraise e1 m ety ctxt + | Expr.TyChoose(_tps, e1, m) -> CheckLambdas isTop memberVal cenv inlined valReprInfo tailCall alwaysCheckNoReraise e1 m ety ctxt - | Expr.Lambda (_, _, _, _, _, m, _) - | Expr.TyLambda (_, _, _, m, _) -> + | Expr.Lambda(_, _, _, _, _, m, _) + | Expr.TyLambda(_, _, _, m, _) -> let _tps, _ctorThisValOpt, _baseValOpt, _vsl, body, bodyTy = destLambdaWithValReprInfo g cenv.amap valReprInfo (expr, ety) @@ -687,20 +686,20 @@ and CheckDecisionTreeTargets cenv targets ctxt (tailCall: TailCall) = |> List.ofArray |> ignore -and CheckDecisionTreeTarget cenv (tailCall: TailCall) ctxt (TTarget (_vs, targetExpr, _)) : unit = CheckExpr cenv targetExpr ctxt tailCall +and CheckDecisionTreeTarget cenv (tailCall: TailCall) ctxt (TTarget(_vs, targetExpr, _)) : unit = CheckExpr cenv targetExpr ctxt tailCall and CheckDecisionTree cenv dtree = match dtree with - | TDSuccess (resultExprs, _) -> CheckExprsNoByRefLike cenv resultExprs - | TDBind (bind, rest) -> + | TDSuccess(resultExprs, _) -> CheckExprsNoByRefLike cenv resultExprs + | TDBind(bind, rest) -> CheckBinding cenv false PermitByRefExpr.Yes bind CheckDecisionTree cenv rest - | TDSwitch (inpExpr, cases, dflt, _m) -> CheckDecisionTreeSwitch cenv (inpExpr, cases, dflt) + | TDSwitch(inpExpr, cases, dflt, _m) -> CheckDecisionTreeSwitch cenv (inpExpr, cases, dflt) and CheckDecisionTreeSwitch cenv (inpExpr, cases, dflt) = CheckExprPermitByRefLike cenv inpExpr // can be byref for struct union switch - for TCase (discrim, dtree) in cases do + for TCase(discrim, dtree) in cases do CheckDecisionTreeTest cenv discrim CheckDecisionTree cenv dtree @@ -708,10 +707,10 @@ and CheckDecisionTreeSwitch cenv (inpExpr, cases, dflt) = and CheckDecisionTreeTest cenv discrim = match discrim with - | DecisionTreeTest.ActivePatternCase (exp, _, _, _, _, _) -> CheckExprNoByrefs cenv TailCall.No exp + | DecisionTreeTest.ActivePatternCase(exp, _, _, _, _, _) -> CheckExprNoByrefs cenv TailCall.No exp | _ -> () -and CheckBinding cenv alwaysCheckNoReraise ctxt (TBind (v, bindRhs, _) as bind) : unit = +and CheckBinding cenv alwaysCheckNoReraise ctxt (TBind(v, bindRhs, _) as bind) : unit = let g = cenv.g let isTop = Option.isSome bind.Var.ValReprInfo let tailCall = TailCall.YesFromVal g bind.Var @@ -728,37 +727,61 @@ and CheckBindings cenv binds = CheckBinding cenv false PermitByRefExpr.Yes bind let CheckModuleBinding cenv (isRec: bool) (TBind _ as bind) = - // Check that a let binding to the result of a rec expression is not inside the rec expression + + // 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 + 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 + // Check if a call of a rec expression is not inside a TryWith/TryFinally operation // see test ``Warn for invalid tailcalls in seq expression because of bind`` for an example // see test ``Warn successfully for rec call in binding`` for an example + // see test ``Warn for simple rec call in try-with`` for an example if cenv.g.langVersion.SupportsFeature LanguageFeature.WarningWhenTailRecAttributeButNonTailRecUsage then match bind.Expr with - | Expr.TyLambda (bodyExpr = bodyExpr) - | Expr.Lambda (bodyExpr = bodyExpr) -> - let rec checkTailCall (insideSubBinding: bool) expr = + | Expr.TyLambda(bodyExpr = bodyExpr) + | Expr.Lambda(bodyExpr = bodyExpr) -> + let rec checkTailCall (insideSubBindingOrTry: bool) expr = match expr with - | Expr.Val (valRef = valRef; range = m) -> - if isRec && insideSubBinding && cenv.mustTailCall.Contains valRef.Deref then + | Expr.Val(valRef = valRef; range = m) -> + if isRec && insideSubBindingOrTry && cenv.mustTailCall.Contains valRef.Deref then warning (Error(FSComp.SR.chkNotTailRecursive valRef.DisplayName, m)) - | Expr.App (funcExpr = funcExpr; args = argExprs) -> - checkTailCall insideSubBinding funcExpr - argExprs |> List.iter (checkTailCall insideSubBinding) - | Expr.Link exprRef -> checkTailCall insideSubBinding exprRef.Value - | Expr.Lambda (bodyExpr = bodyExpr) -> checkTailCall insideSubBinding bodyExpr - | Expr.DebugPoint (_debugPointAtLeafExpr, expr) -> checkTailCall insideSubBinding expr - | Expr.Let (binding = binding; bodyExpr = bodyExpr) -> + | Expr.App(funcExpr = funcExpr; args = argExprs) -> + checkTailCall insideSubBindingOrTry funcExpr + argExprs |> List.iter (checkTailCall insideSubBindingOrTry) + | Expr.Link exprRef -> checkTailCall insideSubBindingOrTry exprRef.Value + | Expr.Lambda(bodyExpr = bodyExpr) -> checkTailCall insideSubBindingOrTry bodyExpr + | Expr.DebugPoint(_debugPointAtLeafExpr, expr) -> checkTailCall insideSubBindingOrTry expr + | Expr.Let(binding = binding; bodyExpr = bodyExpr) -> checkTailCall true binding.Expr let warnForBodyExpr = - match stripDebugPoints bodyExpr with - | Expr.Op _ -> true // ToDo: too crude of a check? - | _ -> false + insideSubBindingOrTry + || match stripDebugPoints bodyExpr with + | Expr.Op _ -> true + | _ -> false checkTailCall warnForBodyExpr bodyExpr - | Expr.Match (targets = decisionTreeTargets) -> + | Expr.Match(targets = decisionTreeTargets) -> decisionTreeTargets - |> Array.iter (fun target -> checkTailCall insideSubBinding target.TargetExpression) - | Expr.Op (args = exprs) -> exprs |> Seq.iter (checkTailCall insideSubBinding) + |> Array.iter (fun target -> checkTailCall insideSubBindingOrTry target.TargetExpression) + | Expr.Op(args = exprs; op = TOp.TryWith _) + | Expr.Op(args = exprs; op = TOp.TryFinally _) -> + // warn for recursive calls in TryWith/TryFinally operations + exprs |> Seq.iter (checkTailCall true) + | Expr.Op(args = exprs) -> exprs |> Seq.iter (checkTailCall insideSubBindingOrTry) | _ -> () checkTailCall false bodyExpr @@ -776,7 +799,7 @@ let rec CheckDefnsInModule cenv mdefs = and CheckDefnInModule cenv mdef = match mdef with - | TMDefRec (isRec, _opens, _tycons, mspecs, _m) -> + | TMDefRec(isRec, _opens, _tycons, mspecs, _m) -> let cenv = if isRec then let vals = allValsOfModDef mdef @@ -799,14 +822,14 @@ and CheckDefnInModule cenv mdef = cenv List.iter (CheckModuleSpec cenv isRec) mspecs - | TMDefLet (bind, _m) -> CheckModuleBinding cenv false bind + | TMDefLet(bind, _m) -> CheckModuleBinding cenv false bind | TMDefOpens _ -> () - | TMDefDo (e, _m) -> + | TMDefDo(e, _m) -> let tailCall = match stripDebugPoints e with - | Expr.App (funcExpr = funcExpr) -> + | Expr.App(funcExpr = funcExpr) -> match funcExpr with - | ValUseAtApp (vref, _valUseFlags) -> TailCall.YesFromVal cenv.g vref.Deref + | ValUseAtApp(vref, _valUseFlags) -> TailCall.YesFromVal cenv.g vref.Deref | _ -> TailCall.No | _ -> TailCall.No @@ -819,7 +842,7 @@ and CheckModuleSpec cenv isRec mbind = if cenv.mustTailCall.Contains bind.Var then CheckModuleBinding cenv isRec bind - | ModuleOrNamespaceBinding.Module (_mspec, rhs) -> CheckDefnInModule cenv rhs + | ModuleOrNamespaceBinding.Module(_mspec, rhs) -> CheckDefnInModule cenv rhs let CheckImplFile (g, amap, reportErrors, implFileContents) = let cenv = diff --git a/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fs b/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fs index f6949c707d..a778b516d9 100644 --- a/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fs +++ b/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fs @@ -355,8 +355,13 @@ let ImportILTypeFromMetadata amap m scoref 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 - // If the type is a byref and one of attributes from a return or parameter has IsReadOnly, then it's a inref. - if isByrefTy amap.g ty && TryFindILAttribute amap.g.attrib_IsReadOnlyAttribute (getCattrs ()) then + // 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 mkInByrefTy amap.g (destByrefTy amap.g ty) else ty @@ -428,4 +433,3 @@ let FixupNewTypars m (formalEnclosingTypars: Typars) (tinst: TType list) (tpsori let tprefInst = mkTyparInst formalEnclosingTypars tinst @ renaming (tpsorig, tps) ||> List.iter2 (fun tporig tp -> tp.SetConstraints (CopyTyparConstraints m tprefInst tporig)) renaming, tptys - diff --git a/src/fcs-fable/src/Compiler/Checking/import.fs b/src/fcs-fable/src/Compiler/Checking/import.fs index 23edca4faf..7f1f13efda 100644 --- a/src/fcs-fable/src/Compiler/Checking/import.fs +++ b/src/fcs-fable/src/Compiler/Checking/import.fs @@ -503,7 +503,7 @@ let multisetDiscriminateAndMap nodef tipf (items: ('Key list * 'Value) list) = buckets[key] <- match buckets.TryGetValue key with | true, b -> (rest, v) :: b - | _ -> (rest, v) :: [] + | _ -> [rest, v] [ for KeyValue(key, items) in buckets -> nodef key items ] @@ -512,9 +512,11 @@ let multisetDiscriminateAndMap nodef tipf (items: ('Key list * 'Value) list) = /// Import an IL type definition as a new F# TAST Entity node. let rec ImportILTypeDef amap m scoref (cpath: CompilationPath) enc nm (tdef: ILTypeDef) = let lazyModuleOrNamespaceTypeForNestedTypes = - lazy + InterruptibleLazy(fun _ -> let cpath = cpath.NestedCompPath nm ModuleOrType ImportILTypeDefs amap m scoref cpath (enc@[tdef]) tdef.NestedTypes + ) + // Add the type itself. Construct.NewILTycon (Some cpath) @@ -541,9 +543,9 @@ and ImportILTypeDefList amap m (cpath: CompilationPath) enc items = items |> multisetDiscriminateAndMap (fun n tgs -> - let modty = lazy (ImportILTypeDefList amap m (cpath.NestedCompPath n (Namespace true)) enc tgs) + let modty = InterruptibleLazy(fun _ -> ImportILTypeDefList amap m (cpath.NestedCompPath n (Namespace true)) enc tgs) Construct.NewModuleOrNamespace (Some cpath) taccessPublic (mkSynId m n) XmlDoc.Empty [] (MaybeLazy.Lazy modty)) - (fun (n, info: Lazy<_>) -> + (fun (n, info: InterruptibleLazy<_>) -> let (scoref2, lazyTypeDef: ILPreTypeDef) = info.Force() ImportILTypeDef amap m scoref2 cpath enc n (lazyTypeDef.GetTypeDef())) @@ -574,19 +576,21 @@ let ImportILAssemblyExportedType amap m auxModLoader (scoref: ILScopeRef) (expor [] else let ns, n = splitILTypeName exportedType.Name - let info = - lazy (match + let info = + InterruptibleLazy (fun _ -> + match (try let modul = auxModLoader exportedType.ScopeRef let ptd = mkILPreTypeDefComputed (ns, n, (fun () -> modul.TypeDefs.FindByName exportedType.Name)) Some ptd with :? KeyNotFoundException -> None) - with - | None -> - error(Error(FSComp.SR.impReferenceToDllRequiredByAssembly(exportedType.ScopeRef.QualifiedName, scoref.QualifiedName, exportedType.Name), m)) - | Some preTypeDef -> - scoref, preTypeDef) - + with + | None -> + error(Error(FSComp.SR.impReferenceToDllRequiredByAssembly(exportedType.ScopeRef.QualifiedName, scoref.QualifiedName, exportedType.Name), m)) + | Some preTypeDef -> + scoref, preTypeDef + ) + [ ImportILTypeDefList amap m (CompPath(scoref, [])) [] [(ns, (n, info))] ] /// Import the "exported types" table for multi-module assemblies. diff --git a/src/fcs-fable/src/Compiler/Checking/infos.fs b/src/fcs-fable/src/Compiler/Checking/infos.fs index 109ed93c1f..d9e886c070 100644 --- a/src/fcs-fable/src/Compiler/Checking/infos.fs +++ b/src/fcs-fable/src/Compiler/Checking/infos.fs @@ -808,6 +808,15 @@ type MethInfo = | ProvidedMeth(_, mi, _, m) -> [mi.PUntaint((fun mi -> mi.GetParameters().Length), m)] // Why is this a list? Answer: because the method might be curried #endif + /// Indicates if the property is a IsABC union case tester implied by a union case definition + member x.IsUnionCaseTester = + let tcref = x.ApparentEnclosingTyconRef + tcref.IsUnionTycon && + x.LogicalName.StartsWith("get_Is") && + match x.ArbitraryValRef with + | Some v -> v.IsImplied + | None -> false + member x.IsCurried = x.NumArgs.Length > 1 /// Does the method appear to the user as an instance method? @@ -1851,6 +1860,11 @@ type PropInfo = | None -> false /// Indicates if this property is an indexer property, i.e. a property with arguments. + /// + /// member x.Prop with + /// get (indexPiece1:int,indexPiece2: string) = ... + /// and set (indexPiece1:int,indexPiece2: string) value = ... + /// member x.IsIndexer = match x with | ILProp(ILPropInfo(_, pdef)) -> pdef.Args.Length <> 0 @@ -2011,6 +2025,11 @@ type PropInfo = #endif | _ -> false + /// Indicates if the property is a IsABC union case tester implied by a union case definition + member x.IsUnionCaseTester = + x.HasGetter && + x.GetterMethod.IsUnionCaseTester + /// Calculates a hash code of property info. Must be compatible with ItemsAreEffectivelyEqual relation. member pi.ComputeHashCode() = match pi with diff --git a/src/fcs-fable/src/Compiler/Checking/infos.fsi b/src/fcs-fable/src/Compiler/Checking/infos.fsi index 992e6b58a7..c6347984e5 100644 --- a/src/fcs-fable/src/Compiler/Checking/infos.fsi +++ b/src/fcs-fable/src/Compiler/Checking/infos.fsi @@ -420,6 +420,9 @@ type MethInfo = /// Indicates if this is an IL method. member IsILMethod: bool + /// Indicates if the method is a get_IsABC union case tester implied by a union case definition + member IsUnionCaseTester: bool + /// Does the method appear to the user as an instance method? member IsInstance: bool @@ -821,6 +824,9 @@ type PropInfo = member ImplementedSlotSignatures: SlotSig list + /// Indicates if the property is a IsABC union case tester implied by a union case definition + member IsUnionCaseTester: bool + /// Indicates if this property is marked 'override' and thus definitely overrides another property. member IsDefiniteFSharpOverride: bool @@ -836,6 +842,11 @@ type PropInfo = member IsFSharpExplicitInterfaceImplementation: bool /// Indicates if this property is an indexer property, i.e. a property with arguments. + /// + /// member x.Prop with + /// get (indexPiece1:int,indexPiece2: string) = ... + /// and set (indexPiece1:int,indexPiece2: string) value = ... + /// member IsIndexer: bool /// Indicates if the property is logically a 'newslot', i.e. hides any previous slots of the same name. diff --git a/src/fcs-fable/src/Compiler/CodeGen/EraseClosures.fs b/src/fcs-fable/src/Compiler/CodeGen/EraseClosures.fs index b53526183b..cf1499f0c3 100644 --- a/src/fcs-fable/src/Compiler/CodeGen/EraseClosures.fs +++ b/src/fcs-fable/src/Compiler/CodeGen/EraseClosures.fs @@ -13,8 +13,6 @@ open FSharp.Compiler.Syntax.PrettyNaming // by compiling down to code pointers, classes etc. // -------------------------------------------------------------------- -let notlazy v = Lazy.CreateFromValue v - let rec stripUpTo n test dest x = if n = 0 then ([], x) @@ -37,7 +35,7 @@ let rec stripUpTo n test dest x = let destTyLambda = function - | Lambdas_forall (l, r) -> (l, r) + | Lambdas_forall(l, r) -> (l, r) | _ -> failwith "no" let isTyLambda = @@ -68,11 +66,11 @@ let stripTyLambdasUpTo n lambdas = // and type applications are never mixed in a single step. let stripSupportedIndirectCall apps = match apps with - | Apps_app (x, Apps_app (y, Apps_app (z, Apps_app (w, Apps_app (v, rest))))) -> [], [ x; y; z; w; v ], rest - | Apps_app (x, Apps_app (y, Apps_app (z, Apps_app (w, rest)))) -> [], [ x; y; z; w ], rest - | Apps_app (x, Apps_app (y, Apps_app (z, rest))) -> [], [ x; y; z ], rest - | Apps_app (x, Apps_app (y, rest)) -> [], [ x; y ], rest - | Apps_app (x, rest) -> [], [ x ], rest + | Apps_app(x, Apps_app(y, Apps_app(z, Apps_app(w, Apps_app(v, rest))))) -> [], [ x; y; z; w; v ], rest + | Apps_app(x, Apps_app(y, Apps_app(z, Apps_app(w, rest)))) -> [], [ x; y; z; w ], rest + | Apps_app(x, Apps_app(y, Apps_app(z, rest))) -> [], [ x; y; z ], rest + | Apps_app(x, Apps_app(y, rest)) -> [], [ x; y ], rest + | Apps_app(x, rest) -> [], [ x ], rest | Apps_tyapp _ -> let maxTyApps = 1 let tys, rest = stripUpTo maxTyApps isTyApp destTyFuncApp apps @@ -91,12 +89,11 @@ let stripSupportedIndirectCall apps = // and type applications are never mixed in a single step. let stripSupportedAbstraction lambdas = match lambdas with - | Lambdas_lambda (x, Lambdas_lambda (y, Lambdas_lambda (z, Lambdas_lambda (w, Lambdas_lambda (v, rest))))) -> - [], [ x; y; z; w; v ], rest - | Lambdas_lambda (x, Lambdas_lambda (y, Lambdas_lambda (z, Lambdas_lambda (w, rest)))) -> [], [ x; y; z; w ], rest - | Lambdas_lambda (x, Lambdas_lambda (y, Lambdas_lambda (z, rest))) -> [], [ x; y; z ], rest - | Lambdas_lambda (x, Lambdas_lambda (y, rest)) -> [], [ x; y ], rest - | Lambdas_lambda (x, rest) -> [], [ x ], rest + | Lambdas_lambda(x, Lambdas_lambda(y, Lambdas_lambda(z, Lambdas_lambda(w, Lambdas_lambda(v, rest))))) -> [], [ x; y; z; w; v ], rest + | Lambdas_lambda(x, Lambdas_lambda(y, Lambdas_lambda(z, Lambdas_lambda(w, rest)))) -> [], [ x; y; z; w ], rest + | Lambdas_lambda(x, Lambdas_lambda(y, Lambdas_lambda(z, rest))) -> [], [ x; y; z ], rest + | Lambdas_lambda(x, Lambdas_lambda(y, rest)) -> [], [ x; y ], rest + | Lambdas_lambda(x, rest) -> [], [ x ], rest | Lambdas_forall _ -> let maxTyApps = 1 let tys, rest = stripTyLambdasUpTo maxTyApps lambdas @@ -175,13 +172,13 @@ let typ_Func cenv (dtys: ILType list) rty = let rec mkTyOfApps cenv apps = match apps with | Apps_tyapp _ -> cenv.mkILTyFuncTy - | Apps_app (dty, rest) -> mkILFuncTy cenv dty (mkTyOfApps cenv rest) + | Apps_app(dty, rest) -> mkILFuncTy cenv dty (mkTyOfApps cenv rest) | Apps_done rty -> rty let rec mkTyOfLambdas cenv lam = match lam with | Lambdas_return rty -> rty - | Lambdas_lambda (d, r) -> mkILFuncTy cenv d.Type (mkTyOfLambdas cenv r) + | Lambdas_lambda(d, r) -> mkILFuncTy cenv d.Type (mkTyOfLambdas cenv r) | Lambdas_forall _ -> cenv.mkILTyFuncTy // -------------------------------------------------------------------- @@ -241,11 +238,11 @@ let mkCallFunc cenv allocLocal numThisGenParams tailness apps = // the apps, and the loaders are used to load them back on. let rec unwind apps = match apps with - | Apps_tyapp (actual, rest) -> + | Apps_tyapp(actual, rest) -> let rest = instAppsAux varCount [ actual ] rest let storers, loaders = unwind rest [] :: storers, [] :: loaders - | Apps_app (arg, rest) -> + | Apps_app(arg, rest) -> let storers, loaders = unwind rest let argStorers, argLoaders = @@ -343,10 +340,10 @@ let mkCallFunc cenv allocLocal numThisGenParams tailness apps = let convReturnInstr ty instr = match instr with | I_ret -> [ I_box ty; I_ret ] - | I_call (_, mspec, varargs) -> [ I_call(Normalcall, mspec, varargs) ] - | I_callvirt (_, mspec, varargs) -> [ I_callvirt(Normalcall, mspec, varargs) ] - | I_callconstraint (callvirt, _, ty, mspec, varargs) -> [ I_callconstraint(callvirt, Normalcall, ty, mspec, varargs) ] - | I_calli (_, csig, varargs) -> [ I_calli(Normalcall, csig, varargs) ] + | I_call(_, mspec, varargs) -> [ I_call(Normalcall, mspec, varargs) ] + | I_callvirt(_, mspec, varargs) -> [ I_callvirt(Normalcall, mspec, varargs) ] + | I_callconstraint(callvirt, _, ty, mspec, varargs) -> [ I_callconstraint(callvirt, Normalcall, ty, mspec, varargs) ] + | I_calli(_, csig, varargs) -> [ I_calli(Normalcall, csig, varargs) ] | _ -> [ instr ] let convILMethodBody (thisClo, boxReturnTy) (il: ILMethodBody) = @@ -425,7 +422,7 @@ let rec convIlxClosureDef cenv encl (td: ILTypeDef) clo = let nowCloRef = IlxClosureRef(nowTypeRef, clo.cloStructure, nowFields) let nowCloSpec = mkILFormalCloRef td.GenericParams nowCloRef clo.cloUseStaticField let nowMethods = List.map (convMethodDef (Some nowCloSpec)) (td.Methods.AsList()) - let ilCloCode = Lazy.force clo.cloCode + let ilCloCode = clo.cloCode.Value let cloDebugRange = ilCloCode.DebugRange let cloImports = ilCloCode.DebugImports @@ -433,7 +430,7 @@ let rec convIlxClosureDef cenv encl (td: ILTypeDef) clo = // Adjust all the argument and environment accesses let rewriteCodeToAccessArgsFromEnv laterCloSpec (argToFreeVarMap: (int * IlxClosureFreeVar) list) = - let il = Lazy.force clo.cloCode + let il = clo.cloCode.Value let numLocals = il.Locals.Length let rewriteInstrToAccessArgsFromEnv instr = @@ -546,8 +543,7 @@ let rec convIlxClosureDef cenv encl (td: ILTypeDef) clo = // CASE 1b. Build a type application. let boxReturnTy = Some nowReturnTy (* box prior to all I_ret *) - let convil = - convILMethodBody (Some nowCloSpec, boxReturnTy) (Lazy.force clo.cloCode) + let convil = convILMethodBody (Some nowCloSpec, boxReturnTy) clo.cloCode.Value let nowApplyMethDef = mkILGenericVirtualMethod ( @@ -684,7 +680,7 @@ let rec convIlxClosureDef cenv encl (td: ILTypeDef) clo = let nowEnvParentClass = typ_Func cenv (typesOfILParams nowParams) nowReturnTy let cloTypeDef = - let convil = convILMethodBody (Some nowCloSpec, None) (Lazy.force clo.cloCode) + let convil = convILMethodBody (Some nowCloSpec, None) clo.cloCode.Value let nowApplyMethDef = mkILNonGenericVirtualInstanceMethod ( @@ -739,7 +735,7 @@ let rec convIlxClosureDef cenv encl (td: ILTypeDef) clo = let cloCodeR = match td.Extends with | None -> (mkILNonGenericEmptyCtor (cenv.ilg.typ_Object, None, cloImports)).MethodBody - | Some _ -> convILMethodBody (Some nowCloSpec, None) (Lazy.force clo.cloCode) + | Some _ -> convILMethodBody (Some nowCloSpec, None) clo.cloCode.Value let ctorMethodDef = let flds = (mkILCloFldSpecs cenv nowFields) diff --git a/src/fcs-fable/src/Compiler/CodeGen/EraseUnions.fs b/src/fcs-fable/src/Compiler/CodeGen/EraseUnions.fs index d00c45f2df..e21f76b307 100644 --- a/src/fcs-fable/src/Compiler/CodeGen/EraseUnions.fs +++ b/src/fcs-fable/src/Compiler/CodeGen/EraseUnions.fs @@ -8,6 +8,7 @@ open FSharp.Compiler.IlxGenSupport open System.Collections.Generic open System.Reflection open Internal.Utilities.Library +open FSharp.Compiler.Features open FSharp.Compiler.TcGlobals open FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.AbstractIL.ILX.Types @@ -271,8 +272,8 @@ let mkRuntimeTypeDiscriminateThen ilg avoidHelpers cuspec alt altName altTy afte let useHelper = doesRuntimeTypeDiscriminateUseHelper avoidHelpers cuspec alt match after with - | I_brcmp (BI_brfalse, _) - | I_brcmp (BI_brtrue, _) when not useHelper -> [ I_isinst altTy; after ] + | I_brcmp(BI_brfalse, _) + | I_brcmp(BI_brtrue, _) when not useHelper -> [ I_isinst altTy; after ] | _ -> mkRuntimeTypeDiscriminate ilg avoidHelpers cuspec alt altName altTy @ [ after ] let mkGetTagFromField ilg cuspec baseTy = @@ -327,8 +328,8 @@ let mkGetTag ilg (cuspec: IlxUnionSpec) = let mkCeqThen after = match after with - | I_brcmp (BI_brfalse, a) -> [ I_brcmp(BI_bne_un, a) ] - | I_brcmp (BI_brtrue, a) -> [ I_brcmp(BI_beq, a) ] + | I_brcmp(BI_brfalse, a) -> [ I_brcmp(BI_bne_un, a) ] + | I_brcmp(BI_brtrue, a) -> [ I_brcmp(BI_beq, a) ] | _ -> [ AI_ceq; after ] let mkTagDiscriminate ilg cuspec _baseTy cidx = @@ -751,6 +752,53 @@ let convAlternativeDef // within FSharp.Core.dll on fresh unpublished cons cells. let isTotallyImmutable = (cud.HasHelpers <> SpecialFSharpListHelpers) + let makeNonNullaryMakerMethod () = + let locals, ilInstrs = + if repr.RepresentAlternativeAsStructValue info then + let local = mkILLocal baseTy None + let ldloca = I_ldloca(0us) + + let ilInstrs = + [ + ldloca + ILInstr.I_initobj baseTy + if (repr.DiscriminationTechnique info) = IntegerTag && num <> 0 then + ldloca + mkLdcInt32 num + mkSetTagToField g.ilg cuspec baseTy + for i in 0 .. fields.Length - 1 do + ldloca + mkLdarg (uint16 i) + mkNormalStfld (mkILFieldSpecInTy (baseTy, fields[i].LowerName, fields[i].Type)) + mkLdloc 0us + ] + + [ local ], ilInstrs + else + let ilInstrs = + [ + for i in 0 .. fields.Length - 1 do + mkLdarg (uint16 i) + yield! convNewDataInstrInternal g.ilg cuspec num + ] + + [], ilInstrs + + let mdef = + mkILNonGenericStaticMethod ( + mkMakerName cuspec altName, + cud.HelpersAccessibility, + fields + |> Array.map (fun fd -> mkILParamNamed (fd.LowerName, fd.Type)) + |> Array.toList, + mkILReturn baseTy, + mkMethodBody (true, locals, fields.Length + locals.Length, nonBranchingInstrsToCode ilInstrs, attr, imports) + ) + |> addMethodGeneratedAttrs + |> addAltAttribs + + mdef + let altUniqObjMeths = // This method is only generated if helpers are not available. It fetches the unique object for the alternative @@ -796,7 +844,12 @@ let convAlternativeDef | SpecialFSharpListHelpers -> let baseTesterMeths, baseTesterProps = - if cud.UnionCases.Length <= 1 then + if + g.langVersion.SupportsFeature LanguageFeature.UnionIsPropertiesVisible + && cud.HasHelpers = AllHelpers + then + [], [] + elif cud.UnionCases.Length <= 1 then [], [] elif repr.RepresentOneAlternativeAsNull info then [], [] @@ -885,54 +938,13 @@ let convAlternativeDef [ nullaryMeth ], [ nullaryProp ] else - let locals, ilInstrs = - if repr.RepresentAlternativeAsStructValue info then - let local = mkILLocal baseTy None - let ldloca = I_ldloca(0us) - - let ilInstrs = - [ - ldloca - ILInstr.I_initobj baseTy - if (repr.DiscriminationTechnique info) = IntegerTag && num <> 0 then - ldloca - mkLdcInt32 num - mkSetTagToField g.ilg cuspec baseTy - for i in 0 .. fields.Length - 1 do - ldloca - mkLdarg (uint16 i) - mkNormalStfld (mkILFieldSpecInTy (baseTy, fields[i].LowerName, fields[i].Type)) - mkLdloc 0us - ] - - [ local ], ilInstrs - else - let ilInstrs = - [ - for i in 0 .. fields.Length - 1 do - mkLdarg (uint16 i) - yield! convNewDataInstrInternal g.ilg cuspec num - ] - - [], ilInstrs - - let mdef = - mkILNonGenericStaticMethod ( - mkMakerName cuspec altName, - cud.HelpersAccessibility, - fields - |> Array.map (fun fd -> mkILParamNamed (fd.LowerName, fd.Type)) - |> Array.toList, - mkILReturn baseTy, - mkMethodBody (true, locals, fields.Length + locals.Length, nonBranchingInstrsToCode ilInstrs, attr, imports) - ) - |> addMethodGeneratedAttrs - |> addAltAttribs - - [ mdef ], [] + [ makeNonNullaryMakerMethod () ], [] (baseMakerMeths @ baseTesterMeths), (baseMakerProps @ baseTesterProps) + | NoHelpers when not (alt.IsNullary) && cuspecRepr.RepresentAlternativeAsStructValue(cuspec) -> + // For non-nullary struct DUs, maker method is used to create their values. + [ makeNonNullaryMakerMethod () ], [] | NoHelpers -> [], [] let typeDefs, altDebugTypeDefs, altNullaryFields = @@ -1009,8 +1021,9 @@ let convAlternativeDef let instrs = [ mkLdarg0 - (if td.IsStruct then mkNormalLdflda else mkNormalLdfld) - (mkILFieldSpecInTy (debugProxyTy, debugProxyFieldName, altTy)) + (if td.IsStruct then mkNormalLdflda else mkNormalLdfld) ( + mkILFieldSpecInTy (debugProxyTy, debugProxyFieldName, altTy) + ) mkNormalLdfld (mkILFieldSpecInTy (altTy, fldName, fldTy)) ] |> nonBranchingInstrsToCode @@ -1225,6 +1238,8 @@ let mkClassUnionDef |> Array.tryFindIndex (fun t -> t.IsNullary) |> Option.defaultValue -1 + let fieldsEmitted = new HashSet<_>() + for cidx, alt in Array.indexed cud.UnionCases do if repr.RepresentAlternativeAsFreshInstancesOfRootClass(info, alt) @@ -1261,6 +1276,12 @@ let mkClassUnionDef |> addMethodGeneratedAttrs ] + let fieldsToBeAddedIntoType = + alt.FieldDefs + |> Array.filter (fun f -> fieldsEmitted.Add(struct (f.LowerName, f.Type))) + + let fields = fieldsToBeAddedIntoType |> Array.map mkUnionCaseFieldId |> Array.toList + let props, meths = mkMethodsAndPropertiesForFields (addMethodGeneratedAttrs, addPropertyGeneratedAttrs) @@ -1269,7 +1290,7 @@ let mkClassUnionDef cud.DebugImports cud.HasHelpers baseTy - alt.FieldDefs + fieldsToBeAddedIntoType yield (fields, (ctor @ meths), props) ] @@ -1450,7 +1471,9 @@ let mkClassUnionDef nestedTypes = mkILTypeDefs ( Option.toList enumTypeDef - @ altTypeDefs @ altDebugTypeDefs @ td.NestedTypes.AsList() + @ altTypeDefs + @ altDebugTypeDefs + @ td.NestedTypes.AsList() ), extends = (match td.Extends with @@ -1459,13 +1482,17 @@ let mkClassUnionDef methods = mkILMethods ( ctorMeths - @ baseMethsFromAlt @ selfMeths @ tagMeths @ altUniqObjMeths @ existingMeths + @ baseMethsFromAlt + @ selfMeths + @ tagMeths + @ altUniqObjMeths + @ existingMeths ), fields = mkILFields ( selfAndTagFields @ List.map (fun (_, _, _, _, fdef, _) -> fdef) altNullaryFields - @ td.Fields.AsList() + @ td.Fields.AsList() ), properties = mkILProperties (tagProps @ basePropsFromAlt @ selfProps @ existingProps) ) diff --git a/src/fcs-fable/src/Compiler/CodeGen/IlxGen.fs b/src/fcs-fable/src/Compiler/CodeGen/IlxGen.fs index 69868fe566..b7492a6836 100644 --- a/src/fcs-fable/src/Compiler/CodeGen/IlxGen.fs +++ b/src/fcs-fable/src/Compiler/CodeGen/IlxGen.fs @@ -132,7 +132,7 @@ let ChooseFreeVarNames takenNames ts = let rec IsILTypeByref inp = match inp with | ILType.Byref _ -> true - | ILType.Modified (_, _, nestedTy) -> IsILTypeByref nestedTy + | ILType.Modified(_, _, nestedTy) -> IsILTypeByref nestedTy | _ -> false let mainMethName = CompilerGeneratedName "main" @@ -142,37 +142,37 @@ type AttributeDecoder(namedArgs) = let nameMap = namedArgs - |> List.map (fun (AttribNamedArg (s, _, _, c)) -> s, c) + |> List.map (fun (AttribNamedArg(s, _, _, c)) -> s, c) |> NameMap.ofList let findConst x = match NameMap.tryFind x nameMap with - | Some (AttribExpr (_, Expr.Const (c, _, _))) -> Some c + | Some(AttribExpr(_, Expr.Const(c, _, _))) -> Some c | _ -> None let findTyconRef x = match NameMap.tryFind x nameMap with - | Some (AttribExpr (_, Expr.App (_, _, [ TType_app (tcref, _, _) ], _, _))) -> Some tcref + | Some(AttribExpr(_, Expr.App(_, _, [ TType_app(tcref, _, _) ], _, _))) -> Some tcref | _ -> None member _.FindInt16 x dflt = match findConst x with - | Some (Const.Int16 x) -> x + | Some(Const.Int16 x) -> x | _ -> dflt member _.FindInt32 x dflt = match findConst x with - | Some (Const.Int32 x) -> x + | Some(Const.Int32 x) -> x | _ -> dflt member _.FindBool x dflt = match findConst x with - | Some (Const.Bool x) -> x + | Some(Const.Bool x) -> x | _ -> dflt member _.FindString x dflt = match findConst x with - | Some (Const.String x) -> x + | Some(Const.String x) -> x | _ -> dflt member _.FindTypeName x dflt = @@ -413,7 +413,7 @@ let CompLocForSubModuleOrNamespace cloc (submod: ModuleOrNamespace) = Namespace = Some(mkTopName cloc.Namespace n) } -let CompLocForFixedPath fragName qname (CompPath (sref, cpath)) = +let CompLocForFixedPath fragName qname (CompPath(sref, cpath)) = let ns, t = cpath |> List.takeUntil (fun (_, mkind) -> @@ -608,7 +608,7 @@ and GenTyAppAux cenv m tyenv repr tinst = let ilTypeInst = GenTypeArgsAux cenv m tyenv tinst let ty = instILType ilTypeInst ty ty - | CompiledTypeRepr.ILAsmNamed (tref, boxity, ilTypeOpt) -> GenILTyAppAux cenv m tyenv (tref, boxity, ilTypeOpt) tinst + | CompiledTypeRepr.ILAsmNamed(tref, boxity, ilTypeOpt) -> GenILTyAppAux cenv m tyenv (tref, boxity, ilTypeOpt) tinst and GenILTyAppAux cenv m tyenv (tref, boxity, ilTypeOpt) tinst = match ilTypeOpt with @@ -621,7 +621,7 @@ and GenNamedTyAppAux (cenv: cenv) m (tyenv: TypeReprEnv) ptrsOK tcref tinst = let g = cenv.g match tyenv.TemplateReplacement with - | Some (tcref2, ilCloTyRef, cloFreeTyvars, _) when tyconRefEq g tcref tcref2 -> + | Some(tcref2, ilCloTyRef, cloFreeTyvars, _) when tyconRefEq g tcref tcref2 -> let cloInst = List.map mkTyparTy cloFreeTyvars let ilTypeInst = GenTypeArgsAux cenv m tyenv cloInst mkILValueTy ilCloTyRef ilTypeInst @@ -651,14 +651,14 @@ and GenTypeAux cenv m (tyenv: TypeReprEnv) voidOK ptrsOK ty = ignore voidOK #endif match stripTyEqnsAndMeasureEqns g ty with - | TType_app (tcref, tinst, _) -> GenNamedTyAppAux cenv m tyenv ptrsOK tcref tinst + | TType_app(tcref, tinst, _) -> GenNamedTyAppAux cenv m tyenv ptrsOK tcref tinst - | TType_tuple (tupInfo, args) -> GenTypeAux cenv m tyenv VoidNotOK ptrsOK (mkCompiledTupleTy g (evalTupInfoIsStruct tupInfo) args) + | TType_tuple(tupInfo, args) -> GenTypeAux cenv m tyenv VoidNotOK ptrsOK (mkCompiledTupleTy g (evalTupInfoIsStruct tupInfo) args) - | TType_fun (dty, returnTy, _) -> + | TType_fun(dty, returnTy, _) -> EraseClosures.mkILFuncTy cenv.ilxPubCloEnv (GenTypeArgAux cenv m tyenv dty) (GenTypeArgAux cenv m tyenv returnTy) - | TType_anon (anonInfo, tinst) -> + | TType_anon(anonInfo, tinst) -> let tref = anonInfo.ILTypeRef let boxity = @@ -669,11 +669,11 @@ and GenTypeAux cenv m (tyenv: TypeReprEnv) voidOK ptrsOK ty = GenILTyAppAux cenv m tyenv (tref, boxity, None) tinst - | TType_ucase (ucref, args) -> + | TType_ucase(ucref, args) -> let cuspec, idx = GenUnionCaseSpec cenv m tyenv ucref args EraseUnions.GetILTypeForAlternative cuspec idx - | TType_forall (tps, tau) -> + | TType_forall(tps, tau) -> let tps = DropErasedTypars tps if tps.IsEmpty then @@ -681,7 +681,7 @@ and GenTypeAux cenv m (tyenv: TypeReprEnv) voidOK ptrsOK ty = else EraseClosures.mkILTyFuncTy cenv.ilxPubCloEnv - | TType_var (tp, _) -> mkILTyvarTy tyenv[tp, m] + | TType_var(tp, _) -> mkILTyvarTy tyenv[tp, m] | TType_measure _ -> g.ilg.typ_Int32 @@ -720,7 +720,7 @@ and GenUnionRef (cenv: cenv) m (tcref: TyconRef) = match tcref.CompiledRepresentation with | CompiledTypeRepr.ILAsmOpen _ -> failwith "GenUnionRef m: unexpected ASM tyrep" - | CompiledTypeRepr.ILAsmNamed (tref, _, _) -> + | CompiledTypeRepr.ILAsmNamed(tref, _, _) -> let alternatives = tycon.UnionCasesArray |> Array.mapi (fun i cspec -> @@ -750,8 +750,8 @@ and ComputeUnionHasHelpers g (tcref: TyconRef) = SpecialFSharpOptionHelpers else match TryFindFSharpAttribute g g.attrib_DefaultAugmentationAttribute tcref.Attribs with - | Some (Attrib (_, _, [ AttribBoolArg b ], _, _, _, _)) -> if b then AllHelpers else NoHelpers - | Some (Attrib (_, _, _, _, _, _, m)) -> + | Some(Attrib(_, _, [ AttribBoolArg b ], _, _, _, _)) -> if b then AllHelpers else NoHelpers + | Some(Attrib(_, _, _, _, _, _, m)) -> errorR (Error(FSComp.SR.ilDefaultAugmentationAttributeCouldNotBeDecoded (), m)) AllHelpers | _ -> AllHelpers (* not hiddenRepr *) @@ -839,7 +839,7 @@ let GenFieldSpecForStaticField (isInteractive, g, ilContainerTy, vspec: Val, nm, let GenRecdFieldRef m cenv (tyenv: TypeReprEnv) (rfref: RecdFieldRef) tyargs = match tyenv.TemplateReplacement with - | Some (tcref2, ilCloTyRef, cloFreeTyvars, templateTypeInst) when tyconRefEq cenv.g rfref.TyconRef tcref2 -> + | Some(tcref2, ilCloTyRef, cloFreeTyvars, templateTypeInst) when tyconRefEq cenv.g rfref.TyconRef tcref2 -> // Fixup references to the fields of a struct machine template // templateStructTy = ResumableStateMachine // templateTyconRef = ResumableStateMachine<'Data> @@ -1164,7 +1164,7 @@ and IlxGenEnv = imports: ILDebugImports option /// All values in scope - valsInScope: ValMap> + valsInScope: ValMap> /// All witnesses in scope and their mapping to storage for the witness value. witnessesInScope: TraitWitnessInfoHashMap @@ -1318,13 +1318,9 @@ let ComputeGenerateWitnesses (g: TcGlobals) eenv = && not eenv.suppressWitnesses let TryStorageForWitness (_g: TcGlobals) eenv (w: TraitWitnessInfo) = -#if FABLE_COMPILER - eenv.witnessesInScope.TryFind w -#else match eenv.witnessesInScope.TryGetValue w with | true, storage -> Some storage | _ -> None -#endif let IsValRefIsDllImport g (vref: ValRef) = vref.Attribs |> HasFSharpAttributeOpt g g.attrib_DllImportAttribute @@ -1626,7 +1622,8 @@ let rec AddStorageForNonLocalModuleOrNamespaceRef cenv g cloc acc (modref: Modul let acc = (acc, modul.ModuleOrNamespaceType.AllValsAndMembers) - ||> Seq.fold (fun acc v -> AddStorageForVal g (v, lazy (ComputeStorageForNonLocalVal cenv g cloc modref v)) acc) + ||> Seq.fold (fun acc v -> + AddStorageForVal g (v, InterruptibleLazy(fun _ -> ComputeStorageForNonLocalVal cenv g cloc modref v)) acc) acc @@ -1650,7 +1647,8 @@ let AddStorageForExternalCcu cenv g eenv (ccu: CcuThunk) = let eref = ERefNonLocalPreResolved ccu.Contents (mkNonLocalEntityRef ccu [||]) (eenv, ccu.Contents.ModuleOrNamespaceType.AllValsAndMembers) - ||> Seq.fold (fun acc v -> AddStorageForVal g (v, lazy (ComputeStorageForNonLocalVal cenv g cloc eref v)) acc) + ||> Seq.fold (fun acc v -> + AddStorageForVal g (v, InterruptibleLazy(fun _ -> ComputeStorageForNonLocalVal cenv g cloc eref v)) acc) eenv @@ -1736,7 +1734,7 @@ let AddDebugImportsToEnv (cenv: cenv) eenv (openDecls: OpenDeclaration list) = let rec AddBindingsForModuleOrNamespaceContents allocVal cloc eenv x = match x with - | TMDefRec (_isRec, _opens, tycons, mbinds, _) -> + | TMDefRec(_isRec, _opens, tycons, mbinds, _) -> // Virtual don't have 'let' bindings and must be added to the environment let eenv = List.foldBack (AddBindingsForTycon allocVal cloc) tycons eenv @@ -1744,7 +1742,7 @@ let rec AddBindingsForModuleOrNamespaceContents allocVal cloc eenv x = List.foldBack (AddBindingsForModuleOrNamespaceBinding allocVal cloc) mbinds eenv eenv - | TMDefLet (bind, _) -> allocVal cloc bind.Var eenv + | TMDefLet(bind, _) -> allocVal cloc bind.Var eenv | TMDefDo _ -> eenv | TMDefOpens _ -> eenv | TMDefs mdefs -> @@ -1755,7 +1753,7 @@ let rec AddBindingsForModuleOrNamespaceContents allocVal cloc eenv x = and AddBindingsForModuleOrNamespaceBinding allocVal cloc x eenv = match x with | ModuleOrNamespaceBinding.Binding bind -> allocVal cloc bind.Var eenv - | ModuleOrNamespaceBinding.Module (mspec, mdef) -> + | ModuleOrNamespaceBinding.Module(mspec, mdef) -> let cloc = if mspec.IsNamespace then cloc @@ -1786,7 +1784,7 @@ let AddIncrementalLocalAssemblyFragmentToIlxGenEnv (eenv, implFiles) ||> List.fold (fun eenv implFile -> - let (CheckedImplFile (qualifiedNameOfFile = qname; signature = signature; contents = contents)) = + let (CheckedImplFile(qualifiedNameOfFile = qname; signature = signature; contents = contents)) = implFile let cloc = @@ -1830,7 +1828,7 @@ let HashRangeSorted (ht: IEnumerable>) = #else let HashRangeSorted (ht: IDictionary<_, int * _>) = #endif - [ for KeyValue (_k, v) in ht -> v ] |> List.sortBy fst |> List.map snd + [ for KeyValue(_k, v) in ht -> v ] |> List.sortBy fst |> List.map snd let MergeOptions m o1 o2 = match o1, o2 with @@ -1900,7 +1898,7 @@ type TypeDefBuilder(tdef: ILTypeDef, tdefDiscards) = member _.AddMethodDef ilMethodDef = let discard = match tdefDiscards with - | Some (mdefDiscard, _) -> mdefDiscard ilMethodDef + | Some(mdefDiscard, _) -> mdefDiscard ilMethodDef | None -> false if not discard then @@ -1915,7 +1913,7 @@ type TypeDefBuilder(tdef: ILTypeDef, tdefDiscards) = member _.AddOrMergePropertyDef(pdef, m) = let discard = match tdefDiscards with - | Some (_, pdefDiscard) -> pdefDiscard pdef + | Some(_, pdefDiscard) -> pdefDiscard pdef | None -> false if not discard then @@ -2154,15 +2152,15 @@ type AnonTypeGenerationTable() = (mkAppTy g.system_GenericIEquatable_tcref [ ty ], true, m) ] - let vspec1, vspec2 = AugmentWithHashCompare.MakeValsForEqualsAugmentation g tcref + let vspec1, vspec2 = AugmentTypeDefinitions.MakeValsForEqualsAugmentation g tcref let evspec1, evspec2, evspec3 = - AugmentWithHashCompare.MakeValsForEqualityWithComparerAugmentation g tcref + AugmentTypeDefinitions.MakeValsForEqualityWithComparerAugmentation g tcref - let cvspec1, cvspec2 = AugmentWithHashCompare.MakeValsForCompareAugmentation g tcref + let cvspec1, cvspec2 = AugmentTypeDefinitions.MakeValsForCompareAugmentation g tcref let cvspec3 = - AugmentWithHashCompare.MakeValsForCompareWithComparerAugmentation g tcref + AugmentTypeDefinitions.MakeValsForCompareWithComparerAugmentation g tcref tcaug.SetCompare(mkLocalValRef cvspec1, mkLocalValRef cvspec2) tcaug.SetCompareWith(mkLocalValRef cvspec3) @@ -2205,15 +2203,15 @@ type AnonTypeGenerationTable() = let extraBindings = [| - yield! AugmentWithHashCompare.MakeBindingsForCompareAugmentation g tycon - yield! AugmentWithHashCompare.MakeBindingsForCompareWithComparerAugmentation g tycon - yield! AugmentWithHashCompare.MakeBindingsForEqualityWithComparerAugmentation g tycon - yield! AugmentWithHashCompare.MakeBindingsForEqualsAugmentation g tycon + yield! AugmentTypeDefinitions.MakeBindingsForCompareAugmentation g tycon + yield! AugmentTypeDefinitions.MakeBindingsForCompareWithComparerAugmentation g tycon + yield! AugmentTypeDefinitions.MakeBindingsForEqualityWithComparerAugmentation g tycon + yield! AugmentTypeDefinitions.MakeBindingsForEqualsAugmentation g tycon |] let optimizedExtraBindings = extraBindings - |> Array.map (fun (TBind (a, b, c)) -> + |> Array.map (fun (TBind(a, b, c)) -> // Disable method splitting for bindings related to anonymous records TBind(a, cenv.optimizeDuringCodeGen true b, c)) |> Array.rev @@ -2818,7 +2816,7 @@ let BindingEmitsNoCode g (b: Binding) = IsFSharpValCompiledAsMethod g b.Var /// /// Returns (useWholeExprRange, sequencePointForBind, sequencePointGenerationFlagForRhsOfBind) let ComputeDebugPointForBinding g bind = - let (TBind (_, e, spBind)) = bind + let (TBind(_, e, spBind)) = bind if BindingEmitsNoCode g bind then false, None @@ -2849,7 +2847,7 @@ and GenExprPreSteps (cenv: cenv) (cgbuf: CodeGenBuffer) eenv expr sequel = // Check for the '__debugPoint" construct for inlined code match expr with - | Expr.Sequential ((DebugPointExpr g debugPointName) as dpExpr, codeExpr, NormalSeq, m) -> + | Expr.Sequential((DebugPointExpr g debugPointName) as dpExpr, codeExpr, NormalSeq, m) -> match cenv.namedDebugPointsForInlinedCode.TryGetValue({ Range = m; Name = debugPointName }) with | false, _ when debugPointName = "" -> CG.EmitDebugPoint cgbuf m | false, _ -> @@ -2907,7 +2905,7 @@ and GenExprPreSteps (cenv: cenv) (cgbuf: CodeGenBuffer) eenv expr sequel = checkLanguageFeatureError cenv.g.langVersion LanguageFeature.ResumableStateMachines expr.Range GenStructStateMachine cenv cgbuf eenv res sequel true - | LoweredStateMachineResult.UseAlternative (msg, altExpr) -> + | LoweredStateMachineResult.UseAlternative(msg, altExpr) -> // When prepping to generate a state machine, we can remove any trace of the template struct // type for the internal state of any enclosing state machine, as they do not interact. This // is important if the nested state machine generates dynamic code (LoweredStateMachineResult.UseAlternative). @@ -2947,18 +2945,18 @@ and GenExprAux (cenv: cenv) (cgbuf: CodeGenBuffer) eenv expr (sequel: sequel) = | LinearOpExpr _ | Expr.Match _ -> GenLinearExpr cenv cgbuf eenv expr sequel false id |> ignore - | Expr.DebugPoint (DebugPointAtLeafExpr.Yes m, innerExpr) -> + | Expr.DebugPoint(DebugPointAtLeafExpr.Yes m, innerExpr) -> CG.EmitDebugPoint cgbuf m GenExpr cenv cgbuf eenv innerExpr sequel - | Expr.Const (c, m, ty) -> GenConstant cenv cgbuf eenv (c, m, ty) sequel + | Expr.Const(c, m, ty) -> GenConstant cenv cgbuf eenv (c, m, ty) sequel - | Expr.LetRec (binds, body, m, _) -> GenLetRec cenv cgbuf eenv (binds, body, m) sequel + | Expr.LetRec(binds, body, m, _) -> GenLetRec cenv cgbuf eenv (binds, body, m) sequel | Expr.Lambda _ | Expr.TyLambda _ -> GenLambda cenv cgbuf eenv false [] expr sequel - | Expr.App (Expr.Val (vref, _, m) as v, _, tyargs, [], _) when + | Expr.App(Expr.Val(vref, _, m) as v, _, tyargs, [], _) when List.forall (isMeasureTy g) tyargs && ( // inline only values that are stored in local variables @@ -2969,46 +2967,45 @@ and GenExprAux (cenv: cenv) (cgbuf: CodeGenBuffer) eenv expr (sequel: sequel) = // application of local type functions with type parameters = measure types and body = local value - inline the body GenExpr cenv cgbuf eenv v sequel - | Expr.App (f, fty, tyargs, curriedArgs, m) -> GenApp cenv cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel + | Expr.App(f, fty, tyargs, curriedArgs, m) -> GenApp cenv cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel - | Expr.Val (v, _, m) -> GenGetVal cenv cgbuf eenv (v, m) sequel + | Expr.Val(v, _, m) -> GenGetVal cenv cgbuf eenv (v, m) sequel - | Expr.Op (op, tyargs, args, m) -> + | Expr.Op(op, tyargs, args, m) -> match op, args, tyargs with | TOp.ExnConstr c, _, _ -> GenAllocExn cenv cgbuf eenv (c, args, m) sequel | TOp.UnionCase c, _, _ -> GenAllocUnionCase cenv cgbuf eenv (c, tyargs, args, m) sequel - | TOp.Recd (isCtor, tcref), _, _ -> GenAllocRecd cenv cgbuf eenv isCtor (tcref, tyargs, args, m) sequel + | TOp.Recd(isCtor, tcref), _, _ -> GenAllocRecd cenv cgbuf eenv isCtor (tcref, tyargs, args, m) sequel | TOp.AnonRecd anonInfo, _, _ -> GenAllocAnonRecd cenv cgbuf eenv (anonInfo, tyargs, args, m) sequel - | TOp.AnonRecdGet (anonInfo, n), [ e ], _ -> GenGetAnonRecdField cenv cgbuf eenv (anonInfo, e, tyargs, n, m) sequel - | TOp.TupleFieldGet (tupInfo, n), [ e ], _ -> GenGetTupleField cenv cgbuf eenv (tupInfo, e, tyargs, n, m) sequel - | TOp.ExnFieldGet (ecref, n), [ e ], _ -> GenGetExnField cenv cgbuf eenv (e, ecref, n, m) sequel - | TOp.UnionCaseFieldGet (ucref, n), [ e ], _ -> GenGetUnionCaseField cenv cgbuf eenv (e, ucref, tyargs, n, m) sequel - | TOp.UnionCaseFieldGetAddr (ucref, n, _readonly), [ e ], _ -> + | TOp.AnonRecdGet(anonInfo, n), [ e ], _ -> GenGetAnonRecdField cenv cgbuf eenv (anonInfo, e, tyargs, n, m) sequel + | TOp.TupleFieldGet(tupInfo, n), [ e ], _ -> GenGetTupleField cenv cgbuf eenv (tupInfo, e, tyargs, n, m) sequel + | TOp.ExnFieldGet(ecref, n), [ e ], _ -> GenGetExnField cenv cgbuf eenv (e, ecref, n, m) sequel + | TOp.UnionCaseFieldGet(ucref, n), [ e ], _ -> GenGetUnionCaseField cenv cgbuf eenv (e, ucref, tyargs, n, m) sequel + | TOp.UnionCaseFieldGetAddr(ucref, n, _readonly), [ e ], _ -> GenGetUnionCaseFieldAddr cenv cgbuf eenv (e, ucref, tyargs, n, m) sequel | TOp.UnionCaseTagGet ucref, [ e ], _ -> GenGetUnionCaseTag cenv cgbuf eenv (e, ucref, tyargs, m) sequel | TOp.UnionCaseProof ucref, [ e ], _ -> GenUnionCaseProof cenv cgbuf eenv (e, ucref, tyargs, m) sequel - | TOp.ExnFieldSet (ecref, n), [ e; e2 ], _ -> GenSetExnField cenv cgbuf eenv (e, ecref, n, e2, m) sequel - | TOp.UnionCaseFieldSet (ucref, n), [ e; e2 ], _ -> GenSetUnionCaseField cenv cgbuf eenv (e, ucref, tyargs, n, e2, m) sequel + | TOp.ExnFieldSet(ecref, n), [ e; e2 ], _ -> GenSetExnField cenv cgbuf eenv (e, ecref, n, e2, m) sequel + | TOp.UnionCaseFieldSet(ucref, n), [ e; e2 ], _ -> GenSetUnionCaseField cenv cgbuf eenv (e, ucref, tyargs, n, e2, m) sequel | TOp.ValFieldGet f, [ e ], _ -> GenGetRecdField cenv cgbuf eenv (e, f, tyargs, m) sequel | TOp.ValFieldGet f, [], _ -> GenGetStaticField cenv cgbuf eenv (f, tyargs, m) sequel - | TOp.ValFieldGetAddr (f, _readonly), [ e ], _ -> GenGetRecdFieldAddr cenv cgbuf eenv (e, f, tyargs, m) sequel - | TOp.ValFieldGetAddr (f, _readonly), [], _ -> GenGetStaticFieldAddr cenv cgbuf eenv (f, tyargs, m) sequel + | TOp.ValFieldGetAddr(f, _readonly), [ e ], _ -> GenGetRecdFieldAddr cenv cgbuf eenv (e, f, tyargs, m) sequel + | TOp.ValFieldGetAddr(f, _readonly), [], _ -> GenGetStaticFieldAddr cenv cgbuf eenv (f, tyargs, m) sequel | TOp.ValFieldSet f, [ e1; e2 ], _ -> GenSetRecdField cenv cgbuf eenv (e1, f, tyargs, e2, m) sequel | TOp.ValFieldSet f, [ e2 ], _ -> GenSetStaticField cenv cgbuf eenv (f, tyargs, e2, m) sequel | TOp.Tuple tupInfo, _, _ -> GenAllocTuple cenv cgbuf eenv (tupInfo, args, tyargs, m) sequel - | TOp.ILAsm (instrs, retTypes), _, _ -> GenAsmCode cenv cgbuf eenv (instrs, tyargs, args, retTypes, m) sequel - | TOp.While (sp, _), [ Expr.Lambda (_, _, _, [ _ ], e1, _, _); Expr.Lambda (_, _, _, [ _ ], e2, _, _) ], [] -> + | TOp.ILAsm(instrs, retTypes), _, _ -> GenAsmCode cenv cgbuf eenv (instrs, tyargs, args, retTypes, m) sequel + | TOp.While(sp, _), [ Expr.Lambda(_, _, _, [ _ ], e1, _, _); Expr.Lambda(_, _, _, [ _ ], e2, _, _) ], [] -> GenWhileLoop cenv cgbuf eenv (sp, e1, e2, m) sequel - | TOp.IntegerForLoop (spFor, spTo, dir), - [ Expr.Lambda (_, _, _, [ _ ], e1, _, _); Expr.Lambda (_, _, _, [ _ ], e2, _, _); Expr.Lambda (_, _, _, [ v ], e3, _, _) ], + | TOp.IntegerForLoop(spFor, spTo, dir), + [ Expr.Lambda(_, _, _, [ _ ], e1, _, _); Expr.Lambda(_, _, _, [ _ ], e2, _, _); Expr.Lambda(_, _, _, [ v ], e3, _, _) ], [] -> GenIntegerForLoop cenv cgbuf eenv (spFor, spTo, v, e1, dir, e2, e3, m) sequel - | TOp.TryFinally (spTry, spFinally), - [ Expr.Lambda (_, _, _, [ _ ], e1, _, _); Expr.Lambda (_, _, _, [ _ ], e2, _, _) ], - [ resTy ] -> GenTryFinally cenv cgbuf eenv (e1, e2, m, resTy, spTry, spFinally) sequel - | TOp.TryWith (spTry, spWith), - [ Expr.Lambda (_, _, _, [ _ ], e1, _, _); Expr.Lambda (_, _, _, [ vf ], ef, _, _); Expr.Lambda (_, _, _, [ vh ], eh, _, _) ], + | TOp.TryFinally(spTry, spFinally), [ Expr.Lambda(_, _, _, [ _ ], e1, _, _); Expr.Lambda(_, _, _, [ _ ], e2, _, _) ], [ resTy ] -> + GenTryFinally cenv cgbuf eenv (e1, e2, m, resTy, spTry, spFinally) sequel + | TOp.TryWith(spTry, spWith), + [ Expr.Lambda(_, _, _, [ _ ], e1, _, _); Expr.Lambda(_, _, _, [ vf ], ef, _, _); Expr.Lambda(_, _, _, [ vh ], eh, _, _) ], [ resTy ] -> GenTryWith cenv cgbuf eenv (e1, vf, ef, vh, eh, m, resTy, spTry, spWith) sequel - | TOp.ILCall (isVirtual, _, isStruct, isCtor, valUseFlag, _, noTailCall, ilMethRef, enclTypeInst, methInst, returnTypes), + | TOp.ILCall(isVirtual, _, isStruct, isCtor, valUseFlag, _, noTailCall, ilMethRef, enclTypeInst, methInst, returnTypes), args, [] -> GenILCall @@ -3021,10 +3018,10 @@ and GenExprAux (cenv: cenv) (cgbuf: CodeGenBuffer) eenv expr (sequel: sequel) = | TOp.Coerce, [ e ], [ tgtTy; srcTy ] -> GenCoerce cenv cgbuf eenv (e, tgtTy, m, srcTy) sequel | TOp.Reraise, [], [ retTy ] -> GenReraise cenv cgbuf eenv (retTy, m) sequel | TOp.TraitCall traitInfo, args, [] -> GenTraitCall cenv cgbuf eenv (traitInfo, args, m) expr sequel - | TOp.LValueOp (LSet, v), [ e ], [] -> GenSetVal cenv cgbuf eenv (v, e, m) sequel - | TOp.LValueOp (LByrefGet, v), [], [] -> GenGetByref cenv cgbuf eenv (v, m) sequel - | TOp.LValueOp (LByrefSet, v), [ e ], [] -> GenSetByref cenv cgbuf eenv (v, e, m) sequel - | TOp.LValueOp (LAddrOf _, v), [], [] -> GenGetValAddr cenv cgbuf eenv (v, m) sequel + | TOp.LValueOp(LSet, v), [ e ], [] -> GenSetVal cenv cgbuf eenv (v, e, m) sequel + | TOp.LValueOp(LByrefGet, v), [], [] -> GenGetByref cenv cgbuf eenv (v, m) sequel + | TOp.LValueOp(LByrefSet, v), [ e ], [] -> GenSetByref cenv cgbuf eenv (v, e, m) sequel + | TOp.LValueOp(LAddrOf _, v), [], [] -> GenGetValAddr cenv cgbuf eenv (v, m) sequel | TOp.Array, elems, [ elemTy ] -> GenNewArray cenv cgbuf eenv (elems, elemTy, m) sequel | TOp.Bytes bytes, [], [] -> if cenv.options.emitConstantArraysUsingStaticDataBlobs then @@ -3054,22 +3051,22 @@ and GenExprAux (cenv: cenv) (cgbuf: CodeGenBuffer) eenv expr (sequel: sequel) = GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel | _ -> error (InternalError("Unexpected operator node expression", expr.Range)) - | Expr.StaticOptimization (constraints, e2, e3, m) -> GenStaticOptimization cenv cgbuf eenv (constraints, e2, e3, m) sequel + | Expr.StaticOptimization(constraints, e2, e3, m) -> GenStaticOptimization cenv cgbuf eenv (constraints, e2, e3, m) sequel - | Expr.Obj (_, ty, _, _, [ meth ], [], m) when isDelegateTy g ty -> GenDelegateExpr cenv cgbuf eenv expr (meth, m) sequel + | Expr.Obj(_, ty, _, _, [ meth ], [], m) when isDelegateTy g ty -> GenDelegateExpr cenv cgbuf eenv expr (meth, m) sequel - | Expr.Obj (_, ty, basev, basecall, overrides, interfaceImpls, m) -> + | Expr.Obj(_, ty, basev, basecall, overrides, interfaceImpls, m) -> GenObjectExpr cenv cgbuf eenv expr (ty, basev, basecall, overrides, interfaceImpls, m) sequel - | Expr.Quote (ast, conv, _, m, ty) -> GenQuotation cenv cgbuf eenv (ast, conv, m, ty) sequel + | Expr.Quote(ast, conv, _, m, ty) -> GenQuotation cenv cgbuf eenv (ast, conv, m, ty) sequel - | Expr.WitnessArg (traitInfo, m) -> + | Expr.WitnessArg(traitInfo, m) -> GenWitnessArgFromTraitInfo cenv cgbuf eenv m traitInfo GenSequel cenv eenv.cloc cgbuf sequel | Expr.Link _ -> failwith "Unexpected reclink" - | Expr.TyChoose (_, _, m) -> error (InternalError("Unexpected Expr.TyChoose", m)) + | Expr.TyChoose(_, _, m) -> error (InternalError("Unexpected Expr.TyChoose", m)) and GenExprs cenv cgbuf eenv es = List.iter (fun e -> GenExpr cenv cgbuf eenv e Continue) es @@ -3102,7 +3099,9 @@ and DelayCodeGenMethodForExpr cenv mgbuf ((_, _, eenv, _, _, _, _) as args) = // Once this is lazily-evaluated later, it should not put things in queue. They would not be picked up by anyone. let newArgs = change3rdOutOf7 args { eenv with delayCodeGen = false } - let lazyMethodBody = lazy (CodeGenMethodForExpr cenv mgbuf newArgs) + let lazyMethodBody = + InterruptibleLazy(fun _ -> CodeGenMethodForExpr cenv mgbuf newArgs) + cenv.delayedGenMethods.Enqueue(fun () -> lazyMethodBody.Force() |> ignore) lazyMethodBody else @@ -3116,7 +3115,7 @@ and DelayCodeGenMethodForExpr cenv mgbuf ((_, _, eenv, _, _, _, _) as args) = /// not generating a 'unit' expression at all) and sequelAfterDiscard sequel = match sequel with - | LeaveHandler (isFinally, whereToSaveResultOpt, afterHandler, true) -> + | LeaveHandler(isFinally, whereToSaveResultOpt, afterHandler, true) -> // If we're not saving the result as we leave a handler and we're doing a discard // then we can just adjust the sequel to record the fact we've implicitly done a discard if isFinally || whereToSaveResultOpt.IsNone then @@ -3124,7 +3123,7 @@ and sequelAfterDiscard sequel = else None | DiscardThen sequel -> Some sequel - | EndLocalScope (sq, mark) -> sequelAfterDiscard sq |> Option.map (fun sq -> EndLocalScope(sq, mark)) + | EndLocalScope(sq, mark) -> sequelAfterDiscard sq |> Option.map (fun sq -> EndLocalScope(sq, mark)) | _ -> None and sequelIgnoringEndScopesAndDiscard sequel = @@ -3136,13 +3135,13 @@ and sequelIgnoringEndScopesAndDiscard sequel = and sequelIgnoreEndScopes sequel = match sequel with - | EndLocalScope (sq, _) -> sequelIgnoreEndScopes sq + | EndLocalScope(sq, _) -> sequelIgnoreEndScopes sq | sq -> sq (* commit any 'EndLocalScope' nodes in the sequel and return the residue *) and GenSequelEndScopes cgbuf sequel = match sequel with - | EndLocalScope (sq, m) -> + | EndLocalScope(sq, m) -> CG.SetMarkToHere cgbuf m GenSequelEndScopes cgbuf sq | _ -> () @@ -3154,8 +3153,8 @@ and StringOfSequel sequel = | ReturnVoid -> "ReturnVoid" | CmpThenBrOrContinue _ -> "CmpThenBrOrContinue" | Return -> "Return" - | EndLocalScope (sq, Mark k) -> "EndLocalScope(" + StringOfSequel sq + "," + formatCodeLabel k + ")" - | Br (Mark x) -> sprintf "Br L%s" (formatCodeLabel x) + | EndLocalScope(sq, Mark k) -> "EndLocalScope(" + StringOfSequel sq + "," + formatCodeLabel k + ")" + | Br(Mark x) -> sprintf "Br L%s" (formatCodeLabel x) | LeaveHandler _ -> "LeaveHandler" | EndFilter -> "EndFilter" @@ -3168,7 +3167,7 @@ and GenSequel cenv cloc cgbuf sequel = CG.EmitInstr cgbuf (pop 1) Push0 AI_pop GenSequel cenv cloc cgbuf sq | ReturnVoid -> CG.EmitInstr cgbuf (pop 0) Push0 I_ret - | CmpThenBrOrContinue (pops, bri) -> CG.EmitInstrs cgbuf pops Push0 bri + | CmpThenBrOrContinue(pops, bri) -> CG.EmitInstrs cgbuf pops Push0 bri | Return -> CG.EmitInstr cgbuf (pop 1) Push0 I_ret | EndLocalScope _ -> failwith "EndLocalScope unexpected" | Br x -> @@ -3181,14 +3180,14 @@ and GenSequel cenv cloc cgbuf sequel = CG.EmitInstr cgbuf (pop 0) Push0 (I_br x.CodeLabel) - | LeaveHandler (isFinally, whereToSaveResultOpt, afterHandler, hasResult) -> + | LeaveHandler(isFinally, whereToSaveResultOpt, afterHandler, hasResult) -> if hasResult then if isFinally then CG.EmitInstr cgbuf (pop 1) Push0 AI_pop else match whereToSaveResultOpt with | None -> CG.EmitInstr cgbuf (pop 1) Push0 AI_pop - | Some (whereToSaveResult, _) -> EmitSetLocal cgbuf whereToSaveResult + | Some(whereToSaveResult, _) -> EmitSetLocal cgbuf whereToSaveResult CG.EmitInstr cgbuf @@ -3350,7 +3349,7 @@ and GenLinearExpr cenv cgbuf eenv expr sequel preSteps (contf: FakeUnit -> FakeU let expr = stripExpr expr match expr with - | Expr.Sequential (e1, e2, specialSeqFlag, _) -> + | Expr.Sequential(e1, e2, specialSeqFlag, _) -> // Process the debug point and see if there's a replacement technique to process this expression if preSteps && GenExprPreSteps cenv cgbuf eenv expr sequel then contf Fake @@ -3366,7 +3365,7 @@ and GenLinearExpr cenv cgbuf eenv expr sequel preSteps (contf: FakeUnit -> FakeU // with tailcalls, so detect this case and throw the "then ()" away, having already // worked out "spExpr" up above. match e2 with - | Expr.Const (Const.Unit, _, _) -> GenExpr cenv cgbuf eenv e1 sequel + | Expr.Const(Const.Unit, _, _) -> GenExpr cenv cgbuf eenv e1 sequel | _ -> let g = cenv.g let isUnit = isUnitTy g (tyOfExpr g e1) @@ -3382,7 +3381,7 @@ and GenLinearExpr cenv cgbuf eenv expr sequel preSteps (contf: FakeUnit -> FakeU contf Fake - | Expr.Let (bind, body, _, _) -> + | Expr.Let(bind, body, _, _) -> // Process the debug point and see if there's a replacement technique to process this expression if preSteps && GenExprPreSteps cenv cgbuf eenv expr sequel then contf Fake @@ -3398,7 +3397,7 @@ and GenLinearExpr cenv cgbuf eenv expr sequel preSteps (contf: FakeUnit -> FakeU // Generate the body GenLinearExpr cenv cgbuf eenv body (EndLocalScope(sequel, endMark)) true contf - | Expr.Match (spBind, _exprm, tree, targets, m, ty) -> + | Expr.Match(spBind, _exprm, tree, targets, m, ty) -> // Process the debug point and see if there's a replacement technique to process this expression if preSteps && GenExprPreSteps cenv cgbuf eenv expr sequel then contf Fake @@ -3458,11 +3457,11 @@ and GenLinearExpr cenv cgbuf eenv expr sequel preSteps (contf: FakeUnit -> FakeU GenSequel cenv eenv.cloc cgbuf sequelAfterJoin Fake)) - | Expr.DebugPoint (DebugPointAtLeafExpr.Yes m, innerExpr) -> + | Expr.DebugPoint(DebugPointAtLeafExpr.Yes m, innerExpr) -> CG.EmitDebugPoint cgbuf m GenLinearExpr cenv cgbuf eenv innerExpr sequel true contf - | LinearOpExpr (TOp.UnionCase c, tyargs, argsFront, argLast, m) -> + | LinearOpExpr(TOp.UnionCase c, tyargs, argsFront, argLast, m) -> // Process the debug point and see if there's a replacement technique to process this expression if preSteps && GenExprPreSteps cenv cgbuf eenv expr sequel then contf Fake @@ -3600,7 +3599,7 @@ and GenNewArray cenv cgbuf eenv (elems: Expr list, elemTy, m) sequel = let test, write = match stripDebugPoints elemsArray[0] with - | Expr.Const (Const.Bool _, _, _) -> + | Expr.Const(Const.Bool _, _, _) -> (function | Const.Bool _ -> true | _ -> false), @@ -3608,7 +3607,7 @@ and GenNewArray cenv cgbuf eenv (elems: Expr list, elemTy, m) sequel = function | Const.Bool b -> buf.EmitBoolAsByte b | _ -> failwith "unreachable") - | Expr.Const (Const.Char _, _, _) -> + | Expr.Const(Const.Char _, _, _) -> (function | Const.Char _ -> true | _ -> false), @@ -3616,7 +3615,7 @@ and GenNewArray cenv cgbuf eenv (elems: Expr list, elemTy, m) sequel = function | Const.Char b -> buf.EmitInt32AsUInt16(int b) | _ -> failwith "unreachable") - | Expr.Const (Const.Byte _, _, _) -> + | Expr.Const(Const.Byte _, _, _) -> (function | Const.Byte _ -> true | _ -> false), @@ -3624,7 +3623,7 @@ and GenNewArray cenv cgbuf eenv (elems: Expr list, elemTy, m) sequel = function | Const.Byte b -> buf.EmitByte b | _ -> failwith "unreachable") - | Expr.Const (Const.UInt16 _, _, _) -> + | Expr.Const(Const.UInt16 _, _, _) -> (function | Const.UInt16 _ -> true | _ -> false), @@ -3632,7 +3631,7 @@ and GenNewArray cenv cgbuf eenv (elems: Expr list, elemTy, m) sequel = function | Const.UInt16 b -> buf.EmitUInt16 b | _ -> failwith "unreachable") - | Expr.Const (Const.UInt32 _, _, _) -> + | Expr.Const(Const.UInt32 _, _, _) -> (function | Const.UInt32 _ -> true | _ -> false), @@ -3640,7 +3639,7 @@ and GenNewArray cenv cgbuf eenv (elems: Expr list, elemTy, m) sequel = function | Const.UInt32 b -> buf.EmitInt32(int32 b) | _ -> failwith "unreachable") - | Expr.Const (Const.UInt64 _, _, _) -> + | Expr.Const(Const.UInt64 _, _, _) -> (function | Const.UInt64 _ -> true | _ -> false), @@ -3648,7 +3647,7 @@ and GenNewArray cenv cgbuf eenv (elems: Expr list, elemTy, m) sequel = function | Const.UInt64 b -> buf.EmitInt64(int64 b) | _ -> failwith "unreachable") - | Expr.Const (Const.SByte _, _, _) -> + | Expr.Const(Const.SByte _, _, _) -> (function | Const.SByte _ -> true | _ -> false), @@ -3656,7 +3655,7 @@ and GenNewArray cenv cgbuf eenv (elems: Expr list, elemTy, m) sequel = function | Const.SByte b -> buf.EmitByte(byte b) | _ -> failwith "unreachable") - | Expr.Const (Const.Int16 _, _, _) -> + | Expr.Const(Const.Int16 _, _, _) -> (function | Const.Int16 _ -> true | _ -> false), @@ -3664,7 +3663,7 @@ and GenNewArray cenv cgbuf eenv (elems: Expr list, elemTy, m) sequel = function | Const.Int16 b -> buf.EmitUInt16(uint16 b) | _ -> failwith "unreachable") - | Expr.Const (Const.Int32 _, _, _) -> + | Expr.Const(Const.Int32 _, _, _) -> (function | Const.Int32 _ -> true | _ -> false), @@ -3672,7 +3671,7 @@ and GenNewArray cenv cgbuf eenv (elems: Expr list, elemTy, m) sequel = function | Const.Int32 b -> buf.EmitInt32 b | _ -> failwith "unreachable") - | Expr.Const (Const.Int64 _, _, _) -> + | Expr.Const(Const.Int64 _, _, _) -> (function | Const.Int64 _ -> true | _ -> false), @@ -3688,14 +3687,14 @@ and GenNewArray cenv cgbuf eenv (elems: Expr list, elemTy, m) sequel = if elemsArray |> Array.forall (function - | Expr.Const (c, _, _) -> test c + | Expr.Const(c, _, _) -> test c | _ -> false) then let ilElemTy = GenType cenv m eenv.tyenv elemTy GenConstArray cenv cgbuf eenv ilElemTy elemsArray (fun buf -> function - | Expr.Const (c, _, _) -> write buf c + | Expr.Const(c, _, _) -> write buf c | _ -> failwith "unreachable") GenSequel cenv eenv.cloc cgbuf sequel @@ -4049,19 +4048,19 @@ and IsBranchTailcall (cenv: cenv) eenv (v: ValRef, tyargs, curriedArgs: _ list) let g = cenv.g match ListAssoc.tryFind g.valRefEq v eenv.innerVals with - | Some (kind, _) -> + | Some(kind, _) -> not v.IsConstructor && // when branch-calling methods we must have the right type parameters (match kind with | BranchCallClosure _ -> true - | BranchCallMethod (_, _, tps, _, _, _) -> (List.lengthsEqAndForall2 (fun ty tp -> typeEquiv g ty (mkTyparTy tp)) tyargs tps)) + | BranchCallMethod(_, _, tps, _, _, _) -> (List.lengthsEqAndForall2 (fun ty tp -> typeEquiv g ty (mkTyparTy tp)) tyargs tps)) && // must be exact #args, ignoring tupling - we untuple if needed below (let arityInfo = match kind with | BranchCallClosure arityInfo - | BranchCallMethod (arityInfo, _, _, _, _, _) -> arityInfo + | BranchCallMethod(arityInfo, _, _, _, _, _) -> arityInfo arityInfo.Length = curriedArgs.Length) && @@ -4077,7 +4076,7 @@ and GenApp (cenv: cenv) cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel = match (stripDebugPoints f, tyargs, curriedArgs) with // Look for tailcall to turn into branch - | Expr.Val (v, _, _), _, _ when IsBranchTailcall cenv eenv (v, tyargs, curriedArgs) sequel -> + | Expr.Val(v, _, _), _, _ when IsBranchTailcall cenv eenv (v, tyargs, curriedArgs) sequel -> let kind, mark = ListAssoc.find g.valRefEq v eenv.innerVals // already checked above in when guard // Generate the arguments for the direct tail call. @@ -4095,7 +4094,7 @@ and GenApp (cenv: cenv) cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel = for i = numArgs - 1 downto 0 do CG.EmitInstr cgbuf (pop 1) Push0 (I_starg(uint16 (cgbuf.PreallocatedArgCount + i))) - | BranchCallMethod (arityInfo, curriedArgInfos, _, numObjArgs, numWitnessArgs, numMethodArgs) -> + | BranchCallMethod(arityInfo, curriedArgInfos, _, numObjArgs, numWitnessArgs, numMethodArgs) -> assert (curriedArgInfos.Length = arityInfo.Length) assert (curriedArgInfos.Length = curriedArgs.Length) @@ -4132,14 +4131,14 @@ and GenApp (cenv: cenv) cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel = // PhysicalEquality becomes cheap reference equality once // a nominal type is known. We can't replace it for variable types since // a "ceq" instruction can't be applied to variable type values. - | Expr.Val (v, _, _), [ ty ], [ arg1; arg2 ] when (valRefEq g v g.reference_equality_inner_vref) && isAppTy g ty -> + | Expr.Val(v, _, _), [ ty ], [ arg1; arg2 ] when (valRefEq g v g.reference_equality_inner_vref) && isAppTy g ty -> GenExpr cenv cgbuf eenv arg1 Continue GenExpr cenv cgbuf eenv arg2 Continue CG.EmitInstr cgbuf (pop 2) (Push [ g.ilg.typ_Bool ]) AI_ceq GenSequel cenv eenv.cloc cgbuf sequel - | Expr.Val (v, _, m), _, _ when + | Expr.Val(v, _, m), _, _ when valRefEq g v g.cgh__resumeAt_vref || valRefEq g v g.cgh__resumableEntry_vref || valRefEq g v g.cgh__stateMachine_vref @@ -4151,38 +4150,38 @@ and GenApp (cenv: cenv) cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel = // Emit "methodhandleof" calls as ldtoken instructions // // The token for the "GenericMethodDefinition" is loaded - | Expr.Val (v, _, m), _, [ arg ] when valRefEq g v g.methodhandleof_vref -> + | Expr.Val(v, _, m), _, [ arg ] when valRefEq g v g.methodhandleof_vref -> let (|OptionalCoerce|) x = match stripDebugPoints x with - | Expr.Op (TOp.Coerce, _, [ arg ], _) -> arg + | Expr.Op(TOp.Coerce, _, [ arg ], _) -> arg | x -> x let (|OptionalTyapp|) x = match stripDebugPoints x with - | Expr.App (f, _, [ _ ], [], _) -> f + | Expr.App(f, _, [ _ ], [], _) -> f | x -> x match stripDebugPoints arg with // Generate ldtoken instruction for "methodhandleof(fun (a, b, c) -> f(a, b, c))" // where f is an F# function value or F# method - | Expr.Lambda (_, _, _, _, DebugPoints (Expr.App (OptionalCoerce (OptionalTyapp (Expr.Val (vref, _, _))), _, _, _, _), _), _, _) -> + | Expr.Lambda(_, _, _, _, DebugPoints(Expr.App(OptionalCoerce(OptionalTyapp(Expr.Val(vref, _, _))), _, _, _, _), _), _, _) -> let storage = StorageForValRef m vref eenv match storage with - | Method (_, _, mspec, _, _, _, _, _, _, _, _, _) -> + | Method(_, _, mspec, _, _, _, _, _, _, _, _, _) -> CG.EmitInstr cgbuf (pop 0) (Push [ g.iltyp_RuntimeMethodHandle ]) (I_ldtoken(ILToken.ILMethod mspec)) | _ -> errorR (Error(FSComp.SR.ilxgenUnexpectedArgumentToMethodHandleOfDuringCodegen (), m)) // Generate ldtoken instruction for "methodhandleof(fun (a, b, c) -> obj.M(a, b, c))" // where M is an IL method. - | Expr.Lambda (_, - _, - _, - _, - DebugPoints (Expr.Op (TOp.ILCall (_, _, isStruct, _, _, _, _, ilMethRef, enclTypeInst, methInst, _), _, _, _), _), - _, - _) -> + | Expr.Lambda(_, + _, + _, + _, + DebugPoints(Expr.Op(TOp.ILCall(_, _, isStruct, _, _, _, _, ilMethRef, enclTypeInst, methInst, _), _, _, _), _), + _, + _) -> let boxity = (if isStruct then AsValue else AsObject) @@ -4203,11 +4202,11 @@ and GenApp (cenv: cenv) cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel = GenSequel cenv eenv.cloc cgbuf sequel // Optimize calls to top methods when given "enough" arguments. - | Expr.Val (vref, valUseFlags, _), _, _ when + | Expr.Val(vref, valUseFlags, _), _, _ when (let storage = StorageForValRef m vref eenv match storage with - | Method (valReprInfo, vref, _, _, _, _, _, _, _, _, _, _) -> + | Method(valReprInfo, vref, _, _, _, _, _, _, _, _, _, _) -> (let tps, argTys, _, _ = GetValReprTypeInFSharpForm g valReprInfo vref.Type m tps.Length = tyargs.Length && argTys.Length <= curriedArgs.Length) | _ -> false) @@ -4216,7 +4215,7 @@ and GenApp (cenv: cenv) cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel = let storage = StorageForValRef m vref eenv match storage with - | Method (valReprInfo, vref, mspec, mspecW, _, ctps, mtps, curriedArgInfos, _, _, _, _) -> + | Method(valReprInfo, vref, mspec, mspecW, _, ctps, mtps, curriedArgInfos, _, _, _, _) -> let nowArgs, laterArgs = List.splitAt curriedArgInfos.Length curriedArgs @@ -4368,7 +4367,7 @@ and GenApp (cenv: cenv) cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel = //printfn "%d EXTRA ARGS IN TOP APP at %s" laterArgs.Length (stringOfRange m) whereSaved |> List.iter (function - | Choice1Of2 (ilTy, loc) -> EmitGetLocal cgbuf ilTy loc + | Choice1Of2(ilTy, loc) -> EmitGetLocal cgbuf ilTy loc | Choice2Of2 expr -> GenExpr cenv cgbuf eenv expr Continue) GenIndirectCall cenv cgbuf eenv (actualRetTy, [], laterArgs, m) sequel) @@ -4379,7 +4378,7 @@ and GenApp (cenv: cenv) cgbuf eenv (f, fty, tyargs, curriedArgs, m) sequel = // However, we know the type instantiation for the value. // In this case we can often generate a type-specific local expression for the value. // This reduces the number of dynamic type applications. - | Expr.Val (vref, _, _), _, _ -> GenGetValRefAndSequel cenv cgbuf eenv m vref (Some(tyargs, curriedArgs, m, sequel)) + | Expr.Val(vref, _, _), _, _ -> GenGetValRefAndSequel cenv cgbuf eenv m vref (Some(tyargs, curriedArgs, m, sequel)) | _ -> (* worst case: generate a first-class function value and call *) @@ -4472,7 +4471,7 @@ and FreeVarStorageForWitnessInfos (cenv: cenv) (eenv: IlxGenEnv) takenNames ilCl // `a` is an integer. and IsLocalErasedTyLambda eenv (v: Val) e = match e with - | Expr.TyLambda (_, tyargs, body, _, _) when + | Expr.TyLambda(_, tyargs, body, _, _) when tyargs |> List.forall (fun tp -> tp.IsErased) && (match StorageForVal v.Range v eenv with | Local _ -> true @@ -4497,7 +4496,7 @@ and IsNamedLocalTypeFuncVal g (v: Val) expr = and AddDirectTyparWitnessParams cenv eenv cloinfo m = let directTypars = match cloinfo.cloExpr with - | Expr.TyLambda (_, tvs, _, _, _) -> tvs + | Expr.TyLambda(_, tvs, _, _, _) -> tvs | _ -> [] let directWitnessInfos = @@ -4530,7 +4529,7 @@ and GenNamedLocalTyFuncCall cenv (cgbuf: CodeGenBuffer) eenv ty cloinfo tyargs m let directTypars = match cloinfo.cloExpr with - | Expr.TyLambda (_, tvs, _, _, _) -> tvs + | Expr.TyLambda(_, tvs, _, _, _) -> tvs | _ -> [] let eenvinner = AddTyparsToEnv directTypars eenvinner @@ -4542,7 +4541,7 @@ and GenNamedLocalTyFuncCall cenv (cgbuf: CodeGenBuffer) eenv ty cloinfo tyargs m ilDirectGenericParams, ilDirectWitnessParams, directWitnessInfos - if not (List.length ilDirectGenericParams = ilTyArgs.Length) then + if List.length ilDirectGenericParams <> ilTyArgs.Length then errorR (Error(FSComp.SR.ilIncorrectNumberOfTypeArguments (), m)) // Recover result (value or reference types) via unbox_any. @@ -4600,8 +4599,8 @@ and GenIndirectCall cenv cgbuf eenv (funcTy, tyargs, curriedArgs, m) sequel = let hasByrefArg = let rec check x = match x with - | Apps_tyapp (_, apps) -> check apps - | Apps_app (arg, apps) -> IsILTypeByref arg || check apps + | Apps_tyapp(_, apps) -> check apps + | Apps_app(arg, apps) -> IsILTypeByref arg || check apps | _ -> false check ilxClosureApps @@ -4687,33 +4686,33 @@ and GenTry cenv cgbuf eenv scopeMarks (e1, m, resultTy, spTry) = and eligibleForFilter (cenv: cenv) expr = let rec check expr = match expr with - | Expr.Let (TBind (_, be, _), body, _, _) -> check be && check body - | Expr.DebugPoint (_, expr) -> check expr - | Expr.Match (_spBind, _exprm, dtree, targets, _, _) -> + | Expr.Let(TBind(_, be, _), body, _, _) -> check be && check body + | Expr.DebugPoint(_, expr) -> check expr + | Expr.Match(_spBind, _exprm, dtree, targets, _, _) -> checkDecisionTree dtree - && targets |> Array.forall (fun (TTarget (_, e, _)) -> check e) + && targets |> Array.forall (fun (TTarget(_, e, _)) -> check e) | Expr.Const _ -> true - | Expr.Op (TOp.ILAsm ([ I_isinst _ ], _), _, _, _) -> true - | Expr.Op (TOp.UnionCaseTagGet _, _, _, _) -> true - | Expr.Op (TOp.ExnFieldGet _, _, _, _) -> true - | Expr.Op (TOp.UnionCaseFieldGet _, _, _, _) -> true - | Expr.Op (TOp.ValFieldGet _, _, _, _) -> true - | Expr.Op (TOp.TupleFieldGet _, _, _, _) -> true - | Expr.Op (TOp.Coerce, _, _, _) -> true + | Expr.Op(TOp.ILAsm([ I_isinst _ ], _), _, _, _) -> true + | Expr.Op(TOp.UnionCaseTagGet _, _, _, _) -> true + | Expr.Op(TOp.ExnFieldGet _, _, _, _) -> true + | Expr.Op(TOp.UnionCaseFieldGet _, _, _, _) -> true + | Expr.Op(TOp.ValFieldGet _, _, _, _) -> true + | Expr.Op(TOp.TupleFieldGet _, _, _, _) -> true + | Expr.Op(TOp.Coerce, _, _, _) -> true | Expr.Val _ -> true | _ -> false and checkDecisionTree dtree = match dtree with - | TDSwitch (ve, cases, dflt, _) -> + | TDSwitch(ve, cases, dflt, _) -> check ve && cases |> List.forall checkDecisionTreeCase && dflt |> Option.forall checkDecisionTree - | TDSuccess (es, _) -> es |> List.forall check - | TDBind (bind, rest) -> check bind.Expr && checkDecisionTree rest + | TDSuccess(es, _) -> es |> List.forall check + | TDBind(bind, rest) -> check bind.Expr && checkDecisionTree rest and checkDecisionTreeCase dcase = - let (TCase (test, tree)) = dcase + let (TCase(test, tree)) = dcase checkDecisionTree tree && match test with @@ -4727,7 +4726,7 @@ and eligibleForFilter (cenv: cenv) expr = let isTrivial = match expr with - | DebugPoints (Expr.Const _, _) -> true + | DebugPoints(Expr.Const _, _) -> true | _ -> false // Filters seem to generate invalid code for the ilreflect.fs backend @@ -4844,7 +4843,7 @@ and GenTryWith cenv cgbuf eenv (e1, valForFilter: Val, filterExpr, valForHandler EmitRestoreStack cgbuf stack match whereToSaveOpt with - | Some (whereToSave, ilResultTy) -> + | Some(whereToSave, ilResultTy) -> EmitGetLocal cgbuf ilResultTy whereToSave GenSequel cenv eenv.cloc cgbuf sequel | None -> GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel) @@ -4884,7 +4883,7 @@ and GenTryFinally cenv cgbuf eenv (bodyExpr, handlerExpr, m, resTy, spTry, spFin EmitRestoreStack cgbuf stack match whereToSaveOpt with - | Some (whereToSave, ilResultTy) -> + | Some(whereToSave, ilResultTy) -> EmitGetLocal cgbuf ilResultTy whereToSave GenSequel cenv eenv.cloc cgbuf sequel | None -> GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel) @@ -5087,27 +5086,27 @@ and GenAsmCode cenv cgbuf eenv (il, tyargs, args, returnTys, m) sequel = } match i, ilTyArgs with - | I_unbox_any (ILType.TypeVar _), [ tyarg ] -> I_unbox_any tyarg - | I_box (ILType.TypeVar _), [ tyarg ] -> I_box tyarg - | I_isinst (ILType.TypeVar _), [ tyarg ] -> I_isinst tyarg - | I_castclass (ILType.TypeVar _), [ tyarg ] -> I_castclass tyarg - | I_newarr (shape, ILType.TypeVar _), [ tyarg ] -> I_newarr(shape, tyarg) - | I_ldelem_any (shape, ILType.TypeVar _), [ tyarg ] -> I_ldelem_any(shape, tyarg) - | I_ldelema (ro, _, shape, ILType.TypeVar _), [ tyarg ] -> I_ldelema(ro, false, shape, tyarg) - | I_stelem_any (shape, ILType.TypeVar _), [ tyarg ] -> I_stelem_any(shape, tyarg) - | I_ldobj (a, b, ILType.TypeVar _), [ tyarg ] -> I_ldobj(a, b, tyarg) - | I_stobj (a, b, ILType.TypeVar _), [ tyarg ] -> I_stobj(a, b, tyarg) - | I_ldtoken (ILToken.ILType (ILType.TypeVar _)), [ tyarg ] -> I_ldtoken(ILToken.ILType tyarg) - | I_sizeof (ILType.TypeVar _), [ tyarg ] -> I_sizeof tyarg - | I_cpobj (ILType.TypeVar _), [ tyarg ] -> I_cpobj tyarg - | I_initobj (ILType.TypeVar _), [ tyarg ] -> I_initobj tyarg - | I_ldfld (al, vol, fspec), _ -> I_ldfld(al, vol, modFieldSpec fspec) + | I_unbox_any(ILType.TypeVar _), [ tyarg ] -> I_unbox_any tyarg + | I_box(ILType.TypeVar _), [ tyarg ] -> I_box tyarg + | I_isinst(ILType.TypeVar _), [ tyarg ] -> I_isinst tyarg + | I_castclass(ILType.TypeVar _), [ tyarg ] -> I_castclass tyarg + | I_newarr(shape, ILType.TypeVar _), [ tyarg ] -> I_newarr(shape, tyarg) + | I_ldelem_any(shape, ILType.TypeVar _), [ tyarg ] -> I_ldelem_any(shape, tyarg) + | I_ldelema(ro, _, shape, ILType.TypeVar _), [ tyarg ] -> I_ldelema(ro, false, shape, tyarg) + | I_stelem_any(shape, ILType.TypeVar _), [ tyarg ] -> I_stelem_any(shape, tyarg) + | I_ldobj(a, b, ILType.TypeVar _), [ tyarg ] -> I_ldobj(a, b, tyarg) + | I_stobj(a, b, ILType.TypeVar _), [ tyarg ] -> I_stobj(a, b, tyarg) + | I_ldtoken(ILToken.ILType(ILType.TypeVar _)), [ tyarg ] -> I_ldtoken(ILToken.ILType tyarg) + | I_sizeof(ILType.TypeVar _), [ tyarg ] -> I_sizeof tyarg + | I_cpobj(ILType.TypeVar _), [ tyarg ] -> I_cpobj tyarg + | I_initobj(ILType.TypeVar _), [ tyarg ] -> I_initobj tyarg + | I_ldfld(al, vol, fspec), _ -> I_ldfld(al, vol, modFieldSpec fspec) | I_ldflda fspec, _ -> I_ldflda(modFieldSpec fspec) - | I_stfld (al, vol, fspec), _ -> I_stfld(al, vol, modFieldSpec fspec) - | I_stsfld (vol, fspec), _ -> I_stsfld(vol, modFieldSpec fspec) - | I_ldsfld (vol, fspec), _ -> I_ldsfld(vol, modFieldSpec fspec) + | I_stfld(al, vol, fspec), _ -> I_stfld(al, vol, modFieldSpec fspec) + | I_stsfld(vol, fspec), _ -> I_stsfld(vol, modFieldSpec fspec) + | I_ldsfld(vol, fspec), _ -> I_ldsfld(vol, modFieldSpec fspec) | I_ldsflda fspec, _ -> I_ldsflda(modFieldSpec fspec) - | EI_ilzero (ILType.TypeVar _), [ tyarg ] -> EI_ilzero tyarg + | EI_ilzero(ILType.TypeVar _), [ tyarg ] -> EI_ilzero tyarg | AI_nop, _ -> i // These are embedded in the IL for a an initonly ldfld, i.e. // here's the relevant comment from tc.fs @@ -5129,7 +5128,7 @@ and GenAsmCode cenv cgbuf eenv (il, tyargs, args, returnTys, m) sequel = | _ -> failwith "Bad polymorphic IL instruction" // ldnull; cgt.un then branch is used to test for null and can become a direct brtrue/brfalse - | [ AI_ldnull; AI_cgt_un ], [ arg1 ], CmpThenBrOrContinue (1, [ I_brcmp (bi, label1) ]), _ -> + | [ AI_ldnull; AI_cgt_un ], [ arg1 ], CmpThenBrOrContinue(1, [ I_brcmp(bi, label1) ]), _ -> GenExpr cenv cgbuf eenv arg1 (CmpThenBrOrContinue(pop 1, [ I_brcmp(bi, label1) ])) @@ -5138,10 +5137,10 @@ and GenAsmCode cenv cgbuf eenv (il, tyargs, args, returnTys, m) sequel = // For these we can just generate the argument and change the test (from a brfalse to a brtrue and vice versa) | ([ AI_ceq ], [ arg1 - Expr.Const ((Const.Bool false | Const.SByte 0y | Const.Int16 0s | Const.Int32 0 | Const.Int64 0L | Const.Byte 0uy | Const.UInt16 0us | Const.UInt32 0u | Const.UInt64 0UL), - _, - _) ], - CmpThenBrOrContinue (1, [ I_brcmp ((BI_brfalse | BI_brtrue) as bi, label1) ]), + Expr.Const((Const.Bool false | Const.SByte 0y | Const.Int16 0s | Const.Int32 0 | Const.Int64 0L | Const.Byte 0uy | Const.UInt16 0us | Const.UInt32 0u | Const.UInt64 0UL), + _, + _) ], + CmpThenBrOrContinue(1, [ I_brcmp((BI_brfalse | BI_brtrue) as bi, label1) ]), _) -> let bi = @@ -5204,26 +5203,26 @@ and GenAsmCode cenv cgbuf eenv (il, tyargs, args, returnTys, m) sequel = // NOTE: THESE ARE NOT VALID ON FLOATING POINT DUE TO NaN. Hence INLINE ASM ON FP. MUST BE CAREFULLY WRITTEN - | [ AI_clt ], CmpThenBrOrContinue (1, [ I_brcmp (BI_brfalse, label1) ]) when not (anyfpType (tyOfExpr g args.Head)) -> + | [ AI_clt ], CmpThenBrOrContinue(1, [ I_brcmp(BI_brfalse, label1) ]) when not (anyfpType (tyOfExpr g args.Head)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_bge, label1)) - | [ AI_cgt ], CmpThenBrOrContinue (1, [ I_brcmp (BI_brfalse, label1) ]) when not (anyfpType (tyOfExpr g args.Head)) -> + | [ AI_cgt ], CmpThenBrOrContinue(1, [ I_brcmp(BI_brfalse, label1) ]) when not (anyfpType (tyOfExpr g args.Head)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_ble, label1)) - | [ AI_clt_un ], CmpThenBrOrContinue (1, [ I_brcmp (BI_brfalse, label1) ]) when not (anyfpType (tyOfExpr g args.Head)) -> + | [ AI_clt_un ], CmpThenBrOrContinue(1, [ I_brcmp(BI_brfalse, label1) ]) when not (anyfpType (tyOfExpr g args.Head)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_bge_un, label1)) - | [ AI_cgt_un ], CmpThenBrOrContinue (1, [ I_brcmp (BI_brfalse, label1) ]) when not (anyfpType (tyOfExpr g args.Head)) -> + | [ AI_cgt_un ], CmpThenBrOrContinue(1, [ I_brcmp(BI_brfalse, label1) ]) when not (anyfpType (tyOfExpr g args.Head)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_ble_un, label1)) - | [ AI_ceq ], CmpThenBrOrContinue (1, [ I_brcmp (BI_brfalse, label1) ]) when not (anyfpType (tyOfExpr g args.Head)) -> + | [ AI_ceq ], CmpThenBrOrContinue(1, [ I_brcmp(BI_brfalse, label1) ]) when not (anyfpType (tyOfExpr g args.Head)) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_bne_un, label1)) // THESE ARE VALID ON FP w.r.t. NaN - | [ AI_clt ], CmpThenBrOrContinue (1, [ I_brcmp (BI_brtrue, label1) ]) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_blt, label1)) - | [ AI_cgt ], CmpThenBrOrContinue (1, [ I_brcmp (BI_brtrue, label1) ]) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_bgt, label1)) - | [ AI_clt_un ], CmpThenBrOrContinue (1, [ I_brcmp (BI_brtrue, label1) ]) -> + | [ AI_clt ], CmpThenBrOrContinue(1, [ I_brcmp(BI_brtrue, label1) ]) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_blt, label1)) + | [ AI_cgt ], CmpThenBrOrContinue(1, [ I_brcmp(BI_brtrue, label1) ]) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_bgt, label1)) + | [ AI_clt_un ], CmpThenBrOrContinue(1, [ I_brcmp(BI_brtrue, label1) ]) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_blt_un, label1)) - | [ AI_cgt_un ], CmpThenBrOrContinue (1, [ I_brcmp (BI_brtrue, label1) ]) -> + | [ AI_cgt_un ], CmpThenBrOrContinue(1, [ I_brcmp(BI_brtrue, label1) ]) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_bgt_un, label1)) - | [ AI_ceq ], CmpThenBrOrContinue (1, [ I_brcmp (BI_brtrue, label1) ]) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_beq, label1)) + | [ AI_ceq ], CmpThenBrOrContinue(1, [ I_brcmp(BI_brtrue, label1) ]) -> CG.EmitInstr cgbuf (pop 2) Push0 (I_brcmp(BI_beq, label1)) | _ -> // Failing that, generate the real IL leaving value(s) on the stack CG.EmitInstrs cgbuf (pop args.Length) (Push ilReturnTys) ilAfterInst @@ -5244,7 +5243,7 @@ and GenQuotation cenv cgbuf eenv (ast, qdataCell, m, ety) sequel = let referencedTypeDefs, typeSplices, exprSplices, astSpec = match qdataCell.Value with - | Some (data1, data2) -> if suppressWitnesses then data1 else data2 + | Some(data1, data2) -> if suppressWitnesses then data1 else data2 | None -> try @@ -5455,11 +5454,11 @@ and GenGetValAddr cenv cgbuf eenv (v: ValRef, m) sequel = let storage = StorageForValRef m v eenv match storage with - | Local (idx, _, None) -> CG.EmitInstr cgbuf (pop 0) (Push [ ILType.Byref ilTy ]) (I_ldloca(uint16 idx)) + | Local(idx, _, None) -> CG.EmitInstr cgbuf (pop 0) (Push [ ILType.Byref ilTy ]) (I_ldloca(uint16 idx)) | Arg idx -> CG.EmitInstr cgbuf (pop 0) (Push [ ILType.Byref ilTy ]) (I_ldarga(uint16 idx)) - | StaticPropertyWithField (fspec, _vref, hasLiteralAttr, _ilTyForProperty, _, ilTy, _, _, _) -> + | StaticPropertyWithField(fspec, _vref, hasLiteralAttr, _ilTyForProperty, _, ilTy, _, _, _) -> if hasLiteralAttr then errorR (Error(FSComp.SR.ilAddressOfLiteralFieldIsInvalid (), m)) @@ -5471,9 +5470,9 @@ and GenGetValAddr cenv cgbuf eenv (v: ValRef, m) sequel = EmitGetStaticFieldAddr cgbuf ilTy fspec - | Env (_, ilField, _) -> CG.EmitInstrs cgbuf (pop 0) (Push [ ILType.Byref ilTy ]) [ mkLdarg0; mkNormalLdflda ilField ] + | Env(_, ilField, _) -> CG.EmitInstrs cgbuf (pop 0) (Push [ ILType.Byref ilTy ]) [ mkLdarg0; mkNormalLdflda ilField ] - | Local (_, _, Some _) + | Local(_, _, Some _) | StaticProperty _ | Method _ | Env _ @@ -5568,7 +5567,7 @@ and GenGenericParam cenv eenv (tp: Typar) = let subTypeConstraints = tp.Constraints |> List.choose (function - | TyparConstraint.CoercesTo (ty, _) -> Some ty + | TyparConstraint.CoercesTo(ty, _) -> Some ty | _ -> None) |> List.map (GenTypeAux cenv tp.Range eenv.tyenv VoidNotOK PtrTypesNotOK) @@ -5659,7 +5658,7 @@ and GenGenericParam cenv eenv (tp: Typar) = /// Generates the data used for parameters at definitions of abstract method slots such as interface methods or override methods. and GenSlotParam m cenv eenv slotParam : ILParameter = - let (TSlotParam (nm, ty, inFlag, outFlag, optionalFlag, attribs)) = slotParam + let (TSlotParam(nm, ty, inFlag, outFlag, optionalFlag, attribs)) = slotParam let ilTy = GenParamType cenv m eenv.tyenv true ty let inFlag2, outFlag2, optionalFlag2, defaultParamValue, paramMarshal2, attribs = @@ -5685,7 +5684,7 @@ and GenSlotParam m cenv eenv slotParam : ILParameter = } and GenFormalSlotsig m cenv eenv slotsig = - let (TSlotSig (_, ty, ctps, mtps, paraml, returnTy)) = slotsig + let (TSlotSig(_, ty, ctps, mtps, paraml, returnTy)) = slotsig let paraml = List.concat paraml let ilTy = GenType cenv m eenv.tyenv ty let eenvForSlotSig = EnvForTypars (ctps @ mtps) eenv @@ -5694,7 +5693,7 @@ and GenFormalSlotsig m cenv eenv slotsig = ilTy, ilParams, ilRet and GenOverridesSpec cenv eenv slotsig m isInstance = - let (TSlotSig (nameOfOverridenMethod, _, _, methodTypars, _, _)) = slotsig + let (TSlotSig(nameOfOverridenMethod, _, _, methodTypars, _, _)) = slotsig let ilOverrideTy, ilOverrideParams, ilOverrideRet = GenFormalSlotsig m cenv eenv slotsig @@ -5730,14 +5729,14 @@ and GenFormalReturnType m cenv eenvFormal returnTy : ILReturn = | Some attr -> ilRet.WithCustomAttrs(mkILCustomAttrs (ilRet.CustomAttrs.AsList() @ [ attr ])) | None -> ilRet -and instSlotParam inst (TSlotParam (nm, ty, inFlag, fl2, fl3, attrs)) = +and instSlotParam inst (TSlotParam(nm, ty, inFlag, fl2, fl3, attrs)) = TSlotParam(nm, instType inst ty, inFlag, fl2, fl3, attrs) and GenActualSlotsig m cenv eenv - (TSlotSig (_, ty, ctps, mtps, ilSlotParams, ilSlotRetTy)) + (TSlotSig(_, ty, ctps, mtps, ilSlotParams, ilSlotRetTy)) methTyparsOfOverridingMethod (methodParams: Val list) = @@ -5765,7 +5764,7 @@ and GenActualSlotsig ilParams, iLRet and GenNameOfOverridingMethod cenv (useMethodImpl, slotsig) = - let (TSlotSig (nameOfOverridenMethod, enclTypOfOverridenMethod, _, _, _, _)) = + let (TSlotSig(nameOfOverridenMethod, enclTypOfOverridenMethod, _, _, _, _)) = slotsig if useMethodImpl then @@ -5824,9 +5823,10 @@ and renameMethodDef nameOfOverridingMethod (mdef: ILMethodDef) = mdef.With(name = nameOfOverridingMethod) and fixupMethodImplFlags (mdef: ILMethodDef) = - mdef.WithAccess(ILMemberAccess.Private).WithHideBySig().WithFinal( - true - ) + mdef + .WithAccess(ILMemberAccess.Private) + .WithHideBySig() + .WithFinal(true) .WithNewSlot and fixupStaticAbstractSlotFlags (mdef: ILMethodDef) = mdef.WithHideBySig(true) @@ -5834,10 +5834,10 @@ and fixupStaticAbstractSlotFlags (mdef: ILMethodDef) = mdef.WithHideBySig(true) and GenObjectExprMethod cenv eenvinner (cgbuf: CodeGenBuffer) useMethodImpl tmethod = let g = cenv.g - let (TObjExprMethod (slotsig, attribs, methTyparsOfOverridingMethod, methParams, methBodyExpr, m)) = + let (TObjExprMethod(slotsig, attribs, methTyparsOfOverridingMethod, methParams, methBodyExpr, m)) = tmethod - let (TSlotSig (nameOfOverridenMethod, _, _, _, _, _)) = slotsig + let (TSlotSig(nameOfOverridenMethod, _, _, _, _, _)) = slotsig // Check if we're compiling the property as a .NET event if CompileAsEvent g attribs then @@ -5881,7 +5881,7 @@ and GenObjectExprMethod cenv eenvinner (cgbuf: CodeGenBuffer) useMethodImpl tmet GenGenericParams cenv eenvUnderTypars methTyparsOfOverridingMethod, ilParamsOfOverridingMethod, ilReturnOfOverridingMethod, - MethodBody.IL(lazy ilMethodBody) + MethodBody.IL(InterruptibleLazy.FromValue ilMethodBody) ) // fixup attributes to generate a method impl let mdef = if useMethodImpl then fixupMethodImplFlags mdef else mdef @@ -5891,13 +5891,13 @@ and GenObjectExprMethod cenv eenvinner (cgbuf: CodeGenBuffer) useMethodImpl tmet and GenStructStateMachine cenv cgbuf eenvouter (res: LoweredStateMachine) sequel = - let (LoweredStateMachine (templateStructTy, - dataTy, - stateVars, - thisVars, - (moveNextThisVar, moveNextBody), - (setStateMachineThisVar, setStateMachineStateVar, setStateMachineBody), - (afterCodeThisVar, afterCodeBody))) = + let (LoweredStateMachine(templateStructTy, + dataTy, + stateVars, + thisVars, + (moveNextThisVar, moveNextBody), + (setStateMachineThisVar, setStateMachineStateVar, setStateMachineBody), + (afterCodeThisVar, afterCodeBody))) = res let m = moveNextBody.Range @@ -6421,7 +6421,12 @@ and GenSequenceExpr else GenGetLocalVal cenv cgbuf eenv m fv None - CG.EmitInstr cgbuf (pop ilCloAllFreeVars.Length) (Push [ ilCloRetTyInner ]) (I_newobj(formalClospec.Constructor, None)) + CG.EmitInstr + cgbuf + (pop ilCloAllFreeVars.Length) + (Push [ ilCloRetTyInner ]) + (I_newobj(formalClospec.Constructor, None)) + GenSequel cenv eenv.cloc cgbuf Return), m) @@ -6430,7 +6435,7 @@ and GenSequenceExpr ILMemberAccess.Public, [], mkILReturn ilCloEnumeratorTy, - MethodBody.IL(lazy mbody) + MethodBody.IL(InterruptibleLazy.FromValue mbody) ) |> AddNonUserCompilerGeneratedAttribs g @@ -6438,7 +6443,13 @@ and GenSequenceExpr let ilCode = CodeGenMethodForExpr cenv cgbuf.mgbuf ([], "Close", eenvinner, 1, None, closeExpr, discardAndReturnVoid) - mkILNonGenericVirtualInstanceMethod ("Close", ILMemberAccess.Public, [], mkILReturn ILType.Void, MethodBody.IL(lazy ilCode)) + mkILNonGenericVirtualInstanceMethod ( + "Close", + ILMemberAccess.Public, + [], + mkILReturn ILType.Void, + MethodBody.IL(InterruptibleLazy.FromValue ilCode) + ) let checkCloseMethod = let ilCode = @@ -6449,7 +6460,7 @@ and GenSequenceExpr ILMemberAccess.Public, [], mkILReturn g.ilg.typ_Bool, - MethodBody.IL(lazy ilCode) + MethodBody.IL(InterruptibleLazy.FromValue ilCode) ) let generateNextMethod = @@ -6461,7 +6472,10 @@ and GenSequenceExpr let ilReturn = mkILReturn g.ilg.typ_Int32 let ilCode = - MethodBody.IL(lazy (CodeGenMethodForExpr cenv cgbuf.mgbuf ([], "GenerateNext", eenvinner, 2, None, generateNextExpr, Return))) + MethodBody.IL( + InterruptibleLazy(fun _ -> + CodeGenMethodForExpr cenv cgbuf.mgbuf ([], "GenerateNext", eenvinner, 2, None, generateNextExpr, Return)) + ) mkILNonGenericVirtualInstanceMethod ("GenerateNext", ILMemberAccess.Public, ilParams, ilReturn, ilCode) @@ -6474,20 +6488,12 @@ and GenSequenceExpr ILMemberAccess.Public, [], mkILReturn ilCloSeqElemTy, - MethodBody.IL(lazy ilCode) + MethodBody.IL(InterruptibleLazy.FromValue ilCode) ) |> AddNonUserCompilerGeneratedAttribs g let ilCtorBody = - mkILSimpleStorageCtor( - Some ilCloBaseTy.TypeSpec, - ilCloTyInner, - [], - [], - ILMemberAccess.Assembly, - None, - eenvouter.imports - ) + mkILSimpleStorageCtor(Some ilCloBaseTy.TypeSpec, ilCloTyInner, [], [], ILMemberAccess.Assembly, None, eenvouter.imports) .MethodBody let cloMethods = @@ -6655,7 +6661,7 @@ and GenClosureAsLocalTypeFunction cenv (cgbuf: CodeGenBuffer) eenv thisVars expr let ilCloFormalReturnTy, ilCloLambdas = let rec strip lambdas = match lambdas with - | Lambdas_forall (_, r) -> strip r + | Lambdas_forall(_, r) -> strip r | Lambdas_return returnTy -> returnTy, lambdas | _ -> failwith "AdjustNamedLocalTypeFuncIlxClosureInfo: local functions can currently only be type functions" @@ -6676,7 +6682,7 @@ and GenClosureAsLocalTypeFunction cenv (cgbuf: CodeGenBuffer) eenv thisVars expr ilDirectGenericParams, ilDirectWitnessParams, mkILReturn ilCloFormalReturnTy, - MethodBody.IL(lazy ilCloBody) + MethodBody.IL(InterruptibleLazy.FromValue ilCloBody) ) ] @@ -6731,8 +6737,8 @@ and GenClosureAsFirstClassFunction cenv (cgbuf: CodeGenBuffer) eenv thisVars m e /// Generate the closure class for a function and GenLambdaClosure cenv (cgbuf: CodeGenBuffer) eenv isLocalTypeFunc thisVars expr = match expr with - | Expr.Lambda (_, _, _, _, _, m, _) - | Expr.TyLambda (_, _, _, m, _) -> + | Expr.Lambda(_, _, _, _, _, m, _) + | Expr.TyLambda(_, _, _, m, _) -> let cloinfo, ilCloTypeRef, cloTypeDefs = if isLocalTypeFunc then @@ -6777,8 +6783,8 @@ and GenFreevar cenv m eenvouter tyenvinner (fv: Val) = match StorageForVal m fv eenvouter with // Local type functions - | Local (_, _, Some _) - | Env (_, _, Some _) -> g.ilg.typ_Object + | Local(_, _, Some _) + | Env(_, _, Some _) -> g.ilg.typ_Object #if DEBUG // Check for things that should never make it into the free variable set. Only do this in debug for performance reasons | StaticPropertyWithField _ @@ -6803,9 +6809,9 @@ and GetIlxClosureFreeVars cenv m (thisVars: ValRef list) boxity eenvouter takenN // Get a unique stamp for the closure. This must be stable for things that can be part of a let rec. let uniq = match expr with - | Expr.Obj (uniq, _, _, _, _, _, _) - | Expr.Lambda (uniq, _, _, _, _, _, _) - | Expr.TyLambda (uniq, _, _, _, _) -> uniq + | Expr.Obj(uniq, _, _, _, _, _, _) + | Expr.Lambda(uniq, _, _, _, _, _, _) + | Expr.TyLambda(uniq, _, _, _, _) -> uniq | _ -> newUnique () // Choose a name for the closure @@ -6828,7 +6834,7 @@ and GetIlxClosureFreeVars cenv m (thisVars: ValRef list) boxity eenvouter takenN let opts = match eenvouter.tyenv.TemplateReplacement with | None -> opts - | Some (tcref, _, typars, _) -> opts.WithTemplateReplacement(tyconRefEq g tcref, typars) + | Some(tcref, _, typars, _) -> opts.WithTemplateReplacement(tyconRefEq g tcref, typars) freeInExpr opts expr @@ -6854,8 +6860,8 @@ and GetIlxClosureFreeVars cenv m (thisVars: ValRef list) boxity eenvouter takenN (cloFreeVarResults.FreeTyvars, freeLocals) ||> List.fold (fun ftyvs fv -> match StorageForVal m fv eenvouter with - | Env (_, _, Some (moreFtyvs, _)) - | Local (_, _, Some (moreFtyvs, _)) -> unionFreeTyvars ftyvs moreFtyvs + | Env(_, _, Some(moreFtyvs, _)) + | Local(_, _, Some(moreFtyvs, _)) -> unionFreeTyvars ftyvs moreFtyvs | _ -> ftyvs) let cloFreeTyvars = cloFreeTyvars.FreeTypars |> Zset.elements @@ -6897,8 +6903,8 @@ and GetIlxClosureFreeVars cenv m (thisVars: ValRef list) boxity eenvouter takenN ||> List.map2 (fun fv nm -> let localCloInfo = match StorageForVal m fv eenvouter with - | Local (_, _, localCloInfo) - | Env (_, _, localCloInfo) -> localCloInfo + | Local(_, _, localCloInfo) + | Env(_, _, localCloInfo) -> localCloInfo | _ -> None let ilFv = @@ -6923,8 +6929,8 @@ and GetIlxClosureInfo cenv m boxity isLocalTypeFunc canUseStaticField thisVars e let returnTy = match expr with - | Expr.Lambda (_, _, _, _, _, _, returnTy) - | Expr.TyLambda (_, _, _, _, returnTy) -> returnTy + | Expr.Lambda(_, _, _, _, _, _, returnTy) + | Expr.TyLambda(_, _, _, _, returnTy) -> returnTy | _ -> tyOfExpr g expr // Determine the structure of the closure. We do this before analyzing free variables to @@ -6932,8 +6938,8 @@ and GetIlxClosureInfo cenv m boxity isLocalTypeFunc canUseStaticField thisVars e let tvsl, vs, body, returnTy = let rec getCallStructure tvacc vacc (e, ety) = match e with - | Expr.TyLambda (_, tvs, body, _m, bty) -> getCallStructure ((DropErasedTypars tvs) :: tvacc) vacc (body, bty) - | Expr.Lambda (_, _, _, vs, body, _, bty) when not isLocalTypeFunc -> + | Expr.TyLambda(_, tvs, body, _m, bty) -> getCallStructure ((DropErasedTypars tvs) :: tvacc) vacc (body, bty) + | Expr.Lambda(_, _, _, vs, body, _, bty) when not isLocalTypeFunc -> // Transform a lambda taking untupled arguments into one // taking only a single tupled argument if necessary. REVIEW: do this earlier let tupledv, body = MultiLambdaToTupledLambda g vs body @@ -7010,9 +7016,9 @@ and GetIlxClosureInfo cenv m boxity isLocalTypeFunc canUseStaticField thisVars e /// Generate a new delegate construction including a closure class if necessary. This is a lot like generating function closures /// and object expression closures, and most of the code is shared. -and GenDelegateExpr cenv cgbuf eenvouter expr (TObjExprMethod (slotsig, _attribs, methTyparsOfOverridingMethod, tmvs, body, _), m) sequel = +and GenDelegateExpr cenv cgbuf eenvouter expr (TObjExprMethod(slotsig, _attribs, methTyparsOfOverridingMethod, tmvs, body, _), m) sequel = let g = cenv.g - let (TSlotSig (_, delegateTy, _, _, _, _)) = slotsig + let (TSlotSig(_, delegateTy, _, _, _, _)) = slotsig // Get the instantiation of the delegate type let ilCtxtDelTy = GenType cenv m eenvouter.tyenv delegateTy @@ -7086,14 +7092,13 @@ and GenDelegateExpr cenv cgbuf eenvouter expr (TObjExprMethod (slotsig, _attribs (if useStaticClosure then mkILNonGenericStaticMethod else - mkILNonGenericInstanceMethod) - ( - delegeeMethName, - ILMemberAccess.Assembly, - ilDelegeeParams, - ilDelegeeRet, - MethodBody.IL(lazy ilMethodBody) - ) + mkILNonGenericInstanceMethod) ( + delegeeMethName, + ILMemberAccess.Assembly, + ilDelegeeParams, + ilDelegeeRet, + MethodBody.IL(InterruptibleLazy.FromValue ilMethodBody) + ) let delegeeCtorMeth = mkILSimpleStorageCtor (Some g.ilg.typ_Object.TypeSpec, ilDelegeeTyInner, [], [], ILMemberAccess.Assembly, None, eenvouter.imports) @@ -7150,13 +7155,12 @@ and GenDelegateExpr cenv cgbuf eenvouter expr (TObjExprMethod (slotsig, _attribs (if useStaticClosure then mkILNonGenericStaticMethSpecInTy else - mkILNonGenericInstanceMethSpecInTy) - ( - ilDelegeeTyOuter, - "Invoke", - typesOfILParams ilDelegeeParams, - ilDelegeeRet.Type - ) + mkILNonGenericInstanceMethSpecInTy) ( + ilDelegeeTyOuter, + "Invoke", + typesOfILParams ilDelegeeParams, + ilDelegeeRet.Type + ) CG.EmitInstr cgbuf (pop 0) (Push [ g.ilg.typ_IntPtr ]) (I_ldftn ilDelegeeInvokeMethOuter) @@ -7170,17 +7174,17 @@ and GenDelegateExpr cenv cgbuf eenvouter expr (TObjExprMethod (slotsig, _attribs /// Used to search FSharp.Core implementations of "^T : ^T" and decide whether the conditional activates and ExprIsTraitCall expr = match expr with - | Expr.Op (TOp.TraitCall _, _, _, _) -> true + | Expr.Op(TOp.TraitCall _, _, _, _) -> true | _ -> false /// Used to search FSharp.Core implementations of "^T : ^T" and decide whether the conditional activates and ExprIndicatesGenericStaticConstrainedCall g expr = match expr with - | Expr.Val (vref, PossibleConstrainedCall ty, _) -> + | Expr.Val(vref, PossibleConstrainedCall ty, _) -> vref.IsMember && not vref.MemberInfo.Value.MemberFlags.IsInstance && isTyparTy g ty - | Expr.Op (TOp.ILCall (valUseFlag = PossibleConstrainedCall ty; ilMethRef = ilMethRef), _, _, _) -> + | Expr.Op(TOp.ILCall(valUseFlag = PossibleConstrainedCall ty; ilMethRef = ilMethRef), _, _, _) -> not ilMethRef.CallingConv.IsInstance && isTyparTy g ty | _ -> false @@ -7189,7 +7193,7 @@ and ExprRequiresWitness cenv m expr = let g = cenv.g match expr with - | Expr.Op (TOp.TraitCall (traitInfo), _, _, _) -> + | Expr.Op(TOp.TraitCall(traitInfo), _, _, _) -> ConstraintSolver.CodegenWitnessExprForTraitConstraintWillRequireWitnessArgs cenv.tcVal g cenv.amap m traitInfo |> CommitOperationResult | _ -> false @@ -7271,7 +7275,7 @@ and GenJoinPoint cenv cgbuf pos eenv ty m sequel = sequel, afterJoin, stackAfterJoin, Continue // We end scopes at the join point, if any - | EndLocalScope (sq, mark) -> + | EndLocalScope(sq, mark) -> let sequelNow, afterJoin, stackAfterJoin, sequelAfterJoin = GenJoinPoint cenv cgbuf pos eenv ty m sq @@ -7312,9 +7316,9 @@ and GenDecisionTreeAndTargets cenv cgbuf stackAtTargets eenv tree targets sequel (fun targetInfos -> let sortedTargetInfos = targetInfos - |> Seq.sortBy (fun (KeyValue (targetIdx, _)) -> targetIdx) - |> Seq.filter (fun (KeyValue (_, (_, isTargetPostponed))) -> isTargetPostponed) - |> Seq.map (fun (KeyValue (_, (targetInfo, _))) -> targetInfo) + |> Seq.sortBy (fun (KeyValue(targetIdx, _)) -> targetIdx) + |> Seq.filter (fun (KeyValue(_, (_, isTargetPostponed))) -> isTargetPostponed) + |> Seq.map (fun (KeyValue(_, (targetInfo, _))) -> targetInfo) |> List.ofSeq GenPostponedDecisionTreeTargets cenv cgbuf sortedTargetInfos stackAtTargets sequel contf) @@ -7349,7 +7353,7 @@ and GenDecisionTreeAndTargetsInner CG.SetStack cgbuf stackAtTargets // Set the expected initial stack. match tree with - | TDBind (bind, rest) -> + | TDBind(bind, rest) -> cgbuf.SetMarkToHereIfNecessary inplabOpt let startMark, endMark as scopeMarks = StartDelayedLocalScope "dtreeBind" cgbuf let eenv = AllocStorageForBind cenv cgbuf scopeMarks eenv bind @@ -7362,16 +7366,16 @@ and GenDecisionTreeAndTargetsInner CG.SetMarkToHere cgbuf endMark GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv rest targets targetCounts targetInfos sequel contf - | TDSuccess (es, targetIdx) -> + | TDSuccess(es, targetIdx) -> let targetInfos, genTargetInfoOpt = GenDecisionTreeSuccess cenv cgbuf inplabOpt stackAtTargets eenv es targetIdx targets targetCounts targetInfos sequel match genTargetInfoOpt with - | Some (eenvAtTarget, exprAtTarget, sequelAtTarget) -> + | Some(eenvAtTarget, exprAtTarget, sequelAtTarget) -> GenLinearExpr cenv cgbuf eenvAtTarget exprAtTarget sequelAtTarget true (fun Fake -> contf targetInfos) | _ -> contf targetInfos - | TDSwitch (e, cases, dflt, m) -> + | TDSwitch(e, cases, dflt, m) -> GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases dflt m targets targetCounts targetInfos sequel contf and GetTarget (targets: _[]) n = @@ -7396,10 +7400,10 @@ and GenDecisionTreeSuccess targetInfos sequel = - let (TTarget (vs, successExpr, stateVarFlagsOpt)) = GetTarget targets targetIdx + let (TTarget(vs, successExpr, stateVarFlagsOpt)) = GetTarget targets targetIdx match IntMap.tryFind targetIdx targetInfos with - | Some (targetInfo, isTargetPostponed) -> + | Some(targetInfo, isTargetPostponed) -> let (targetMarkBeforeBinds, targetMarkAfterBinds: Mark, eenvAtTarget, _, _, _, _, _, _) = targetInfo @@ -7544,7 +7548,7 @@ and GenDecisionTreeSwitch match cases with // optimize a test against a boolean value, i.e. the all-important if-then-else - | TCase (DecisionTreeTest.Const (Const.Bool b), successTree) :: _ -> + | TCase(DecisionTreeTest.Const(Const.Bool b), successTree) :: _ -> let failureTree = (match defaultTargetOpt with | None -> cases.Tail.Head.CaseTree @@ -7569,7 +7573,7 @@ and GenDecisionTreeSwitch // Optimize a single test for a union case to an "isdata" test - much // more efficient code, and this case occurs in the generated equality testers where perf is important - | TCase (DecisionTreeTest.UnionCase (c, tyargs), successTree) :: rest when + | TCase(DecisionTreeTest.UnionCase(c, tyargs), successTree) :: rest when rest.Length = (match defaultTargetOpt with | None -> 1 | Some _ -> 0) @@ -7605,7 +7609,7 @@ and GenDecisionTreeSwitch // Use GenDecisionTreeTest to generate a single test for null (when no box required) where the success // is going to the immediate first node in the tree - | TCase (DecisionTreeTest.IsNull, (TDSuccess ([], 0) as successTree)) :: rest when + | TCase(DecisionTreeTest.IsNull, (TDSuccess([], 0) as successTree)) :: rest when rest.Length = (match defaultTargetOpt with | None -> 1 | Some _ -> 0) @@ -7643,13 +7647,13 @@ and GenDecisionTreeSwitch | DecisionTreeTest.ArrayLength _ | DecisionTreeTest.IsInst _ | DecisionTreeTest.IsNull - | DecisionTreeTest.Const (Const.Zero) -> + | DecisionTreeTest.Const(Const.Zero) -> if not (isSingleton cases) || Option.isNone defaultTargetOpt then failwith "internal error: GenDecisionTreeSwitch: DecisionTreeTest.IsInst/isnull/query" let bi = match firstDiscrim with - | DecisionTreeTest.Const (Const.Zero) -> + | DecisionTreeTest.Const(Const.Zero) -> GenExpr cenv cgbuf eenv e Continue BI_brfalse | DecisionTreeTest.IsNull -> @@ -7661,7 +7665,7 @@ and GenDecisionTreeSwitch CG.EmitInstr cgbuf (pop 1) (Push [ g.ilg.typ_Object ]) (I_box ilFromTy) BI_brfalse - | DecisionTreeTest.IsInst (_srcTy, tgtTy) -> + | DecisionTreeTest.IsInst(_srcTy, tgtTy) -> let e = mkCallTypeTest g m tgtTy e GenExpr cenv cgbuf eenv e Continue BI_brtrue @@ -7686,7 +7690,7 @@ and GenDecisionTreeSwitch | DecisionTreeTest.ActivePatternCase _ -> error (InternalError("internal error in codegen: DecisionTreeTest.ActivePatternCase", switchm)) - | DecisionTreeTest.UnionCase (hdc, tyargs) -> + | DecisionTreeTest.UnionCase(hdc, tyargs) -> GenExpr cenv cgbuf eenv e Continue let cuspec = GenUnionSpec cenv m eenv.tyenv hdc.TyconRef tyargs @@ -7697,7 +7701,7 @@ and GenDecisionTreeSwitch (cases, caseLabels) ||> List.map2 (fun case label -> match case with - | TCase (DecisionTreeTest.UnionCase (c, _), _) -> (c.Index, label.CodeLabel) + | TCase(DecisionTreeTest.UnionCase(c, _), _) -> (c.Index, label.CodeLabel) | _ -> failwith "error: mixed constructor/const test?") let avoidHelpers = entityRefInThisAssembly g.compilingFSharpCore hdc.TyconRef @@ -7822,7 +7826,7 @@ and GenDecisionTreeCases GenDecisionTreeCases cenv cgbuf stackAtTargets eenv None targets targetCounts targetInfos sequel caseLabels cases contf) | None -> match caseLabels, cases with - | caseLabel :: caseLabelsTail, TCase (_, caseTree) :: casesTail -> + | caseLabel :: caseLabelsTail, TCase(_, caseTree) :: casesTail -> GenDecisionTreeAndTargetsInner cenv cgbuf @@ -7851,10 +7855,10 @@ and GenDecisionTreeCases | _ -> contf targetInfos // Used for the peephole optimization below -and (|BoolExpr|_|) = +and [] (|BoolExpr|_|) = function - | Expr.Const (Const.Bool b1, _, _) -> Some b1 - | _ -> None + | Expr.Const(Const.Bool b1, _, _) -> ValueSome b1 + | _ -> ValueNone and GenDecisionTreeTest cenv @@ -7879,24 +7883,24 @@ and GenDecisionTreeTest // Peephole: if generating a boolean value or its negation then just leave it on the stack // This comes up in the generated equality functions. REVIEW: do this as a peephole optimization elsewhere - | TDSuccess (es1, n1), TDSuccess (es2, n2) when + | TDSuccess(es1, n1), TDSuccess(es2, n2) when not isNullTest && isNil es1 && isNil es2 && (match GetTarget targets n1, GetTarget targets n2 with - | TTarget (_, BoolExpr b1, _), TTarget (_, BoolExpr b2, _) -> b1 = not b2 + | TTarget(_, BoolExpr b1, _), TTarget(_, BoolExpr b2, _) -> b1 = not b2 | _ -> false) -> match GetTarget targets n1, GetTarget targets n2 with - | TTarget (_, BoolExpr b1, _), _ -> + | TTarget(_, BoolExpr b1, _), _ -> GenExpr cenv cgbuf eenv e Continue match tester with - | Some (pops, pushes, i) -> + | Some(pops, pushes, i) -> match i with - | Choice1Of2 (avoidHelpers, cuspec, idx) -> + | Choice1Of2(avoidHelpers, cuspec, idx) -> CG.EmitInstrs cgbuf pops pushes (EraseUnions.mkIsData g.ilg (avoidHelpers, cuspec, idx)) | Choice2Of2 i -> CG.EmitInstr cgbuf pops pushes i | _ -> () @@ -7988,7 +7992,7 @@ and GenDecisionTreeTest contf) // Turn 'isdata' tests that branch into EI_brisdata tests - | Some (_, _, Choice1Of2 (avoidHelpers, cuspec, idx)) -> + | Some(_, _, Choice1Of2(avoidHelpers, cuspec, idx)) -> let failure = CG.GenerateDelayMark cgbuf "testFailure" GenExpr @@ -8023,12 +8027,12 @@ and GenDecisionTreeTest sequel contf) - | Some (pops, pushes, i) -> + | Some(pops, pushes, i) -> let failure = CG.GenerateDelayMark cgbuf "testFailure" GenExpr cenv cgbuf eenv e Continue match i with - | Choice1Of2 (avoidHelpers, cuspec, idx) -> + | Choice1Of2(avoidHelpers, cuspec, idx) -> CG.EmitInstrs cgbuf pops pushes (EraseUnions.mkIsData g.ilg (avoidHelpers, cuspec, idx)) | Choice2Of2 i -> CG.EmitInstr cgbuf pops pushes i @@ -8121,14 +8125,14 @@ and GenLetRecBindings cenv (cgbuf: CodeGenBuffer) eenv (allBinds: Bindings, m) = for fv in clo.cloFreeVars do if Zset.contains fv forwardReferenceSet then match StorageForVal m fv eenvclo with - | Env (_, ilField, _) -> + | Env(_, ilField, _) -> let fixup = (boundv, fv, (fun () -> GenLetRecFixup cenv cgbuf eenv (clo.cloSpec, access, ilField, exprForVal m fv, m))) fixups.Value <- fixup :: fixups.Value | _ -> error (InternalError("GenLetRec: " + fv.LogicalName + " was not in the environment", m)) - | Expr.Val (vref, _, _) -> + | Expr.Val(vref, _, _) -> let fv = vref.Deref let needsFixup = Zset.contains fv forwardReferenceSet @@ -8219,7 +8223,7 @@ and ComputeMethodAccessRestrictedBySig eenv vspec = and GenBindingAfterDebugPoint cenv cgbuf eenv bind isStateVar startMarkOpt = let g = cenv.g - let (TBind (vspec, rhsExpr, _)) = bind + let (TBind(vspec, rhsExpr, _)) = bind // Record the closed reflection definition if publishing // There is no real reason we're doing this so late in the day @@ -8275,7 +8279,7 @@ and GenBindingAfterDebugPoint cenv cgbuf eenv bind isStateVar startMarkOpt = CommitStartScope cgbuf startMarkOpt GenExpr cenv cgbuf eenv cctorBody discard - | Method (valReprInfo, _, mspec, mspecW, _, ctps, mtps, curriedArgInfos, paramInfos, witnessInfos, argTys, retInfo) when not isStateVar -> + | Method(valReprInfo, _, mspec, mspecW, _, ctps, mtps, curriedArgInfos, paramInfos, witnessInfos, argTys, retInfo) when not isStateVar -> let methLambdaTypars, methLambdaCtorThisValOpt, methLambdaBaseValOpt, methLambdaCurriedVars, methLambdaBody, methLambdaBodyTy = IteratedAdjustLambdaToMatchValReprInfo g cenv.amap valReprInfo rhsExpr @@ -8339,7 +8343,7 @@ and GenBindingAfterDebugPoint cenv cgbuf eenv bind isStateVar startMarkOpt = copyOfLambdaBody, methLambdaBodyTy) - | StaticProperty (ilGetterMethSpec, optShadowLocal) when not isStateVar -> + | StaticProperty(ilGetterMethSpec, optShadowLocal) when not isStateVar -> let ilAttribs = GenAttrs cenv eenv vspec.Attribs let ilTy = ilGetterMethSpec.FormalReturnType @@ -8377,20 +8381,20 @@ and GenBindingAfterDebugPoint cenv cgbuf eenv bind isStateVar startMarkOpt = match optShadowLocal with | NoShadowLocal -> () - | ShadowLocal (startMark, storage) -> + | ShadowLocal(startMark, storage) -> CG.EmitInstr cgbuf (pop 0) (Push [ ilTy ]) (I_call(Normalcall, ilGetterMethSpec, None)) GenSetStorage m cgbuf storage cgbuf.SetMarkToHere startMark - | StaticPropertyWithField (fspec, - vref, - hasLiteralAttr, - ilTyForProperty, - ilPropName, - fty, - ilGetterMethRef, - ilSetterMethRef, - optShadowLocal) -> + | StaticPropertyWithField(fspec, + vref, + hasLiteralAttr, + ilTyForProperty, + ilPropName, + fty, + ilGetterMethRef, + ilSetterMethRef, + optShadowLocal) -> let mut = vspec.IsMutable let canTarget (targets, goal: System.AttributeTargets) = @@ -8425,7 +8429,7 @@ and GenBindingAfterDebugPoint cenv cgbuf eenv bind isStateVar startMarkOpt = let ilAttribs = if not hasLiteralAttr then vspec.Attribs - |> List.filter (fun (Attrib (_, _, _, _, _, targets, _)) -> canTarget (targets, System.AttributeTargets.Field)) + |> List.filter (fun (Attrib(_, _, _, _, _, targets, _)) -> canTarget (targets, System.AttributeTargets.Field)) |> GenAttrs cenv eenv // backing field only gets attributes that target fields else GenAttrs cenv eenv vspec.Attribs // literals have no property, so preserve all the attributes on the field itself @@ -8445,11 +8449,11 @@ and GenBindingAfterDebugPoint cenv cgbuf eenv bind isStateVar startMarkOpt = if hasLiteralAttr then match optShadowLocal with | NoShadowLocal -> () - | ShadowLocal (startMark, _storage) -> cgbuf.SetMarkToHere startMark + | ShadowLocal(startMark, _storage) -> cgbuf.SetMarkToHere startMark else let ilAttribs = vspec.Attribs - |> List.filter (fun (Attrib (_, _, _, _, _, targets, _)) -> canTarget (targets, System.AttributeTargets.Property)) + |> List.filter (fun (Attrib(_, _, _, _, _, targets, _)) -> canTarget (targets, System.AttributeTargets.Property)) |> GenAttrs cenv eenv // property only gets attributes that target properties let ilPropDef = @@ -8475,14 +8479,7 @@ and GenBindingAfterDebugPoint cenv cgbuf eenv bind isStateVar startMarkOpt = let body = mkMethodBody (true, [], 2, nonBranchingInstrsToCode [ mkNormalLdsfld fspec ], None, eenv.imports) - mkILStaticMethod( - [], - ilGetterMethRef.Name, - access, - [], - mkILReturn fty, - body - ) + mkILStaticMethod([], ilGetterMethRef.Name, access, [], mkILReturn fty, body) .WithSpecialName cgbuf.mgbuf.AddMethodDef(ilTypeRefForProperty, getterMethod) @@ -8492,14 +8489,7 @@ and GenBindingAfterDebugPoint cenv cgbuf eenv bind isStateVar startMarkOpt = mkMethodBody (true, [], 2, nonBranchingInstrsToCode [ mkLdarg0; mkNormalStsfld fspec ], None, eenv.imports) let setterMethod = - mkILStaticMethod( - [], - ilSetterMethRef.Name, - access, - [ mkILParamNamed ("value", fty) ], - mkILReturn ILType.Void, - body - ) + mkILStaticMethod([], ilSetterMethRef.Name, access, [ mkILParamNamed ("value", fty) ], mkILReturn ILType.Void, body) .WithSpecialName cgbuf.mgbuf.AddMethodDef(ilTypeRefForProperty, setterMethod) @@ -8510,7 +8500,7 @@ and GenBindingAfterDebugPoint cenv cgbuf eenv bind isStateVar startMarkOpt = match optShadowLocal with | NoShadowLocal -> EmitSetStaticField cgbuf fspec - | ShadowLocal (startMark, storage) -> + | ShadowLocal(startMark, storage) -> CG.EmitInstr cgbuf (pop 0) (Push [ fty ]) AI_dup EmitSetStaticField cgbuf fspec GenSetStorage m cgbuf storage @@ -8521,7 +8511,7 @@ and GenBindingAfterDebugPoint cenv cgbuf eenv bind isStateVar startMarkOpt = match storage, rhsExpr with // locals are zero-init, no need to initialize them, except if you are in a loop and the local is mutable. - | Local (_, realloc, _), Expr.Const (Const.Zero, _, _) when not realloc && not (eenv.isInLoop && vspec.IsMutable) -> + | Local(_, realloc, _), Expr.Const(Const.Zero, _, _) when not realloc && not (eenv.isInLoop && vspec.IsMutable) -> CommitStartScope cgbuf startMarkOpt | _ -> GetStoreValCtxt cgbuf eenv vspec @@ -8532,7 +8522,7 @@ and GenBindingAfterDebugPoint cenv cgbuf eenv bind isStateVar startMarkOpt = and GetStoreValCtxt cgbuf eenv (vspec: Val) = // Emit the ldarg0 if needed match StorageForVal vspec.Range vspec eenv with - | Env (ilCloTy, _, _) -> + | Env(ilCloTy, _, _) -> let ilCloAddrTy = if ilCloTy.Boxity = ILBoxity.AsValue then ILType.Byref ilCloTy @@ -8561,7 +8551,7 @@ and GenMarshal cenv attribs = |> List.filter (IsMatchingFSharpAttributeOpt g g.attrib_MarshalAsAttribute >> not) match TryFindFSharpAttributeOpt g g.attrib_MarshalAsAttribute attribs with - | Some (Attrib (_, _, [ AttribInt32Arg unmanagedType ], namedArgs, _, _, m)) -> + | Some(Attrib(_, _, [ AttribInt32Arg unmanagedType ], namedArgs, _, _, m)) -> let decoder = AttributeDecoder namedArgs let rec decodeUnmanagedType unmanagedType = @@ -8681,7 +8671,7 @@ and GenMarshal cenv attribs = | _ -> ILNativeType.Empty Some(decodeUnmanagedType unmanagedType), otherAttribs - | Some (Attrib (_, _, _, _, _, _, m)) -> + | Some(Attrib(_, _, _, _, _, _, m)) -> errorR (Error(FSComp.SR.ilMarshalAsAttributeCannotBeDecoded (), m)) None, attribs | _ -> @@ -8899,7 +8889,7 @@ and ComputeMethodImplAttribs cenv (_v: Val) attrs = let implflags = match TryFindFSharpAttribute g g.attrib_MethodImplAttribute attrs with - | Some (Attrib (_, _, [ AttribInt32Arg flags ], _, _, _, _)) -> flags + | Some(Attrib(_, _, [ AttribInt32Arg flags ], _, _, _, _)) -> flags | _ -> 0x0 let hasPreserveSigAttr = @@ -9044,7 +9034,7 @@ and GenMethodForBinding // Now generate the code. let hasPreserveSigNamedArg, ilMethodBody, hasDllImport = match TryFindFSharpAttributeOpt g g.attrib_DllImportAttribute v.Attribs with - | Some (Attrib (_, _, [ AttribStringArg dll ], namedArgs, _, _, m)) -> + | Some(Attrib(_, _, [ AttribStringArg dll ], namedArgs, _, _, m)) -> if not (isNil methLambdaTypars) then error (Error(FSComp.SR.ilSignatureForExternalFunctionContainsTypeParameters (), m)) @@ -9053,7 +9043,7 @@ and GenMethodForBinding hasPreserveSigNamedArg, mbody, true - | Some (Attrib (_, _, _, _, _, _, m)) -> error (Error(FSComp.SR.ilDllImportAttributeCouldNotBeDecoded (), m)) + | Some(Attrib(_, _, _, _, _, _, m)) -> error (Error(FSComp.SR.ilDllImportAttributeCouldNotBeDecoded (), m)) | _ -> // Replace the body of ValInline.PseudoVal "must inline" methods with a 'throw' @@ -9093,14 +9083,14 @@ and GenMethodForBinding |> List.filter (IsMatchingFSharpAttribute g g.attrib_CompiledNameAttribute >> not) let attrsAppliedToGetterOrSetter, attrs = - List.partition (fun (Attrib (_, _, _, _, isAppliedToGetterOrSetter, _, _)) -> isAppliedToGetterOrSetter) attrs + List.partition (fun (Attrib(_, _, _, _, isAppliedToGetterOrSetter, _, _)) -> isAppliedToGetterOrSetter) attrs let sourceNameAttribs, compiledName = match v.Attribs |> List.tryFind (IsMatchingFSharpAttribute g g.attrib_CompiledNameAttribute) with - | Some (Attrib (_, _, [ AttribStringArg b ], _, _, _, _)) -> [ mkCompilationSourceNameAttr g v.LogicalName ], Some b + | Some(Attrib(_, _, [ AttribStringArg b ], _, _, _, _)) -> [ mkCompilationSourceNameAttr g v.LogicalName ], Some b | _ -> [], None // check if the hasPreserveSigNamedArg and hasSynchronizedImplFlag implementation flags have been specified @@ -9232,7 +9222,13 @@ and GenMethodForBinding if not memberInfo.MemberFlags.IsOverrideOrExplicitImpl then mkILStaticMethod (ilMethTypars, mspec.Name, access, ilParams, ilReturn, ilMethodBody) else // We want to get potential fixups and hidebysig for abstract statics: - let flagFixups = [ fixupStaticAbstractSlotFlags ] + let flagFixups = + [ + fixupStaticAbstractSlotFlags + match ComputeMethodImplNameFixupForMemberBinding cenv v with + | Some nm -> renameMethodDef nm + | None -> () + ] let mdef = mkILStaticMethod (ilMethTypars, mspec.Name, access, ilParams, ilReturn, ilMethodBody) @@ -9329,7 +9325,8 @@ and GenMethodForBinding customAttrs = mkILCustomAttrs ( (GenAttrs cenv eenv attrsAppliedToGetterOrSetter) - @ sourceNameAttribs @ ilAttrsCompilerGenerated + @ sourceNameAttribs + @ ilAttrsCompilerGenerated ) ) @@ -9500,57 +9497,57 @@ and EmitGetStaticField cgbuf ty fspec = and GenSetStorage m cgbuf storage = match storage with - | Local (idx, _, _) -> EmitSetLocal cgbuf idx + | Local(idx, _, _) -> EmitSetLocal cgbuf idx - | StaticPropertyWithField (_, _, hasLiteralAttr, ilContainerTy, _, _, _, ilSetterMethRef, _) -> + | StaticPropertyWithField(_, _, hasLiteralAttr, ilContainerTy, _, _, _, ilSetterMethRef, _) -> if hasLiteralAttr then errorR (Error(FSComp.SR.ilLiteralFieldsCannotBeSet (), m)) CG.EmitInstr cgbuf (pop 1) Push0 (I_call(Normalcall, mkILMethSpecForMethRefInTy (ilSetterMethRef, ilContainerTy, []), None)) - | StaticProperty (ilGetterMethSpec, _) -> error (Error(FSComp.SR.ilStaticMethodIsNotLambda (ilGetterMethSpec.Name), m)) + | StaticProperty(ilGetterMethSpec, _) -> error (Error(FSComp.SR.ilStaticMethodIsNotLambda (ilGetterMethSpec.Name), m)) - | Method (_, _, mspec, _, m, _, _, _, _, _, _, _) -> error (Error(FSComp.SR.ilStaticMethodIsNotLambda (mspec.Name), m)) + | Method(_, _, mspec, _, m, _, _, _, _, _, _, _) -> error (Error(FSComp.SR.ilStaticMethodIsNotLambda (mspec.Name), m)) | Null -> CG.EmitInstr cgbuf (pop 1) Push0 AI_pop | Arg _ -> error (Error(FSComp.SR.ilMutableVariablesCannotEscapeMethod (), m)) - | Env (_, ilField, _) -> + | Env(_, ilField, _) -> // Note: ldarg0 has already been emitted in GenSetVal CG.EmitInstr cgbuf (pop 2) Push0 (mkNormalStfld ilField) and CommitGetStorageSequel cenv cgbuf eenv m ty localCloInfo storeSequel = match localCloInfo, storeSequel with - | Some (_, - { - contents = NamedLocalIlxClosureInfoGenerator _cloinfo - }), + | Some(_, + { + contents = NamedLocalIlxClosureInfoGenerator _cloinfo + }), _ -> error (InternalError("Unexpected generator", m)) - | Some (_, - { - contents = NamedLocalIlxClosureInfoGenerated cloinfo - }), - Some (tyargs, args, m, sequel) when not (isNil tyargs) -> + | Some(_, + { + contents = NamedLocalIlxClosureInfoGenerated cloinfo + }), + Some(tyargs, args, m, sequel) when not (isNil tyargs) -> let actualRetTy = GenNamedLocalTyFuncCall cenv cgbuf eenv ty cloinfo tyargs m CommitGetStorageSequel cenv cgbuf eenv m actualRetTy None (Some([], args, m, sequel)) | _, None -> () - | _, Some ([], [], _, sequel) -> GenSequel cenv eenv.cloc cgbuf sequel + | _, Some([], [], _, sequel) -> GenSequel cenv eenv.cloc cgbuf sequel - | _, Some (tyargs, args, m, sequel) -> GenCurriedArgsAndIndirectCall cenv cgbuf eenv (ty, tyargs, args, m) sequel + | _, Some(tyargs, args, m, sequel) -> GenCurriedArgsAndIndirectCall cenv cgbuf eenv (ty, tyargs, args, m) sequel and GenGetStorageAndSequel (cenv: cenv) cgbuf eenv m (ty, ilTy) storage storeSequel = let g = cenv.g match storage with - | Local (idx, _, localCloInfo) -> + | Local(idx, _, localCloInfo) -> EmitGetLocal cgbuf ilTy idx CommitGetStorageSequel cenv cgbuf eenv m ty localCloInfo storeSequel - | StaticPropertyWithField (fspec, _, hasLiteralAttr, ilContainerTy, _, _, ilGetterMethRef, _, _) -> + | StaticPropertyWithField(fspec, _, hasLiteralAttr, ilContainerTy, _, _, ilGetterMethRef, _, _) -> // References to literals go directly to the field - no property is used if hasLiteralAttr then EmitGetStaticField cgbuf ilTy fspec @@ -9563,11 +9560,11 @@ and GenGetStorageAndSequel (cenv: cenv) cgbuf eenv m (ty, ilTy) storage storeSeq CommitGetStorageSequel cenv cgbuf eenv m ty None storeSequel - | StaticProperty (ilGetterMethSpec, _) -> + | StaticProperty(ilGetterMethSpec, _) -> CG.EmitInstr cgbuf (pop 0) (Push [ ilTy ]) (I_call(Normalcall, ilGetterMethSpec, None)) CommitGetStorageSequel cenv cgbuf eenv m ty None storeSequel - | Method (valReprInfo, vref, _, _, _, _, _, _, _, _, _, _) -> + | Method(valReprInfo, vref, _, _, _, _, _, _, _, _, _, _) -> // Get a toplevel value as a first-class value. // We generate a lambda expression and that simply calls // the toplevel method. However we optimize the case where we are @@ -9580,7 +9577,7 @@ and GenGetStorageAndSequel (cenv: cenv) cgbuf eenv m (ty, ilTy) storage storeSeq // Then reduce out any arguments (i.e. apply the sequel immediately if we can...) match storeSequel with | None -> GenLambda cenv cgbuf eenv false [] expr Continue - | Some (tyargs', args, m, sequel) -> + | Some(tyargs', args, m, sequel) -> let specializedExpr = if isNil args && isNil tyargs' then failwith ("non-lambda at use of method " + vref.LogicalName) @@ -9597,7 +9594,7 @@ and GenGetStorageAndSequel (cenv: cenv) cgbuf eenv m (ty, ilTy) storage storeSeq CG.EmitInstr cgbuf (pop 0) (Push [ ilTy ]) (mkLdarg (uint16 i)) CommitGetStorageSequel cenv cgbuf eenv m ty None storeSequel - | Env (_, ilField, localCloInfo) -> + | Env(_, ilField, localCloInfo) -> CG.EmitInstrs cgbuf (pop 0) (Push [ ilTy ]) [ mkLdarg0; mkNormalLdfld ilField ] CommitGetStorageSequel cenv cgbuf eenv m ty localCloInfo storeSequel @@ -9700,8 +9697,8 @@ and AllocStorageForBinds cenv cgbuf scopeMarks eenv binds = match reprOpt with | Some repr -> match repr with - | Local (_, _, Some (_, g)) - | Env (_, _, Some (_, g)) -> + | Local(_, _, Some(_, g)) + | Env(_, _, Some(_, g)) -> match g.Value with | NamedLocalIlxClosureInfoGenerator f -> g.Value <- NamedLocalIlxClosureInfoGenerated(f eenv) | NamedLocalIlxClosureInfoGenerated _ -> () @@ -9710,7 +9707,7 @@ and AllocStorageForBinds cenv cgbuf scopeMarks eenv binds = eenv -and AllocValForBind cenv cgbuf (scopeMarks: Mark * Mark) eenv (TBind (v, repr, _)) = +and AllocValForBind cenv cgbuf (scopeMarks: Mark * Mark) eenv (TBind(v, repr, _)) = match v.ValReprInfo with | None -> let repr, eenv = AllocLocalVal cenv cgbuf v eenv (Some repr) scopeMarks @@ -9784,10 +9781,10 @@ and GenAttribArg amap g eenv x (ilArgTy: ILType) = match stripDebugPoints x, ilArgTy with // Detect 'null' used for an array argument - | Expr.Const (Const.Zero, _, _), ILType.Array _ -> ILAttribElem.Null + | Expr.Const(Const.Zero, _, _), ILType.Array _ -> ILAttribElem.Null // Detect standard constants - | Expr.Const (c, m, _), _ -> + | Expr.Const(c, m, _), _ -> let tynm = ilArgTy.TypeSpec.Name let isobj = (tynm = "System.Object") @@ -9818,7 +9815,7 @@ and GenAttribArg amap g eenv x (ilArgTy: ILType) = | _ -> error (InternalError("The type '" + tynm + "' may not be used as a custom attribute value", m)) // Detect '[| ... |]' nodes - | Expr.Op (TOp.Array, [ elemTy ], args, m), _ -> + | Expr.Op(TOp.Array, [ elemTy ], args, m), _ -> let ilElemTy = GenType amap m eenv.tyenv elemTy ILAttribElem.Array(ilElemTy, List.map (fun arg -> GenAttribArg amap g eenv arg ilElemTy) args) @@ -9829,7 +9826,7 @@ and GenAttribArg amap g eenv x (ilArgTy: ILType) = | TypeDefOfExpr g ty, _ -> ILAttribElem.TypeRef(Some (GenType amap x.Range eenv.tyenv ty).TypeRef) // Ignore upcasts - | Expr.Op (TOp.Coerce, _, [ arg2 ], _), _ -> GenAttribArg amap g eenv arg2 ilArgTy + | Expr.Op(TOp.Coerce, _, [ arg2 ], _), _ -> GenAttribArg amap g eenv arg2 ilArgTy // Detect explicit enum values | EnumExpr g arg1, _ -> GenAttribArg amap g eenv arg1 ilArgTy @@ -9854,10 +9851,10 @@ and GenAttribArg amap g eenv x (ilArgTy: ILType) = // Other expressions are not valid custom attribute values | _ -> error (InternalError("invalid custom attribute value (not a constant): " + showL (exprL x), x.Range)) -and GenAttr cenv g eenv (Attrib (_, k, args, props, _, _, _)) = +and GenAttr cenv g eenv (Attrib(_, k, args, props, _, _, _)) = let props = props - |> List.map (fun (AttribNamedArg (s, ty, fld, AttribExpr (_, expr))) -> + |> List.map (fun (AttribNamedArg(s, ty, fld, AttribExpr(_, expr))) -> let m = expr.Range let ilTy = GenType cenv m eenv.tyenv ty let cval = GenAttribArg cenv g eenv expr ilTy @@ -9875,7 +9872,7 @@ and GenAttr cenv g eenv (Attrib (_, k, args, props, _, _, _)) = mspec let ilArgs = - List.map2 (fun (AttribExpr (_, vexpr)) ty -> GenAttribArg cenv g eenv vexpr ty) args mspec.FormalArgTypes + List.map2 (fun (AttribExpr(_, vexpr)) ty -> GenAttribArg cenv g eenv vexpr ty) args mspec.FormalArgTypes mkILCustomAttribMethRef (mspec, ilArgs, props) @@ -9904,7 +9901,7 @@ and CreatePermissionSets cenv eenv (securityAttributes: Attrib list) = let g = cenv.g [ - for Attrib (tcref, _, actions, _, _, _, _) as attr in securityAttributes do + for Attrib(tcref, _, actions, _, _, _, _) as attr in securityAttributes do let action = match actions with | [ AttribInt32Arg act ] -> act @@ -9916,7 +9913,7 @@ and CreatePermissionSets cenv eenv (securityAttributes: Attrib list) = let _, ilNamedArgs = match TryDecodeILAttribute tref (mkILCustomAttrs [ ilattr ]) with - | Some (ae, na) -> ae, na + | Some(ae, na) -> ae, na | _ -> [], [] let setArgs = ilNamedArgs |> List.map (fun (n, ilt, _, ilae) -> (n, ilt, ilae)) @@ -9982,7 +9979,7 @@ and GenImplFileContents cenv cgbuf qname lazyInitInfo eenv mty def = and GenModuleOrNamespaceContents cenv (cgbuf: CodeGenBuffer) qname lazyInitInfo eenv x = match x with - | TMDefRec (_isRec, opens, tycons, mbinds, m) -> + | TMDefRec(_isRec, opens, tycons, mbinds, m) -> let eenvinner = AddDebugImportsToEnv cenv eenv opens for tc in tycons do @@ -10021,7 +10018,7 @@ and GenModuleOrNamespaceContents cenv (cgbuf: CodeGenBuffer) qname lazyInitInfo eenvinner - | TMDefLet (bind, _) -> + | TMDefLet(bind, _) -> GenBindings cenv cgbuf eenv [ bind ] None eenv @@ -10029,7 +10026,7 @@ and GenModuleOrNamespaceContents cenv (cgbuf: CodeGenBuffer) qname lazyInitInfo let eenvinner = AddDebugImportsToEnv cenv eenv openDecls eenvinner - | TMDefDo (e, _) -> + | TMDefDo(e, _) -> GenExpr cenv cgbuf eenv e discard eenv @@ -10042,7 +10039,7 @@ and GenModuleBinding cenv (cgbuf: CodeGenBuffer) (qname: QualifiedNameOfFile) la match x with | ModuleOrNamespaceBinding.Binding bind -> GenLetRecBindings cenv cgbuf eenv ([ bind ], m) - | ModuleOrNamespaceBinding.Module (mspec, mdef) -> + | ModuleOrNamespaceBinding.Module(mspec, mdef) -> let hidden = IsHiddenTycon eenv.sigToImplRemapInfo mspec let eenvinner = @@ -10104,7 +10101,7 @@ and GenModuleBinding cenv (cgbuf: CodeGenBuffer) (qname: QualifiedNameOfFile) la /// Generate the namespace fragments in a single file and GenImplFile cenv (mgbuf: AssemblyBuilder) mainInfoOpt eenv (implFile: CheckedImplFileAfterOptimization) = - let (CheckedImplFile (qname, _, signature, contents, hasExplicitEntryPoint, isScript, anonRecdTypes, _)) = + let (CheckedImplFile(qname, _, signature, contents, hasExplicitEntryPoint, isScript, anonRecdTypes, _)) = implFile.ImplFile let optimizeDuringCodeGen = implFile.OptimizeDuringCodeGen @@ -10222,7 +10219,9 @@ and GenImplFile cenv (mgbuf: AssemblyBuilder) mainInfoOpt eenv (implFile: Checke seqpt )) - let cctorMethDef = mkILClassCtor (MethodBody.IL(lazy topCode)) + let cctorMethDef = + mkILClassCtor (MethodBody.IL(InterruptibleLazy.FromValue topCode)) + mgbuf.AddMethodDef(initClassTy.TypeRef, cctorMethDef) // Final file, implicit entry point. We generate no .cctor. @@ -10244,7 +10243,7 @@ and GenImplFile cenv (mgbuf: AssemblyBuilder) mainInfoOpt eenv (implFile: Checke ILMemberAccess.Public, [], mkILReturn ILType.Void, - MethodBody.IL(lazy topCode) + MethodBody.IL(InterruptibleLazy.FromValue topCode) ) mdef.With(isEntryPoint = true, customAttrs = ilAttrs) @@ -10255,7 +10254,9 @@ and GenImplFile cenv (mgbuf: AssemblyBuilder) mainInfoOpt eenv (implFile: Checke | None -> if doesSomething then // Add the cctor - let cctorMethDef = mkILClassCtor (MethodBody.IL(lazy topCode)) + let cctorMethDef = + mkILClassCtor (MethodBody.IL(InterruptibleLazy.FromValue topCode)) + mgbuf.AddMethodDef(initClassTy.TypeRef, cctorMethDef) // Commit the directed initializations @@ -10473,8 +10474,8 @@ and GenPrintingMethod cenv eenv methName ilThisTy m = [ if not g.useReflectionFreeCodeGen then match (eenv.valsInScope.TryFind g.sprintf_vref.Deref, eenv.valsInScope.TryFind g.new_format_vref.Deref) with - | Some (Lazy (Method (_, _, sprintfMethSpec, _, _, _, _, _, _, _, _, _))), - Some (Lazy (Method (_, _, newFormatMethSpec, _, _, _, _, _, _, _, _, _))) -> + | Some(InterruptibleLazy(Method(_, _, sprintfMethSpec, _, _, _, _, _, _, _, _, _))), + Some(InterruptibleLazy(Method(_, _, newFormatMethSpec, _, _, _, _, _, _, _, _, _))) -> // The type returned by the 'sprintf' call let funcTy = EraseClosures.mkILFuncTy cenv.ilxPubCloEnv ilThisTy g.ilg.typ_String @@ -10624,7 +10625,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = | Some _ -> let memberParentTypars, memberMethodTypars = match PartitionValRefTypars g vref with - | Some (_, memberParentTypars, memberMethodTypars, _, _) -> + | Some(_, memberParentTypars, memberMethodTypars, _, _) -> memberParentTypars, memberMethodTypars | None -> [], [] @@ -10788,7 +10789,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let ilFieldOffset = match TryFindFSharpAttribute g g.attrib_FieldOffsetAttribute fspec.FieldAttribs with - | Some (Attrib (_, _, [ AttribInt32Arg fieldOffset ], _, _, _, _)) -> Some fieldOffset + | Some(Attrib(_, _, [ AttribInt32Arg fieldOffset ], _, _, _, _)) -> Some fieldOffset | Some attrib -> errorR (Error(FSComp.SR.ilFieldOffsetAttributeCouldNotBeDecoded (), attrib.Range)) None @@ -10957,11 +10958,9 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = yield ilMethodDef.WithSpecialName if generateDebugDisplayAttribute then - let (|Lazy|) (x: Lazy<_>) = x.Force() - match (eenv.valsInScope.TryFind g.sprintf_vref.Deref, eenv.valsInScope.TryFind g.new_format_vref.Deref) with - | Some (Lazy (Method (_, _, sprintfMethSpec, _, _, _, _, _, _, _, _, _))), - Some (Lazy (Method (_, _, newFormatMethSpec, _, _, _, _, _, _, _, _, _))) -> + | Some(InterruptibleLazy(Method(_, _, sprintfMethSpec, _, _, _, _, _, _, _, _, _))), + Some(InterruptibleLazy(Method(_, _, newFormatMethSpec, _, _, _, _, _, _, _, _, _))) -> // The type returned by the 'sprintf' call let funcTy = EraseClosures.mkILFuncTy cenv.ilxPubCloEnv ilThisTy g.ilg.typ_String // Give the instantiation of the printf format object, i.e. a Format`5 object compatible with StringFormat @@ -11041,7 +11040,8 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let fieldNamesAndTypes = relevantFields - |> List.map (fun (_, ilFieldName, _, _, _, ilPropType, _, fspec) -> (fspec.LogicalName, ilFieldName, ilPropType)) + |> List.map (fun (_, ilFieldName, _, _, _, ilPropType, _, fspec) -> + (fspec.LogicalName, ilFieldName, ilPropType)) let isStructRecord = tycon.IsStructRecordOrUnionTycon @@ -11087,7 +11087,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let parameters, ret = // When "type delegateTy = delegate of unit -> returnTy", // suppress the unit arg from delegate .Invoke vslot. - let (TSlotSig (nm, ty, ctps, mtps, paraml, returnTy)) = slotSig + let (TSlotSig(nm, ty, ctps, mtps, paraml, returnTy)) = slotSig let paraml = match paraml with @@ -11201,7 +11201,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let tdLayout, tdEncoding = match TryFindFSharpAttribute g g.attrib_StructLayoutAttribute tycon.Attribs with - | Some (Attrib (_, _, [ AttribInt32Arg layoutKind ], namedArgs, _, _, _)) -> + | Some(Attrib(_, _, [ AttribInt32Arg layoutKind ], namedArgs, _, _, _)) -> let decoder = AttributeDecoder namedArgs let ilPack = decoder.FindInt32 "Pack" 0x0 let ilSize = decoder.FindInt32 "Size" 0x0 @@ -11230,7 +11230,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = | _ -> ILTypeDefLayout.Auto tdLayout, tdEncoding - | Some (Attrib (_, _, _, _, _, _, m)) -> + | Some(Attrib(_, _, _, _, _, _, m)) -> errorR (Error(FSComp.SR.ilStructLayoutAttributeCouldNotBeDecoded (), m)) ILTypeDefLayout.Auto, ILDefaultPInvokeEncoding.Ansi @@ -11588,7 +11588,7 @@ and GenExnDef cenv mgbuf eenv m (exnc: Tycon) = let CodegenAssembly cenv eenv mgbuf implFiles = match List.tryFrontAndBack implFiles with | None -> () - | Some (firstImplFiles, lastImplFile) -> + | Some(firstImplFiles, lastImplFile) -> let eenv = List.fold (GenImplFile cenv mgbuf None) eenv firstImplFiles let eenv = GenImplFile cenv mgbuf cenv.options.mainMethodInfo eenv lastImplFile @@ -11783,7 +11783,7 @@ let defaultOf = let gminfo = lazy (match <@@ Unchecked.defaultof @@> with - | Quotations.Patterns.Call (_, minfo, _) -> minfo.GetGenericMethodDefinition() + | Quotations.Patterns.Call(_, minfo, _) -> minfo.GetGenericMethodDefinition() | _ -> failwith "unexpected failure decoding quotation at ilxgen startup") fun ty -> gminfo.Value.MakeGenericMethod([| ty |]).Invoke(null, [||]) @@ -11801,7 +11801,7 @@ let LookupGeneratedValue (cenv: cenv) (ctxt: ExecutionContext) eenv (v: Val) = ctxt.LookupType ilTy // Lookup the compiled v value (as an object). match StorageForVal v.Range v eenv with - | StaticPropertyWithField (fspec, _, hasLiteralAttr, ilContainerTy, _, _, ilGetterMethRef, _, _) -> + | StaticPropertyWithField(fspec, _, hasLiteralAttr, ilContainerTy, _, _, ilGetterMethRef, _, _) -> let obj = if hasLiteralAttr then let staticTy = ctxt.LookupTypeRef fspec.DeclaringTypeRef @@ -11819,7 +11819,7 @@ let LookupGeneratedValue (cenv: cenv) (ctxt: ExecutionContext) eenv (v: Val) = Some(obj, objTyp ()) - | StaticProperty (ilGetterMethSpec, _) -> + | StaticProperty(ilGetterMethSpec, _) -> let obj = let staticTy = ctxt.LookupTypeRef ilGetterMethSpec.MethodRef.DeclaringTypeRef // We can't call .Invoke on the ILMethodRef's MethodInfo, @@ -11847,7 +11847,7 @@ let LookupGeneratedValue (cenv: cenv) (ctxt: ExecutionContext) eenv (v: Val) = let SetGeneratedValue (ctxt: ExecutionContext) eenv isForced (v: Val) (value: obj) = try match StorageForVal v.Range v eenv with - | StaticPropertyWithField (fspec, _, hasLiteralAttr, _, _, _, _f, ilSetterMethRef, _) -> + | StaticPropertyWithField(fspec, _, hasLiteralAttr, _, _, _, _f, ilSetterMethRef, _) -> if not hasLiteralAttr && (v.IsMutable || isForced) then if isForced then let staticTy = ctxt.LookupTypeRef fspec.DeclaringTypeRef @@ -11874,7 +11874,7 @@ let SetGeneratedValue (ctxt: ExecutionContext) eenv isForced (v: Val) (value: ob let ClearGeneratedValue (ctxt: ExecutionContext) eenv (v: Val) = try match StorageForVal v.Range v eenv with - | StaticPropertyWithField (fspec, _, hasLiteralAttr, _, _, _, _ilGetterMethRef, _ilSetterMethRef, _) -> + | StaticPropertyWithField(fspec, _, hasLiteralAttr, _, _, _, _ilGetterMethRef, _ilSetterMethRef, _) -> if not hasLiteralAttr && v.IsMutable then let ty = ctxt.LookupType fspec.ActualType SetGeneratedValue ctxt eenv false v (defaultOf ty) @@ -11946,9 +11946,9 @@ type IlxAssemblyGenerator(amap: ImportMap, tcGlobals: TcGlobals, tcVal: Constrai [| for impl in impls do - let (CheckedImplFile (namedDebugPointsForInlinedCode = dps)) = impl.ImplFile + let (CheckedImplFile(namedDebugPointsForInlinedCode = dps)) = impl.ImplFile - for KeyValue (k, v) in dps do + for KeyValue(k, v) in dps do yield (k, v) |] diff --git a/src/fcs-fable/src/Compiler/CodeGen/IlxGenSupport.fs b/src/fcs-fable/src/Compiler/CodeGen/IlxGenSupport.fs index 6fd2074c4e..a0fa11a4a3 100644 --- a/src/fcs-fable/src/Compiler/CodeGen/IlxGenSupport.fs +++ b/src/fcs-fable/src/Compiler/CodeGen/IlxGenSupport.fs @@ -38,6 +38,8 @@ let mkLocalPrivateAttributeWithDefaultConstructor (g: TcGlobals, name: string) = g.AddMethodGeneratedAttributes(mkILNonGenericEmptyCtor (g.ilg.typ_Attribute, None, None)) ] + let ilCustomAttrs = mkILCustomAttrsFromArray [| g.CompilerGeneratedAttribute |] + mkILGenericClass ( name, ILTypeDefAccess.Private, @@ -49,7 +51,7 @@ let mkLocalPrivateAttributeWithDefaultConstructor (g: TcGlobals, name: string) = emptyILTypeDefs, emptyILProperties, emptyILEvents, - emptyILCustomAttrs, + ilCustomAttrs, ILTypeInit.BeforeField ) @@ -104,6 +106,8 @@ let mkLocalPrivateAttributeWithPropertyConstructors (g: TcGlobals, name: string, ) ) + let ilCustomAttrs = mkILCustomAttrsFromArray [| g.CompilerGeneratedAttribute |] + mkILGenericClass ( name, ILTypeDefAccess.Private, @@ -118,7 +122,7 @@ let mkLocalPrivateAttributeWithPropertyConstructors (g: TcGlobals, name: string, emptyILTypeDefs, mkILProperties (ilElements |> List.map (fun (_, _, property, _) -> property)), emptyILEvents, - emptyILCustomAttrs, + ilCustomAttrs, ILTypeInit.BeforeField ) diff --git a/src/fcs-fable/src/Compiler/DependencyManager/DependencyProvider.fs b/src/fcs-fable/src/Compiler/DependencyManager/DependencyProvider.fs index f80969b388..329dd9bd29 100644 --- a/src/fcs-fable/src/Compiler/DependencyManager/DependencyProvider.fs +++ b/src/fcs-fable/src/Compiler/DependencyManager/DependencyProvider.fs @@ -481,12 +481,8 @@ type ReflectionDependencyManagerProvider /// Provides DependencyManagement functions. /// Class is IDisposable type DependencyProvider - internal - ( - assemblyProbingPaths: AssemblyResolutionProbe option, - nativeProbingRoots: NativeResolutionProbe option, - useResultsCache: bool - ) = + internal (assemblyProbingPaths: AssemblyResolutionProbe option, nativeProbingRoots: NativeResolutionProbe option, useResultsCache: bool) + = // Note: creating a NativeDllResolveHandler currently installs process-wide handlers let dllResolveHandler = new NativeDllResolveHandler(nativeProbingRoots) @@ -709,7 +705,7 @@ type DependencyProvider | Ok res -> dllResolveHandler.RefreshPathsInEnvironment(res.Roots) res - | Error (errorNumber, errorData) -> + | Error(errorNumber, errorData) -> reportError.Invoke(ErrorReportType.Error, errorNumber, errorData) ReflectionDependencyManagerProvider.MakeResultFromFields(false, arrEmpty, arrEmpty, seqEmpty, seqEmpty, seqEmpty) diff --git a/src/fcs-fable/src/Compiler/DependencyManager/NativeDllResolveHandler.fs b/src/fcs-fable/src/Compiler/DependencyManager/NativeDllResolveHandler.fs index f11d46499a..12aa28c48c 100644 --- a/src/fcs-fable/src/Compiler/DependencyManager/NativeDllResolveHandler.fs +++ b/src/fcs-fable/src/Compiler/DependencyManager/NativeDllResolveHandler.fs @@ -73,7 +73,7 @@ type internal NativeDllResolveHandlerCoreClr(nativeProbingRoots: NativeResolutio let nativeLibraryType: Type = Type.GetType("System.Runtime.InteropServices.NativeLibrary, System.Runtime.InteropServices", false) - nativeLibraryType.GetMethod("TryLoad", [| typeof; typeof.MakeByRefType () |]) + nativeLibraryType.GetMethod("TryLoad", [| typeof; typeof.MakeByRefType() |]) let loadNativeLibrary path = let arguments = [| path :> obj; IntPtr.Zero :> obj |] diff --git a/src/fcs-fable/src/Compiler/Driver/CompilerConfig.fs b/src/fcs-fable/src/Compiler/Driver/CompilerConfig.fs index 3012ea0394..028277ecb9 100644 --- a/src/fcs-fable/src/Compiler/Driver/CompilerConfig.fs +++ b/src/fcs-fable/src/Compiler/Driver/CompilerConfig.fs @@ -113,7 +113,7 @@ let GetWarningNumber (m, warningNumber: string) = // anything else is ignored None if Char.IsDigit(warningNumber[0]) then Some(int32 warningNumber) - elif warningNumber.StartsWithOrdinal("FS") = true then + elif warningNumber.StartsWithOrdinal "FS" then raise (ArgumentException()) else None @@ -290,11 +290,11 @@ and IProjectReference = type AssemblyReference = | AssemblyReference of range: range * text: string * projectReference: IProjectReference option - member x.Range = (let (AssemblyReference (m, _, _)) = x in m) + member x.Range = (let (AssemblyReference(m, _, _)) = x in m) - member x.Text = (let (AssemblyReference (_, text, _)) = x in text) + member x.Text = (let (AssemblyReference(_, text, _)) = x in text) - member x.ProjectReference = (let (AssemblyReference (_, _, contents)) = x in contents) + member x.ProjectReference = (let (AssemblyReference(_, _, contents)) = x in contents) member x.SimpleAssemblyNameIs name = (String.Compare(FileSystemUtils.fileNameWithoutExtensionWithValidate false x.Text, name, StringComparison.OrdinalIgnoreCase) = 0) @@ -897,7 +897,7 @@ type TcConfigBuilder = member tcConfigB.DecideNames sourceFiles = use _ = UseBuildPhase BuildPhase.Parameter - if sourceFiles = [] then + if List.isEmpty sourceFiles then errorR (Error(FSComp.SR.buildNoInputsSpecified (), rangeCmdArgs)) let ext () = @@ -1264,7 +1264,7 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = | Some path when FileSystem.DirectoryExistsShim(path) -> yield path | _ -> () ] - with e -> + with RecoverableException e -> errorRecovery e range0 [] @@ -1467,7 +1467,7 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = None else Some(m, path) - with e -> + with RecoverableException e -> errorRecovery e m None diff --git a/src/fcs-fable/src/Compiler/Driver/CompilerDiagnostics.fs b/src/fcs-fable/src/Compiler/Driver/CompilerDiagnostics.fs index 6d3644c9fa..647da59a75 100644 --- a/src/fcs-fable/src/Compiler/Driver/CompilerDiagnostics.fs +++ b/src/fcs-fable/src/Compiler/Driver/CompilerDiagnostics.fs @@ -81,130 +81,130 @@ type Exception with member exn.DiagnosticRange = match exn with - | ArgumentsInSigAndImplMismatch (_, implArg) -> Some implArg.idRange - | ErrorFromAddingConstraint (_, exn2, _) -> exn2.DiagnosticRange + | ArgumentsInSigAndImplMismatch(_, implArg) -> Some implArg.idRange + | ErrorFromAddingConstraint(_, exn2, _) -> exn2.DiagnosticRange #if !NO_TYPEPROVIDERS | TypeProviders.ProvidedTypeResolutionNoRange exn -> exn.DiagnosticRange - | TypeProviders.ProvidedTypeResolution (m, _) + | TypeProviders.ProvidedTypeResolution(m, _) #endif - | ReservedKeyword (_, m) - | IndentationProblem (_, m) - | ErrorFromAddingTypeEquation (_, _, _, _, _, m) - | ErrorFromApplyingDefault (_, _, _, _, _, m) - | ErrorsFromAddingSubsumptionConstraint (_, _, _, _, _, _, m) - | FunctionExpected (_, _, m) - | BakedInMemberConstraintName (_, m) - | StandardOperatorRedefinitionWarning (_, m) + | ReservedKeyword(_, m) + | IndentationProblem(_, m) + | ErrorFromAddingTypeEquation(_, _, _, _, _, m) + | ErrorFromApplyingDefault(_, _, _, _, _, m) + | ErrorsFromAddingSubsumptionConstraint(_, _, _, _, _, _, m) + | FunctionExpected(_, _, m) + | BakedInMemberConstraintName(_, m) + | StandardOperatorRedefinitionWarning(_, m) | BadEventTransformation m | ParameterlessStructCtor m - | FieldNotMutable (_, _, m) - | Recursion (_, _, _, _, m) - | InvalidRuntimeCoercion (_, _, _, m) - | IndeterminateRuntimeCoercion (_, _, _, m) - | IndeterminateStaticCoercion (_, _, _, m) - | StaticCoercionShouldUseBox (_, _, _, m) - | CoercionTargetSealed (_, _, m) + | FieldNotMutable(_, _, m) + | Recursion(_, _, _, _, m) + | InvalidRuntimeCoercion(_, _, _, m) + | IndeterminateRuntimeCoercion(_, _, _, m) + | IndeterminateStaticCoercion(_, _, _, m) + | StaticCoercionShouldUseBox(_, _, _, m) + | CoercionTargetSealed(_, _, m) | UpcastUnnecessary m - | QuotationTranslator.IgnoringPartOfQuotedTermWarning (_, m) + | QuotationTranslator.IgnoringPartOfQuotedTermWarning(_, m) | TypeTestUnnecessary m - | RuntimeCoercionSourceSealed (_, _, m) - | OverrideDoesntOverride (_, _, _, _, _, m) + | RuntimeCoercionSourceSealed(_, _, m) + | OverrideDoesntOverride(_, _, _, _, _, m) | UnionPatternsBindDifferentNames m - | UnionCaseWrongArguments (_, _, _, m) + | UnionCaseWrongArguments(_, _, _, m) | TypeIsImplicitlyAbstract m - | RequiredButNotSpecified (_, _, _, _, m) - | FunctionValueUnexpected (_, _, m) - | UnitTypeExpected (_, _, m) - | UnitTypeExpectedWithEquality (_, _, m) - | UnitTypeExpectedWithPossiblePropertySetter (_, _, _, _, m) - | UnitTypeExpectedWithPossibleAssignment (_, _, _, _, m) + | RequiredButNotSpecified(_, _, _, _, m) + | FunctionValueUnexpected(_, _, m) + | UnitTypeExpected(_, _, m) + | UnitTypeExpectedWithEquality(_, _, m) + | UnitTypeExpectedWithPossiblePropertySetter(_, _, _, _, m) + | UnitTypeExpectedWithPossibleAssignment(_, _, _, _, m) | UseOfAddressOfOperator m | DeprecatedThreadStaticBindingWarning m - | NonUniqueInferredAbstractSlot (_, _, _, _, _, m) - | DefensiveCopyWarning (_, m) + | NonUniqueInferredAbstractSlot(_, _, _, _, _, m) + | DefensiveCopyWarning(_, m) | LetRecCheckedAtRuntime m | UpperCaseIdentifierInPattern m | NotUpperCaseConstructor m | NotUpperCaseConstructorWithoutRQA m - | RecursiveUseCheckedAtRuntime (_, _, m) - | LetRecEvaluatedOutOfOrder (_, _, _, m) - | DiagnosticWithText (_, _, m) - | DiagnosticWithSuggestions (_, _, m, _, _) - | DiagnosticEnabledWithLanguageFeature (_, _, m, _) - | SyntaxError (_, m) - | InternalError (_, m) - | InternalException (_, _, m) - | InterfaceNotRevealed (_, _, m) - | WrappedError (_, m) - | PatternMatchCompilation.MatchIncomplete (_, _, m) - | PatternMatchCompilation.EnumMatchIncomplete (_, _, m) + | RecursiveUseCheckedAtRuntime(_, _, m) + | LetRecEvaluatedOutOfOrder(_, _, _, m) + | DiagnosticWithText(_, _, m) + | DiagnosticWithSuggestions(_, _, m, _, _) + | DiagnosticEnabledWithLanguageFeature(_, _, m, _) + | SyntaxError(_, m) + | InternalError(_, m) + | InternalException(_, _, m) + | InterfaceNotRevealed(_, _, m) + | WrappedError(_, m) + | PatternMatchCompilation.MatchIncomplete(_, _, m) + | PatternMatchCompilation.EnumMatchIncomplete(_, _, m) | PatternMatchCompilation.RuleNeverMatched m - | ValNotMutable (_, _, m) - | ValNotLocal (_, _, m) - | MissingFields (_, m) + | ValNotMutable(_, _, m) + | ValNotLocal(_, _, m) + | MissingFields(_, m) | OverrideInIntrinsicAugmentation m | IntfImplInIntrinsicAugmentation m | OverrideInExtrinsicAugmentation m | IntfImplInExtrinsicAugmentation m - | ValueRestriction (_, _, _, _, _, m) - | LetRecUnsound (_, _, m) - | ObsoleteError (_, m) - | ObsoleteWarning (_, m) - | Experimental (_, m) + | ValueRestriction(_, _, _, _, _, m) + | LetRecUnsound(_, _, m) + | ObsoleteError(_, m) + | ObsoleteWarning(_, m) + | Experimental(_, m) | PossibleUnverifiableCode m - | UserCompilerMessage (_, _, m) - | Deprecated (_, m) + | UserCompilerMessage(_, _, m) + | Deprecated(_, m) | LibraryUseOnly m - | FieldsFromDifferentTypes (_, _, _, m) + | FieldsFromDifferentTypes(_, _, _, m) | IndeterminateType m - | TyconBadArgs (_, _, _, m) -> Some m + | TyconBadArgs(_, _, _, m) -> Some m - | FieldNotContained (_, _, _, _, arf, _, _) -> Some arf.Range - | ValueNotContained (_, _, _, aval, _, _) -> Some aval.Range - | UnionCaseNotContained (_, _, _, aval, _, _) -> Some aval.Id.idRange - | FSharpExceptionNotContained (_, _, aexnc, _, _) -> Some aexnc.Range + | FieldNotContained(_, _, _, _, arf, _, _) -> Some arf.Range + | ValueNotContained(_, _, _, aval, _, _) -> Some aval.Range + | UnionCaseNotContained(_, _, _, aval, _, _) -> Some aval.Id.idRange + | FSharpExceptionNotContained(_, _, aexnc, _, _) -> Some aexnc.Range | VarBoundTwice id - | UndefinedName (_, _, id, _) -> Some id.idRange + | UndefinedName(_, _, id, _) -> Some id.idRange - | Duplicate (_, _, m) - | NameClash (_, _, _, m, _, _, _) - | UnresolvedOverloading (_, _, _, m) - | UnresolvedConversionOperator (_, _, _, m) + | Duplicate(_, _, m) + | NameClash(_, _, _, m, _, _, _) + | UnresolvedOverloading(_, _, _, m) + | UnresolvedConversionOperator(_, _, _, m) | VirtualAugmentationOnNullValuedType m | NonVirtualAugmentationOnNullValuedType m - | NonRigidTypar (_, _, _, _, _, m) - | ConstraintSolverTupleDiffLengths (_, _, _, _, m, _) - | ConstraintSolverInfiniteTypes (_, _, _, _, m, _) - | ConstraintSolverMissingConstraint (_, _, _, m, _) - | ConstraintSolverTypesNotInEqualityRelation (_, _, _, m, _, _) - | ConstraintSolverError (_, m, _) - | ConstraintSolverTypesNotInSubsumptionRelation (_, _, _, m, _) - | SelfRefObjCtor (_, m) -> Some m + | NonRigidTypar(_, _, _, _, _, m) + | ConstraintSolverTupleDiffLengths(_, _, _, _, m, _) + | ConstraintSolverInfiniteTypes(_, _, _, _, m, _) + | ConstraintSolverMissingConstraint(_, _, _, m, _) + | ConstraintSolverTypesNotInEqualityRelation(_, _, _, m, _, _) + | ConstraintSolverError(_, m, _) + | ConstraintSolverTypesNotInSubsumptionRelation(_, _, _, m, _) + | SelfRefObjCtor(_, m) -> Some m - | NotAFunction (_, _, mfun, _) -> Some mfun + | NotAFunction(_, _, mfun, _) -> Some mfun - | NotAFunctionButIndexer (_, _, _, mfun, _, _) -> Some mfun + | NotAFunctionButIndexer(_, _, _, mfun, _, _) -> Some mfun | IllegalFileNameChar _ -> Some rangeCmdArgs - | UnresolvedReferenceError (_, m) - | UnresolvedPathReference (_, _, m) - | DeprecatedCommandLineOptionFull (_, m) - | DeprecatedCommandLineOptionForHtmlDoc (_, m) - | DeprecatedCommandLineOptionSuggestAlternative (_, _, m) - | DeprecatedCommandLineOptionNoDescription (_, m) - | InternalCommandLineOption (_, m) + | UnresolvedReferenceError(_, m) + | UnresolvedPathReference(_, _, m) + | DeprecatedCommandLineOptionFull(_, m) + | DeprecatedCommandLineOptionForHtmlDoc(_, m) + | DeprecatedCommandLineOptionSuggestAlternative(_, _, m) + | DeprecatedCommandLineOptionNoDescription(_, m) + | InternalCommandLineOption(_, m) | HashIncludeNotAllowedInNonScript m | HashReferenceNotAllowedInNonScript m | HashDirectiveNotAllowedInNonScript m - | FileNameNotResolved (_, _, m) - | LoadedSourceNotFoundIgnoring (_, m) - | MSBuildReferenceResolutionWarning (_, _, m) - | MSBuildReferenceResolutionError (_, _, m) - | AssemblyNotResolved (_, m) - | HashLoadedSourceHasIssues (_, _, _, m) + | FileNameNotResolved(_, _, m) + | LoadedSourceNotFoundIgnoring(_, m) + | MSBuildReferenceResolutionWarning(_, _, m) + | MSBuildReferenceResolutionError(_, _, m) + | AssemblyNotResolved(_, m) + | HashLoadedSourceHasIssues(_, _, _, m) | HashLoadedScriptConsideredSource m -> Some m #if !FABLE_COMPILER // Strip TargetInvocationException wrappers @@ -283,7 +283,7 @@ type Exception with | CoercionTargetSealed _ -> 59 | OverrideInIntrinsicAugmentation _ -> 60 | NonVirtualAugmentationOnNullValuedType _ -> 61 - | UserCompilerMessage (_, n, _) -> n + | UserCompilerMessage(_, n, _) -> n | FSharpExceptionNotContained _ -> 63 | NonRigidTypar _ -> 64 // 65 cannot be reused @@ -337,16 +337,16 @@ type Exception with // Strip TargetInvocationException wrappers | :? TargetInvocationException as e -> e.InnerException.DiagnosticNumber #endif - | WrappedError (e, _) -> e.DiagnosticNumber - | DiagnosticWithText (n, _, _) -> n - | DiagnosticWithSuggestions (n, _, _, _, _) -> n - | DiagnosticEnabledWithLanguageFeature (n, _, _, _) -> n + | WrappedError(e, _) -> e.DiagnosticNumber + | DiagnosticWithText(n, _, _) -> n + | DiagnosticWithSuggestions(n, _, _, _, _) -> n + | DiagnosticEnabledWithLanguageFeature(n, _, _, _) -> n | Failure _ -> 192 - | IllegalFileNameChar (fileName, invalidChar) -> fst (FSComp.SR.buildUnexpectedFileNameCharacter (fileName, string invalidChar)) + | IllegalFileNameChar(fileName, invalidChar) -> fst (FSComp.SR.buildUnexpectedFileNameCharacter (fileName, string invalidChar)) #if !NO_TYPEPROVIDERS | :? TypeProviderError as e -> e.Number #endif - | ErrorsFromAddingSubsumptionConstraint (_, _, _, _, _, ContextInfo.DowncastUsedInsteadOfUpcast _, _) -> + | ErrorsFromAddingSubsumptionConstraint(_, _, _, _, _, ContextInfo.DowncastUsedInsteadOfUpcast _, _) -> fst (FSComp.SR.considerUpcast ("", "")) | _ -> 193 @@ -363,9 +363,9 @@ type PhasedDiagnostic with | LetRecEvaluatedOutOfOrder _ | DefensiveCopyWarning _ -> 5 - | DiagnosticWithText (n, _, _) - | DiagnosticEnabledWithLanguageFeature (n, _, _, _) - | DiagnosticWithSuggestions (n, _, _, _, _) -> + | DiagnosticWithText(n, _, _) + | DiagnosticEnabledWithLanguageFeature(n, _, _, _) + | DiagnosticWithSuggestions(n, _, _, _, _) -> // 1178, tcNoComparisonNeeded1, "The struct, record or union type '%s' is not structurally comparable because the type parameter %s does not satisfy the 'comparison' constraint..." // 1178, tcNoComparisonNeeded2, "The struct, record or union type '%s' is not structurally comparable because the type '%s' does not satisfy the 'comparison' constraint...." // 1178, tcNoEqualityNeeded1, "The struct, record or union type '%s' does not support structural equality because the type parameter %s does not satisfy the 'equality' constraint..." @@ -393,11 +393,13 @@ type PhasedDiagnostic with | 3390 -> false // xmlDocBadlyFormed - off by default | 3395 -> false // tcImplicitConversionUsedForMethodArg - off by default | 3559 -> false // typrelNeverRefinedAwayFromTop - off by default + | 3560 -> false // tcCopyAndUpdateRecordChangesAllFields - off by default | 3579 -> false // alwaysUseTypedStringInterpolation - off by default | 3582 -> false // infoIfFunctionShadowsUnionCase - off by default + | 3570 -> false // tcAmbiguousDiscardDotLambda - off by default | _ -> match x.Exception with - | DiagnosticEnabledWithLanguageFeature (_, _, _, enabled) -> enabled + | DiagnosticEnabledWithLanguageFeature(_, _, _, enabled) -> enabled | _ -> (severity = FSharpDiagnosticSeverity.Info && level > 0) || (severity = FSharpDiagnosticSeverity.Warning && level >= x.WarningLevel) @@ -540,6 +542,8 @@ module OldStyleMessages = let OverrideDoesntOverride2E () = Message("OverrideDoesntOverride2", "%s") let OverrideDoesntOverride3E () = Message("OverrideDoesntOverride3", "%s") let OverrideDoesntOverride4E () = Message("OverrideDoesntOverride4", "%s") + let OverrideShouldBeStatic () = Message("OverrideShouldBeStatic", "") + let OverrideShouldBeInstance () = Message("OverrideShouldBeInstance", "") let UnionCaseWrongArgumentsE () = Message("UnionCaseWrongArguments", "%d%d") let UnionPatternsBindDifferentNamesE () = Message("UnionPatternsBindDifferentNames", "") let RequiredButNotSpecifiedE () = Message("RequiredButNotSpecified", "%s%s%s") @@ -648,7 +652,7 @@ let OutputNameSuggestions (os: StringBuilder) suggestNames suggestionsF idText = let OutputTypesNotInEqualityRelationContextInfo contextInfo ty1 ty2 m (os: StringBuilder) fallback = match contextInfo with | ContextInfo.IfExpression range when equals range m -> os.AppendString(FSComp.SR.ifExpression (ty1, ty2)) - | ContextInfo.CollectionElement (isArray, range) when equals range m -> + | ContextInfo.CollectionElement(isArray, range) when equals range m -> if isArray then os.AppendString(FSComp.SR.arrayElementHasWrongType (ty1, ty2)) else @@ -666,13 +670,13 @@ type Exception with match exn with // TODO: this is now unused...? - | ConstraintSolverTupleDiffLengths (_, _, tl1, tl2, m, m2) -> + | ConstraintSolverTupleDiffLengths(_, _, tl1, tl2, m, m2) -> os.AppendString(ConstraintSolverTupleDiffLengthsE().Format tl1.Length tl2.Length) if m.StartLine <> m2.StartLine then os.AppendString(SeeAlsoE().Format(stringOfRange m)) - | ConstraintSolverInfiniteTypes (denv, contextInfo, ty1, ty2, m, m2) -> + | ConstraintSolverInfiniteTypes(denv, contextInfo, ty1, ty2, m, m2) -> // REVIEW: consider if we need to show _cxs (the type parameter constraints) let ty1, ty2, _cxs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.AppendString(ConstraintSolverInfiniteTypesE().Format ty1 ty2) @@ -685,7 +689,7 @@ type Exception with if m.StartLine <> m2.StartLine then os.AppendString(SeeAlsoE().Format(stringOfRange m)) - | ConstraintSolverMissingConstraint (denv, tpr, tpc, m, m2) -> + | ConstraintSolverMissingConstraint(denv, tpr, tpc, m, m2) -> os.AppendString( ConstraintSolverMissingConstraintE() .Format(NicePrint.stringOfTyparConstraint denv (tpr, tpc)) @@ -694,7 +698,7 @@ type Exception with if m.StartLine <> m2.StartLine then os.AppendString(SeeAlsoE().Format(stringOfRange m)) - | ConstraintSolverTypesNotInEqualityRelation (denv, (TType_measure _ as ty1), (TType_measure _ as ty2), m, m2, _) -> + | ConstraintSolverTypesNotInEqualityRelation(denv, (TType_measure _ as ty1), (TType_measure _ as ty2), m, m2, _) -> // REVIEW: consider if we need to show _cxs (the type parameter constraints) let ty1, ty2, _cxs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 @@ -703,7 +707,7 @@ type Exception with if m.StartLine <> m2.StartLine then os.AppendString(SeeAlsoE().Format(stringOfRange m)) - | ConstraintSolverTypesNotInEqualityRelation (denv, ty1, ty2, m, m2, contextInfo) -> + | ConstraintSolverTypesNotInEqualityRelation(denv, ty1, ty2, m, m2, contextInfo) -> // REVIEW: consider if we need to show _cxs (the type parameter constraints) let ty1, ty2, _cxs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 @@ -713,7 +717,7 @@ type Exception with if m.StartLine <> m2.StartLine then os.AppendString(SeeAlsoE().Format(stringOfRange m)) - | ConstraintSolverTypesNotInSubsumptionRelation (denv, ty1, ty2, m, m2) -> + | ConstraintSolverTypesNotInSubsumptionRelation(denv, ty1, ty2, m, m2) -> // REVIEW: consider if we need to show _cxs (the type parameter constraints) let ty1, ty2, cxs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.AppendString(ConstraintSolverTypesNotInSubsumptionRelationE().Format ty2 ty1 cxs) @@ -721,13 +725,13 @@ type Exception with if m.StartLine <> m2.StartLine then os.AppendString(SeeAlsoE().Format(stringOfRange m2)) - | ConstraintSolverError (msg, m, m2) -> + | ConstraintSolverError(msg, m, m2) -> os.AppendString msg if m.StartLine <> m2.StartLine then os.AppendString(SeeAlsoE().Format(stringOfRange m2)) - | ErrorFromAddingTypeEquation (g, denv, ty1, ty2, ConstraintSolverTypesNotInEqualityRelation (_, ty1b, ty2b, m, _, contextInfo), _) when + | ErrorFromAddingTypeEquation(g, denv, ty1, ty2, ConstraintSolverTypesNotInEqualityRelation(_, ty1b, ty2b, m, _, contextInfo), _) when typeEquiv g ty1 ty1b && typeEquiv g ty2 ty2b -> let ty1, ty2, tpcs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 @@ -742,7 +746,7 @@ type Exception with os.AppendString(Environment.NewLine + FSComp.SR.derefInsteadOfNot ()) | _ -> os.AppendString(ErrorFromAddingTypeEquation1E().Format ty2 ty1 tpcs)) - | ErrorFromAddingTypeEquation (_, _, _, _, (ConstraintSolverTypesNotInEqualityRelation (_, _, _, _, _, contextInfo) as e), _) when + | ErrorFromAddingTypeEquation(_, _, _, _, (ConstraintSolverTypesNotInEqualityRelation(_, _, _, _, _, contextInfo) as e), _) when (match contextInfo with | ContextInfo.NoContext -> false | _ -> true) @@ -753,7 +757,7 @@ type Exception with | ErrorFromAddingTypeEquation(error = ConstraintSolverError _ as e) -> e.Output(os, suggestNames) - | ErrorFromAddingTypeEquation (_g, denv, ty1, ty2, ConstraintSolverTupleDiffLengths (_, contextInfo, tl1, tl2, _, _), m) -> + | ErrorFromAddingTypeEquation(_g, denv, ty1, ty2, ConstraintSolverTupleDiffLengths(_, contextInfo, tl1, tl2, _, _), m) -> let ty1, ty2, tpcs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 let messageArgs = tl1.Length, ty1, tl2.Length, ty2 @@ -764,14 +768,14 @@ type Exception with os.AppendString(FSComp.SR.elseBranchHasWrongTypeTuple messageArgs) | ContextInfo.FollowingPatternMatchClause range when equals range m -> os.AppendString(FSComp.SR.followingPatternMatchClauseHasWrongTypeTuple messageArgs) - | ContextInfo.CollectionElement (isArray, range) when equals range m -> + | ContextInfo.CollectionElement(isArray, range) when equals range m -> if isArray then os.AppendString(FSComp.SR.arrayElementHasWrongTypeTuple messageArgs) else os.AppendString(FSComp.SR.listElementHasWrongTypeTuple messageArgs) | _ -> os.AppendString(ErrorFromAddingTypeEquationTuplesE().Format tl1.Length ty1 tl2.Length ty2 tpcs) - | ErrorFromAddingTypeEquation (g, denv, ty1, ty2, e, _) -> + | ErrorFromAddingTypeEquation(g, denv, ty1, ty2, e, _) -> if not (typeEquiv g ty1 ty2) then let ty1, ty2, tpcs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 @@ -780,13 +784,13 @@ type Exception with e.Output(os, suggestNames) - | ErrorFromApplyingDefault (_, denv, _, defaultType, e, _) -> + | ErrorFromApplyingDefault(_, denv, _, defaultType, e, _) -> let defaultType = NicePrint.minimalStringOfType denv defaultType os.AppendString(ErrorFromApplyingDefault1E().Format defaultType) e.Output(os, suggestNames) os.AppendString(ErrorFromApplyingDefault2E().Format) - | ErrorsFromAddingSubsumptionConstraint (g, denv, ty1, ty2, e, contextInfo, _) -> + | ErrorsFromAddingSubsumptionConstraint(g, denv, ty1, ty2, e, contextInfo, _) -> match contextInfo with | ContextInfo.DowncastUsedInsteadOfUpcast isOperator -> let ty1, ty2, _ = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 @@ -812,17 +816,17 @@ type Exception with | NotUpperCaseConstructorWithoutRQA _ -> os.AppendString(NotUpperCaseConstructorWithoutRQAE().Format) - | ErrorFromAddingConstraint (_, e, _) -> e.Output(os, suggestNames) + | ErrorFromAddingConstraint(_, e, _) -> e.Output(os, suggestNames) #if !NO_TYPEPROVIDERS | TypeProviders.ProvidedTypeResolutionNoRange e - | TypeProviders.ProvidedTypeResolution (_, e) -> e.Output(os, suggestNames) + | TypeProviders.ProvidedTypeResolution(_, e) -> e.Output(os, suggestNames) | :? TypeProviderError as e -> os.AppendString(e.ContextualErrorMessage) #endif - | UnresolvedOverloading (denv, callerArgs, failure, m) -> + | UnresolvedOverloading(denv, callerArgs, failure, m) -> let g = denv.g // extract eventual information (return type and type parameters) @@ -912,36 +916,36 @@ type Exception with | result -> nl + nl + result + nl + nl match failure with - | NoOverloadsFound (methodName, overloads, _) -> + | NoOverloadsFound(methodName, overloads, _) -> FSComp.SR.csNoOverloadsFound methodName + optionalParts + (FSComp.SR.csAvailableOverloads (formatOverloads overloads)) - | PossibleCandidates (methodName, [], _) -> FSComp.SR.csMethodIsOverloaded methodName - | PossibleCandidates (methodName, overloads, _) -> + | PossibleCandidates(methodName, [], _) -> FSComp.SR.csMethodIsOverloaded methodName + | PossibleCandidates(methodName, overloads, _) -> FSComp.SR.csMethodIsOverloaded methodName + optionalParts + FSComp.SR.csCandidates (formatOverloads overloads) os.AppendString msg - | UnresolvedConversionOperator (denv, fromTy, toTy, _) -> + | UnresolvedConversionOperator(denv, fromTy, toTy, _) -> let ty1, ty2, _tpcs = NicePrint.minimalStringsOfTwoTypes denv fromTy toTy os.AppendString(FSComp.SR.csTypeDoesNotSupportConversion (ty1, ty2)) | FunctionExpected _ -> os.AppendString(FunctionExpectedE().Format) - | BakedInMemberConstraintName (nm, _) -> os.AppendString(BakedInMemberConstraintNameE().Format nm) + | BakedInMemberConstraintName(nm, _) -> os.AppendString(BakedInMemberConstraintNameE().Format nm) - | StandardOperatorRedefinitionWarning (msg, _) -> os.AppendString msg + | StandardOperatorRedefinitionWarning(msg, _) -> os.AppendString msg | BadEventTransformation _ -> os.AppendString(BadEventTransformationE().Format) | ParameterlessStructCtor _ -> os.AppendString(ParameterlessStructCtorE().Format) - | InterfaceNotRevealed (denv, intfTy, _) -> + | InterfaceNotRevealed(denv, intfTy, _) -> os.AppendString(InterfaceNotRevealedE().Format(NicePrint.minimalStringOfType denv intfTy)) - | NotAFunctionButIndexer (_, _, name, _, _, old) -> + | NotAFunctionButIndexer(_, _, name, _, _, old) -> if old then match name with | Some name -> os.AppendString(FSComp.SR.notAFunctionButMaybeIndexerWithName name) @@ -951,13 +955,13 @@ type Exception with | Some name -> os.AppendString(FSComp.SR.notAFunctionButMaybeIndexerWithName2 name) | _ -> os.AppendString(FSComp.SR.notAFunctionButMaybeIndexer2 ()) - | NotAFunction (_, _, _, marg) -> + | NotAFunction(_, _, _, marg) -> if marg.StartColumn = 0 then os.AppendString(FSComp.SR.notAFunctionButMaybeDeclaration ()) else os.AppendString(FSComp.SR.notAFunction ()) - | TyconBadArgs (_, tcref, d, _) -> + | TyconBadArgs(_, tcref, d, _) -> let exp = tcref.TyparsNoRange.Length if exp = 0 then @@ -967,58 +971,58 @@ type Exception with | IndeterminateType _ -> os.AppendString(IndeterminateTypeE().Format) - | NameClash (nm, k1, nm1, _, k2, nm2, _) -> + | NameClash(nm, k1, nm1, _, k2, nm2, _) -> if nm = nm1 && nm1 = nm2 && k1 = k2 then os.AppendString(NameClash1E().Format k1 nm1) else os.AppendString(NameClash2E().Format k1 nm1 nm k2 nm2) - | Duplicate (k, s, _) -> + | Duplicate(k, s, _) -> if k = "member" then os.AppendString(Duplicate1E().Format(ConvertValLogicalNameToDisplayNameCore s)) else os.AppendString(Duplicate2E().Format k (ConvertValLogicalNameToDisplayNameCore s)) - | UndefinedName (_, k, id, suggestionsF) -> + | UndefinedName(_, k, id, suggestionsF) -> os.AppendString(k (ConvertValLogicalNameToDisplayNameCore id.idText)) OutputNameSuggestions os suggestNames suggestionsF id.idText - | InternalUndefinedItemRef (f, smr, ccuName, s) -> + | InternalUndefinedItemRef(f, smr, ccuName, s) -> let _, errs = f (smr, ccuName, s) os.AppendString errs | FieldNotMutable _ -> os.AppendString(FieldNotMutableE().Format) - | FieldsFromDifferentTypes (_, fref1, fref2, _) -> + | FieldsFromDifferentTypes(_, fref1, fref2, _) -> os.AppendString(FieldsFromDifferentTypesE().Format fref1.FieldName fref2.FieldName) | VarBoundTwice id -> os.AppendString(VarBoundTwiceE().Format(ConvertValLogicalNameToDisplayNameCore id.idText)) - | Recursion (denv, id, ty1, ty2, _) -> + | Recursion(denv, id, ty1, ty2, _) -> let ty1, ty2, tpcs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.AppendString(RecursionE().Format (ConvertValLogicalNameToDisplayNameCore id.idText) ty1 ty2 tpcs) - | InvalidRuntimeCoercion (denv, ty1, ty2, _) -> + | InvalidRuntimeCoercion(denv, ty1, ty2, _) -> let ty1, ty2, tpcs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.AppendString(InvalidRuntimeCoercionE().Format ty1 ty2 tpcs) - | IndeterminateRuntimeCoercion (denv, ty1, ty2, _) -> + | IndeterminateRuntimeCoercion(denv, ty1, ty2, _) -> let ty1, ty2, _cxs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.AppendString(IndeterminateRuntimeCoercionE().Format ty1 ty2) - | IndeterminateStaticCoercion (denv, ty1, ty2, _) -> + | IndeterminateStaticCoercion(denv, ty1, ty2, _) -> // REVIEW: consider if we need to show _cxs (the type parameter constraints) let ty1, ty2, _cxs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.AppendString(IndeterminateStaticCoercionE().Format ty1 ty2) - | StaticCoercionShouldUseBox (denv, ty1, ty2, _) -> + | StaticCoercionShouldUseBox(denv, ty1, ty2, _) -> // REVIEW: consider if we need to show _cxs (the type parameter constraints) let ty1, ty2, _cxs = NicePrint.minimalStringsOfTwoTypes denv ty1 ty2 os.AppendString(StaticCoercionShouldUseBoxE().Format ty1 ty2) | TypeIsImplicitlyAbstract _ -> os.AppendString(TypeIsImplicitlyAbstractE().Format) - | NonRigidTypar (denv, tpnmOpt, typarRange, ty1, ty2, _) -> + | NonRigidTypar(denv, tpnmOpt, typarRange, ty1, ty2, _) -> // REVIEW: consider if we need to show _cxs (the type parameter constraints) let (ty1, ty2), _cxs = PrettyTypes.PrettifyTypePair denv.g (ty1, ty2) @@ -1029,7 +1033,7 @@ type Exception with | TType_measure _ -> os.AppendString(NonRigidTypar2E().Format tpnm (NicePrint.stringOfTy denv ty2)) | _ -> os.AppendString(NonRigidTypar3E().Format tpnm (NicePrint.stringOfTy denv ty2)) - | SyntaxError (ctxt, _) -> + | SyntaxError(ctxt, _) -> let ctxt = unbox> (ctxt) let (|EndOfStructuredConstructToken|_|) token = @@ -1350,18 +1354,20 @@ type Exception with |> List.exists (fun prods -> let prodIds = prods - |> List.map Parser.prodIdxToNonTerminal - |> List.map (fun nonTerminal -> - match nonTerminal with - | NONTERM_Category_Type -> Parser.NONTERM_typ - | NONTERM_Category_Expr -> Parser.NONTERM_declExpr - | NONTERM_Category_Pattern -> Parser.NONTERM_atomicPattern - | NONTERM_Category_IfThenElse -> Parser.NONTERM_ifExprThen - | NONTERM_Category_SignatureFile -> Parser.NONTERM_signatureFile - | NONTERM_Category_ImplementationFile -> Parser.NONTERM_implementationFile - | NONTERM_Category_Definition -> Parser.NONTERM_moduleDefn - | NONTERM_Category_Interaction -> Parser.NONTERM_interaction - | nt -> nt) + |> List.map ( + Parser.prodIdxToNonTerminal + >> fun nonTerminal -> + match nonTerminal with + | NONTERM_Category_Type -> Parser.NONTERM_typ + | NONTERM_Category_Expr -> Parser.NONTERM_declExpr + | NONTERM_Category_Pattern -> Parser.NONTERM_atomicPattern + | NONTERM_Category_IfThenElse -> Parser.NONTERM_ifExprThen + | NONTERM_Category_SignatureFile -> Parser.NONTERM_signatureFile + | NONTERM_Category_ImplementationFile -> Parser.NONTERM_implementationFile + | NONTERM_Category_Definition -> Parser.NONTERM_moduleDefn + | NONTERM_Category_Interaction -> Parser.NONTERM_interaction + | nt -> nt + ) |> Set.ofList |> Set.toList @@ -1513,7 +1519,7 @@ type Exception with (List.mapSquared Parser.prodIdxToNonTerminal ctxt.ReducibleProductions) *) - | RuntimeCoercionSourceSealed (denv, ty, _) -> + | RuntimeCoercionSourceSealed(denv, ty, _) -> // REVIEW: consider if we need to show _cxs (the type parameter constraints) let ty, _cxs = PrettyTypes.PrettifyType denv.g ty @@ -1522,7 +1528,7 @@ type Exception with else os.AppendString(RuntimeCoercionSourceSealed2E().Format(NicePrint.stringOfTy denv ty)) - | CoercionTargetSealed (denv, ty, _) -> + | CoercionTargetSealed(denv, ty, _) -> // REVIEW: consider if we need to show _cxs (the type parameter constraints) let ty, _cxs = PrettyTypes.PrettifyType denv.g ty os.AppendString(CoercionTargetSealedE().Format(NicePrint.stringOfTy denv ty)) @@ -1531,9 +1537,9 @@ type Exception with | TypeTestUnnecessary _ -> os.AppendString(TypeTestUnnecessaryE().Format) - | QuotationTranslator.IgnoringPartOfQuotedTermWarning (msg, _) -> Printf.bprintf os "%s" msg + | QuotationTranslator.IgnoringPartOfQuotedTermWarning(msg, _) -> Printf.bprintf os "%s" msg - | OverrideDoesntOverride (denv, impl, minfoVirtOpt, g, amap, m) -> + | OverrideDoesntOverride(denv, impl, minfoVirtOpt, g, amap, m) -> let sig1 = DispatchSlotChecking.FormatOverride denv impl match minfoVirtOpt with @@ -1545,14 +1551,14 @@ type Exception with let hasUnitTType_app (types: TType list) = types |> List.exists (function - | TType_app (maybeUnit, [], _) -> + | TType_app(maybeUnit, [], _) -> match maybeUnit.TypeAbbrev with | Some ty when isUnitTy g ty -> true | _ -> false | _ -> false) match minfoVirt.ApparentEnclosingType with - | TType_app (tycon, tyargs, _) when tycon.IsFSharpInterfaceTycon && hasUnitTType_app tyargs -> + | TType_app(tycon, tyargs, _) when tycon.IsFSharpInterfaceTycon && hasUnitTType_app tyargs -> // match abstract member with 'unit' passed as generic argument os.AppendString(OverrideDoesntOverride4E().Format sig1) | _ -> @@ -1562,17 +1568,25 @@ type Exception with if sig1 <> sig2 then os.AppendString(OverrideDoesntOverride3E().Format sig2) - | UnionCaseWrongArguments (_, n1, n2, _) -> os.AppendString(UnionCaseWrongArgumentsE().Format n2 n1) + // If implementation and required slot doesn't have same "instance-ness", then tell user that. + if impl.IsInstance <> minfoVirt.IsInstance then + // Required slot is instance, meaning implementation is static, tell user that we expect instance. + if minfoVirt.IsInstance then + os.AppendString(OverrideShouldBeStatic().Format) + else + os.AppendString(OverrideShouldBeInstance().Format) + + | UnionCaseWrongArguments(_, n1, n2, _) -> os.AppendString(UnionCaseWrongArgumentsE().Format n2 n1) | UnionPatternsBindDifferentNames _ -> os.AppendString(UnionPatternsBindDifferentNamesE().Format) - | ValueNotContained (denv, infoReader, mref, implVal, sigVal, f) -> + | ValueNotContained(denv, infoReader, mref, implVal, sigVal, f) -> let text1, text2 = NicePrint.minimalStringsOfTwoValues denv infoReader (mkLocalValRef implVal) (mkLocalValRef sigVal) os.AppendString(f ((fullDisplayTextOfModRef mref), text1, text2)) - | UnionCaseNotContained (denv, infoReader, enclosingTycon, v1, v2, f) -> + | UnionCaseNotContained(denv, infoReader, enclosingTycon, v1, v2, f) -> let enclosingTcref = mkLocalEntityRef enclosingTycon os.AppendString( @@ -1582,7 +1596,7 @@ type Exception with ) ) - | FSharpExceptionNotContained (denv, infoReader, v1, v2, f) -> + | FSharpExceptionNotContained(denv, infoReader, v1, v2, f) -> os.AppendString( f ( (NicePrint.stringOfExnDef denv infoReader (mkLocalEntityRef v1)), @@ -1590,7 +1604,7 @@ type Exception with ) ) - | FieldNotContained (denv, infoReader, enclosingTycon, _, v1, v2, f) -> + | FieldNotContained(denv, infoReader, enclosingTycon, _, v1, v2, f) -> let enclosingTcref = mkLocalEntityRef enclosingTycon os.AppendString( @@ -1600,28 +1614,28 @@ type Exception with ) ) - | RequiredButNotSpecified (_, mref, k, name, _) -> + | RequiredButNotSpecified(_, mref, k, name, _) -> let nsb = StringBuilder() name nsb os.AppendString(RequiredButNotSpecifiedE().Format (fullDisplayTextOfModRef mref) k (nsb.ToString())) | UseOfAddressOfOperator _ -> os.AppendString(UseOfAddressOfOperatorE().Format) - | DefensiveCopyWarning (s, _) -> os.AppendString(DefensiveCopyWarningE().Format s) + | DefensiveCopyWarning(s, _) -> os.AppendString(DefensiveCopyWarningE().Format s) | DeprecatedThreadStaticBindingWarning _ -> os.AppendString(DeprecatedThreadStaticBindingWarningE().Format) - | FunctionValueUnexpected (denv, ty, _) -> + | FunctionValueUnexpected(denv, ty, _) -> let ty, _cxs = PrettyTypes.PrettifyType denv.g ty let errorText = FunctionValueUnexpectedE().Format(NicePrint.stringOfTy denv ty) os.AppendString errorText - | UnitTypeExpected (denv, ty, _) -> + | UnitTypeExpected(denv, ty, _) -> let ty, _cxs = PrettyTypes.PrettifyType denv.g ty let warningText = UnitTypeExpectedE().Format(NicePrint.stringOfTy denv ty) os.AppendString warningText - | UnitTypeExpectedWithEquality (denv, ty, _) -> + | UnitTypeExpectedWithEquality(denv, ty, _) -> let ty, _cxs = PrettyTypes.PrettifyType denv.g ty let warningText = @@ -1629,7 +1643,7 @@ type Exception with os.AppendString warningText - | UnitTypeExpectedWithPossiblePropertySetter (denv, ty, bindingName, propertyName, _) -> + | UnitTypeExpectedWithPossiblePropertySetter(denv, ty, bindingName, propertyName, _) -> let ty, _cxs = PrettyTypes.PrettifyType denv.g ty let warningText = @@ -1637,7 +1651,7 @@ type Exception with os.AppendString warningText - | UnitTypeExpectedWithPossibleAssignment (denv, ty, isAlreadyMutable, bindingName, _) -> + | UnitTypeExpectedWithPossibleAssignment(denv, ty, isAlreadyMutable, bindingName, _) -> let ty, _cxs = PrettyTypes.PrettifyType denv.g ty let warningText = @@ -1650,9 +1664,9 @@ type Exception with | RecursiveUseCheckedAtRuntime _ -> os.AppendString(RecursiveUseCheckedAtRuntimeE().Format) - | LetRecUnsound (_, [ v ], _) -> os.AppendString(LetRecUnsound1E().Format v.DisplayName) + | LetRecUnsound(_, [ v ], _) -> os.AppendString(LetRecUnsound1E().Format v.DisplayName) - | LetRecUnsound (_, path, _) -> + | LetRecUnsound(_, path, _) -> let bos = StringBuilder() (path.Tail @ [ path.Head ]) @@ -1660,19 +1674,19 @@ type Exception with os.AppendString(LetRecUnsound2E().Format (List.head path).DisplayName (bos.ToString())) - | LetRecEvaluatedOutOfOrder (_, _, _, _) -> os.AppendString(LetRecEvaluatedOutOfOrderE().Format) + | LetRecEvaluatedOutOfOrder(_) -> os.AppendString(LetRecEvaluatedOutOfOrderE().Format) | LetRecCheckedAtRuntime _ -> os.AppendString(LetRecCheckedAtRuntimeE().Format) - | SelfRefObjCtor (false, _) -> os.AppendString(SelfRefObjCtor1E().Format) + | SelfRefObjCtor(false, _) -> os.AppendString(SelfRefObjCtor1E().Format) - | SelfRefObjCtor (true, _) -> os.AppendString(SelfRefObjCtor2E().Format) + | SelfRefObjCtor(true, _) -> os.AppendString(SelfRefObjCtor2E().Format) | VirtualAugmentationOnNullValuedType _ -> os.AppendString(VirtualAugmentationOnNullValuedTypeE().Format) | NonVirtualAugmentationOnNullValuedType _ -> os.AppendString(NonVirtualAugmentationOnNullValuedTypeE().Format) - | NonUniqueInferredAbstractSlot (_, denv, bindnm, bvirt1, bvirt2, _) -> + | NonUniqueInferredAbstractSlot(_, denv, bindnm, bvirt1, bvirt2, _) -> os.AppendString(NonUniqueInferredAbstractSlot1E().Format bindnm) let ty1 = bvirt1.ApparentEnclosingType let ty2 = bvirt2.ApparentEnclosingType @@ -1685,15 +1699,15 @@ type Exception with os.AppendString(NonUniqueInferredAbstractSlot4E().Format) - | DiagnosticWithText (_, s, _) - | DiagnosticEnabledWithLanguageFeature (_, s, _, _) -> os.AppendString s + | DiagnosticWithText(_, s, _) + | DiagnosticEnabledWithLanguageFeature(_, s, _, _) -> os.AppendString s - | DiagnosticWithSuggestions (_, s, _, idText, suggestionF) -> + | DiagnosticWithSuggestions(_, s, _, idText, suggestionF) -> os.AppendString(ConvertValLogicalNameToDisplayNameCore s) OutputNameSuggestions os suggestNames suggestionF idText - | InternalError (s, _) - | InternalException (_, s, _) + | InternalError(s, _) + | InternalException(_, s, _) | InvalidArgument s | Failure s as exn -> ignore exn // use the argument, even in non DEBUG @@ -1709,57 +1723,57 @@ type Exception with Debug.Assert(false, sprintf "Unexpected exception seen in compiler: %s\n%s" s (exn.ToString())) #endif - | WrappedError (e, _) -> e.Output(os, suggestNames) + | WrappedError(e, _) -> e.Output(os, suggestNames) - | PatternMatchCompilation.MatchIncomplete (isComp, cexOpt, _) -> + | PatternMatchCompilation.MatchIncomplete(isComp, cexOpt, _) -> os.AppendString(MatchIncomplete1E().Format) match cexOpt with | None -> () - | Some (cex, false) -> os.AppendString(MatchIncomplete2E().Format cex) - | Some (cex, true) -> os.AppendString(MatchIncomplete3E().Format cex) + | Some(cex, false) -> os.AppendString(MatchIncomplete2E().Format cex) + | Some(cex, true) -> os.AppendString(MatchIncomplete3E().Format cex) if isComp then os.AppendString(MatchIncomplete4E().Format) - | PatternMatchCompilation.EnumMatchIncomplete (isComp, cexOpt, _) -> + | PatternMatchCompilation.EnumMatchIncomplete(isComp, cexOpt, _) -> os.AppendString(EnumMatchIncomplete1E().Format) match cexOpt with | None -> () - | Some (cex, false) -> os.AppendString(MatchIncomplete2E().Format cex) - | Some (cex, true) -> os.AppendString(MatchIncomplete3E().Format cex) + | Some(cex, false) -> os.AppendString(MatchIncomplete2E().Format cex) + | Some(cex, true) -> os.AppendString(MatchIncomplete3E().Format cex) if isComp then os.AppendString(MatchIncomplete4E().Format) | PatternMatchCompilation.RuleNeverMatched _ -> os.AppendString(RuleNeverMatchedE().Format) - | ValNotMutable (_, vref, _) -> os.AppendString(ValNotMutableE().Format(vref.DisplayName)) + | ValNotMutable(_, vref, _) -> os.AppendString(ValNotMutableE().Format(vref.DisplayName)) | ValNotLocal _ -> os.AppendString(ValNotLocalE().Format) - | ObsoleteError (s, _) + | ObsoleteError(s, _) - | ObsoleteWarning (s, _) -> + | ObsoleteWarning(s, _) -> os.AppendString(Obsolete1E().Format) if s <> "" then os.AppendString(Obsolete2E().Format s) - | Experimental (s, _) -> os.AppendString(ExperimentalE().Format s) + | Experimental(s, _) -> os.AppendString(ExperimentalE().Format s) | PossibleUnverifiableCode _ -> os.AppendString(PossibleUnverifiableCodeE().Format) - | UserCompilerMessage (msg, _, _) -> os.AppendString msg + | UserCompilerMessage(msg, _, _) -> os.AppendString msg - | Deprecated (s, _) -> os.AppendString(DeprecatedE().Format s) + | Deprecated(s, _) -> os.AppendString(DeprecatedE().Format s) | LibraryUseOnly _ -> os.AppendString(LibraryUseOnlyE().Format) - | MissingFields (sl, _) -> os.AppendString(MissingFieldsE().Format(String.concat "," sl + ".")) + | MissingFields(sl, _) -> os.AppendString(MissingFieldsE().Format(String.concat "," sl + ".")) - | ValueRestriction (denv, infoReader, hasSig, v, _, _) -> + | ValueRestriction(denv, infoReader, hasSig, v, _, _) -> let denv = { denv with showInferenceTyparAnnotations = true @@ -1819,9 +1833,9 @@ type Exception with | Parsing.RecoverableParseError -> os.AppendString(RecoverableParseErrorE().Format) - | ReservedKeyword (s, _) -> os.AppendString(ReservedKeywordE().Format s) + | ReservedKeyword(s, _) -> os.AppendString(ReservedKeywordE().Format s) - | IndentationProblem (s, _) -> os.AppendString(IndentationProblemE().Format s) + | IndentationProblem(s, _) -> os.AppendString(IndentationProblemE().Format s) | OverrideInIntrinsicAugmentation _ -> os.AppendString(OverrideInIntrinsicAugmentationE().Format) @@ -1831,24 +1845,24 @@ type Exception with | IntfImplInExtrinsicAugmentation _ -> os.AppendString(IntfImplInExtrinsicAugmentationE().Format) - | UnresolvedReferenceError (assemblyName, _) + | UnresolvedReferenceError(assemblyName, _) | UnresolvedReferenceNoRange assemblyName -> os.AppendString(UnresolvedReferenceNoRangeE().Format assemblyName) - | UnresolvedPathReference (assemblyName, pathname, _) + | UnresolvedPathReference(assemblyName, pathname, _) - | UnresolvedPathReferenceNoRange (assemblyName, pathname) -> + | UnresolvedPathReferenceNoRange(assemblyName, pathname) -> os.AppendString(UnresolvedPathReferenceNoRangeE().Format pathname assemblyName) - | DeprecatedCommandLineOptionFull (fullText, _) -> os.AppendString fullText + | DeprecatedCommandLineOptionFull(fullText, _) -> os.AppendString fullText - | DeprecatedCommandLineOptionForHtmlDoc (optionName, _) -> os.AppendString(FSComp.SR.optsDCLOHtmlDoc optionName) + | DeprecatedCommandLineOptionForHtmlDoc(optionName, _) -> os.AppendString(FSComp.SR.optsDCLOHtmlDoc optionName) - | DeprecatedCommandLineOptionSuggestAlternative (optionName, altOption, _) -> + | DeprecatedCommandLineOptionSuggestAlternative(optionName, altOption, _) -> os.AppendString(FSComp.SR.optsDCLODeprecatedSuggestAlternative (optionName, altOption)) - | InternalCommandLineOption (optionName, _) -> os.AppendString(FSComp.SR.optsInternalNoDescription optionName) + | InternalCommandLineOption(optionName, _) -> os.AppendString(FSComp.SR.optsInternalNoDescription optionName) - | DeprecatedCommandLineOptionNoDescription (optionName, _) -> os.AppendString(FSComp.SR.optsDCLONoDescription optionName) + | DeprecatedCommandLineOptionNoDescription(optionName, _) -> os.AppendString(FSComp.SR.optsDCLONoDescription optionName) | HashIncludeNotAllowedInNonScript _ -> os.AppendString(HashIncludeNotAllowedInNonScriptE().Format) @@ -1856,14 +1870,14 @@ type Exception with | HashDirectiveNotAllowedInNonScript _ -> os.AppendString(HashDirectiveNotAllowedInNonScriptE().Format) - | FileNameNotResolved (fileName, locations, _) -> os.AppendString(FileNameNotResolvedE().Format fileName locations) + | FileNameNotResolved(fileName, locations, _) -> os.AppendString(FileNameNotResolvedE().Format fileName locations) - | AssemblyNotResolved (originalName, _) -> os.AppendString(AssemblyNotResolvedE().Format originalName) + | AssemblyNotResolved(originalName, _) -> os.AppendString(AssemblyNotResolvedE().Format originalName) - | IllegalFileNameChar (fileName, invalidChar) -> + | IllegalFileNameChar(fileName, invalidChar) -> os.AppendString(FSComp.SR.buildUnexpectedFileNameCharacter (fileName, string invalidChar) |> snd) - | HashLoadedSourceHasIssues (infos, warnings, errors, _) -> + | HashLoadedSourceHasIssues(infos, warnings, errors, _) -> match warnings, errors with | _, e :: _ -> @@ -1878,18 +1892,18 @@ type Exception with | HashLoadedScriptConsideredSource _ -> os.AppendString(HashLoadedScriptConsideredSourceE().Format) - | InvalidInternalsVisibleToAssemblyName (badName, fileNameOption) -> + | InvalidInternalsVisibleToAssemblyName(badName, fileNameOption) -> match fileNameOption with | Some file -> os.AppendString(InvalidInternalsVisibleToAssemblyName1E().Format badName file) | None -> os.AppendString(InvalidInternalsVisibleToAssemblyName2E().Format badName) - | LoadedSourceNotFoundIgnoring (fileName, _) -> os.AppendString(LoadedSourceNotFoundIgnoringE().Format fileName) + | LoadedSourceNotFoundIgnoring(fileName, _) -> os.AppendString(LoadedSourceNotFoundIgnoringE().Format fileName) - | MSBuildReferenceResolutionWarning (code, message, _) + | MSBuildReferenceResolutionWarning(code, message, _) - | MSBuildReferenceResolutionError (code, message, _) -> os.AppendString(MSBuildReferenceResolutionErrorE().Format message code) + | MSBuildReferenceResolutionError(code, message, _) -> os.AppendString(MSBuildReferenceResolutionErrorE().Format message code) - | ArgumentsInSigAndImplMismatch (sigArg, implArg) -> + | ArgumentsInSigAndImplMismatch(sigArg, implArg) -> os.AppendString(ArgumentsInSigAndImplMismatchE().Format sigArg.idText implArg.idText) #if !FABLE_COMPILER @@ -2148,8 +2162,8 @@ type PhasedDiagnostic with Printf.bprintf buf "\n" match e with - | FormattedDiagnostic.Short (_, txt) -> buf.AppendString txt - | FormattedDiagnostic.Long (_, details) -> + | FormattedDiagnostic.Short(_, txt) -> buf.AppendString txt + | FormattedDiagnostic.Long(_, details) -> match details.Location with | Some l when not l.IsEmpty -> buf.AppendString l.TextRepresentation | _ -> () @@ -2192,12 +2206,7 @@ type PhasedDiagnostic with // sensitive operations (lexfilter and warning filtering) do not always // interact well with #line directives. type DiagnosticsLoggerFilteringByScopedPragmas - ( - checkFile, - scopedPragmas, - diagnosticOptions: FSharpDiagnosticOptions, - diagnosticsLogger: DiagnosticsLogger - ) = + (checkFile, scopedPragmas, diagnosticOptions: FSharpDiagnosticOptions, diagnosticsLogger: DiagnosticsLogger) = inherit DiagnosticsLogger("DiagnosticsLoggerFilteringByScopedPragmas") override _.DiagnosticSink(diagnostic: PhasedDiagnostic, severity) = @@ -2211,7 +2220,7 @@ type DiagnosticsLoggerFilteringByScopedPragmas | Some m -> scopedPragmas |> List.exists (fun pragma -> - let (ScopedPragma.WarningOff (pragmaRange, warningNumFromPragma)) = pragma + let (ScopedPragma.WarningOff(pragmaRange, warningNumFromPragma)) = pragma warningNum = warningNumFromPragma && (not checkFile || m.FileIndex = pragmaRange.FileIndex) diff --git a/src/fcs-fable/src/Compiler/Driver/CompilerImports.fs b/src/fcs-fable/src/Compiler/Driver/CompilerImports.fs index 374f4d1f12..42ea77b8d6 100644 --- a/src/fcs-fable/src/Compiler/Driver/CompilerImports.fs +++ b/src/fcs-fable/src/Compiler/Driver/CompilerImports.fs @@ -361,7 +361,7 @@ type ImportedAssembly = IsProviderGenerated: bool mutable TypeProviders: Tainted list #endif - FSharpOptimizationData: Microsoft.FSharp.Control.Lazy + FSharpOptimizationData: InterruptibleLazy } type AvailableImportedAssembly = @@ -534,7 +534,7 @@ type TcConfig with if tcConfig.useSimpleResolution then failwith "MSBuild resolution is not supported." - if originalReferences = [] then + if List.isEmpty originalReferences then [], [] else // Group references by name with range values in the grouped value list. @@ -555,7 +555,7 @@ type TcConfig with [| for (_filename, maxIndexOfReference, references) in groupedReferences do let assemblyResolution = - references |> List.choose (fun r -> tcConfig.TryResolveLibWithDirectories r) + references |> List.choose (tcConfig.TryResolveLibWithDirectories) if not assemblyResolution.IsEmpty then (maxIndexOfReference, assemblyResolution) @@ -706,7 +706,7 @@ type TcAssemblyResolutions(tcConfig: TcConfig, results: AssemblyResolution list, tcConfig.ResolveLibWithDirectories(CcuLoadFailureAction.RaiseError, assemblyReference) Choice1Of2 resolutionOpt.Value - with e -> + with RecoverableException e -> errorRecovery e assemblyReference.Range Choice2Of2 assemblyReference) @@ -1828,14 +1828,14 @@ and [] TcImports assert (nameof (tcImports) = "tcImports") let mutable systemRuntimeContainsTypeRef = - (fun typeName -> tcImports.SystemRuntimeContainsType typeName) + tcImports.SystemRuntimeContainsType // When the tcImports is disposed the systemRuntimeContainsTypeRef thunk is replaced // with one raising an exception. tcImportsStrong.AttachDisposeTypeProviderAction(fun () -> systemRuntimeContainsTypeRef <- fun _ -> raise (ObjectDisposedException("The type provider has been disposed"))) - (fun arg -> systemRuntimeContainsTypeRef arg) + systemRuntimeContainsTypeRef // Note, this only captures tcImportsWeak let mutable getReferencedAssemblies = @@ -1986,7 +1986,7 @@ and [] TcImports for providedNamespace in providedNamespaces do loop providedNamespace - with e -> + with RecoverableException e -> errorRecovery e m if startingErrorCount < DiagnosticsThreadStatics.DiagnosticsLogger.ErrorCount then @@ -2122,26 +2122,26 @@ and [] TcImports let ccu = CcuThunk.Create(ccuName, ccuData) let optdata = - lazy - (match Map.tryFind ccuName optDatas with - | None -> None - | Some info -> - let data = - GetOptimizationData(fileName, ilScopeRef, ilModule.TryGetILModuleDef(), info) + InterruptibleLazy(fun _ -> + match Map.tryFind ccuName optDatas with + | None -> None + | Some info -> + let data = + GetOptimizationData(fileName, ilScopeRef, ilModule.TryGetILModuleDef(), info) - let fixupThunk () = - data.OptionalFixup(fun nm -> availableToOptionalCcu (tcImports.FindCcu(ctok, m, nm, lookupOnly = false))) + let fixupThunk () = + data.OptionalFixup(fun nm -> availableToOptionalCcu (tcImports.FindCcu(ctok, m, nm, lookupOnly = false))) - // Make a note of all ccuThunks that may still need to be fixed up when other dlls are loaded - tciLock.AcquireLock(fun tcitok -> - RequireTcImportsLock(tcitok, ccuThunks) + // Make a note of all ccuThunks that may still need to be fixed up when other dlls are loaded + tciLock.AcquireLock(fun tcitok -> + RequireTcImportsLock(tcitok, ccuThunks) - for ccuThunk in data.FixupThunks do - if ccuThunk.IsUnresolvedReference then - ccuThunks.Add(ccuThunk, (fun () -> fixupThunk () |> ignore))) - - Some(fixupThunk ())) + for ccuThunk in data.FixupThunks do + if ccuThunk.IsUnresolvedReference then + ccuThunks.Add(ccuThunk, (fun () -> fixupThunk () |> ignore))) + Some(fixupThunk ()) + ) let ccuinfo = { FSharpViewOfMetadata = ccu @@ -2202,8 +2202,7 @@ and [] TcImports ccuRawDataAndInfos |> List.iter (fun (_, _, phase2) -> phase2 ()) #endif ccuRawDataAndInfos - |> List.map p23 - |> List.map (fun asm -> ResolvedImportedAssembly(asm, m)) + |> List.map (p23 >> fun asm -> ResolvedImportedAssembly(asm, m)) phase2 diff --git a/src/fcs-fable/src/Compiler/Driver/CompilerImports.fsi b/src/fcs-fable/src/Compiler/Driver/CompilerImports.fsi index 0e64f4a192..b06eb25826 100644 --- a/src/fcs-fable/src/Compiler/Driver/CompilerImports.fsi +++ b/src/fcs-fable/src/Compiler/Driver/CompilerImports.fsi @@ -123,7 +123,7 @@ type ImportedAssembly = IsProviderGenerated: bool mutable TypeProviders: Tainted list #endif - FSharpOptimizationData: Lazy } + FSharpOptimizationData: InterruptibleLazy } #if FABLE_COMPILER diff --git a/src/fcs-fable/src/Compiler/Driver/CompilerOptions.fs b/src/fcs-fable/src/Compiler/Driver/CompilerOptions.fs index 970e7852e7..7624ac4507 100644 --- a/src/fcs-fable/src/Compiler/Driver/CompilerOptions.fs +++ b/src/fcs-fable/src/Compiler/Driver/CompilerOptions.fs @@ -81,15 +81,15 @@ and CompilerOptionBlock = let GetOptionsOfBlock block = match block with - | PublicOptions (_, opts) -> opts + | PublicOptions(_, opts) -> opts | PrivateOptions opts -> opts let FilterCompilerOptionBlock pred block = match block with - | PublicOptions (heading, opts) -> PublicOptions(heading, List.filter pred opts) + | PublicOptions(heading, opts) -> PublicOptions(heading, List.filter pred opts) | PrivateOptions opts -> PrivateOptions(List.filter pred opts) -let compilerOptionUsage (CompilerOption (s, tag, spec, _, _)) = +let compilerOptionUsage (CompilerOption(s, tag, spec, _, _)) = let s = if s = "--" then "" @@ -118,7 +118,7 @@ let compilerOptionUsage (CompilerOption (s, tag, spec, _, _)) = let nl = Environment.NewLine -let getCompilerOption (CompilerOption (_s, _tag, _spec, _, help) as compilerOption) width = +let getCompilerOption (CompilerOption(_s, _tag, _spec, _, help) as compilerOption) width = let sb = StringBuilder() let flagWidth = 42 // fixed width for printing of flags, e.g. --debug:{full|pdbonly|portable|embedded} @@ -182,7 +182,7 @@ let GetCompilerOptionBlocks blocks width = blocks |> List.choose (function | PrivateOptions _ -> None - | PublicOptions (heading, opts) -> Some(heading, opts)) + | PublicOptions(heading, opts) -> Some(heading, opts)) let consider doneHeadings (heading, _opts) = if Set.contains heading doneHeadings then @@ -198,7 +198,7 @@ let GetCompilerOptionBlocks blocks width = sb.ToString() (* For QA *) -let dumpCompilerOption prefix (CompilerOption (str, _, spec, _, _)) = +let dumpCompilerOption prefix (CompilerOption(str, _, spec, _, _)) = printf "section='%-25s' ! option=%-30s kind=" prefix str match spec with @@ -221,14 +221,14 @@ let dumpCompilerOption prefix (CompilerOption (str, _, spec, _, _)) = let dumpCompilerOptionBlock = function - | PublicOptions (heading, opts) -> List.iter (dumpCompilerOption heading) opts + | PublicOptions(heading, opts) -> List.iter (dumpCompilerOption heading) opts | PrivateOptions opts -> List.iter (dumpCompilerOption "NoSection") opts let DumpCompilerOptionBlocks blocks = List.iter dumpCompilerOptionBlock blocks let isSlashOpt (opt: string) = - opt[0] = '/' && (opt.Length = 1 || not (opt[ 1.. ].Contains "/")) + opt[0] = '/' && (opt.Length = 1 || not (opt[1..].Contains "/")) module ResponseFile = @@ -382,27 +382,27 @@ let ParseCompilerOptions (collectOtherArgument: string -> unit, blocks: Compiler let rec attempt l = match l with - | CompilerOption (s, _, OptionConsoleOnly f, d, _) :: _ when option = s -> + | CompilerOption(s, _, OptionConsoleOnly f, d, _) :: _ when option = s -> reportDeprecatedOption d f blocks t - | CompilerOption (s, _, OptionUnit f, d, _) :: _ when optToken = s && argString = "" -> + | CompilerOption(s, _, OptionUnit f, d, _) :: _ when optToken = s && argString = "" -> reportDeprecatedOption d f () t - | CompilerOption (s, _, OptionSwitch f, d, _) :: _ when getSwitchOpt optToken = s && argString = "" -> + | CompilerOption(s, _, OptionSwitch f, d, _) :: _ when getSwitchOpt optToken = s && argString = "" -> reportDeprecatedOption d f (getSwitch opt) t - | CompilerOption (s, _, OptionSet f, d, _) :: _ when optToken = s && argString = "" -> + | CompilerOption(s, _, OptionSet f, d, _) :: _ when optToken = s && argString = "" -> reportDeprecatedOption d f.Value <- true t - | CompilerOption (s, _, OptionClear f, d, _) :: _ when optToken = s && argString = "" -> + | CompilerOption(s, _, OptionClear f, d, _) :: _ when optToken = s && argString = "" -> reportDeprecatedOption d f.Value <- false t - | CompilerOption (s, _, OptionString f, d, _) as compilerOption :: _ when optToken = s -> + | CompilerOption(s, _, OptionString f, d, _) as compilerOption :: _ when optToken = s -> reportDeprecatedOption d let oa = getOptionArg compilerOption argString @@ -410,7 +410,7 @@ let ParseCompilerOptions (collectOtherArgument: string -> unit, blocks: Compiler f (getOptionArg compilerOption oa) t - | CompilerOption (s, _, OptionInt f, d, _) as compilerOption :: _ when optToken = s -> + | CompilerOption(s, _, OptionInt f, d, _) as compilerOption :: _ when optToken = s -> reportDeprecatedOption d let oa = getOptionArg compilerOption argString @@ -424,7 +424,7 @@ let ParseCompilerOptions (collectOtherArgument: string -> unit, blocks: Compiler ) t - | CompilerOption (s, _, OptionFloat f, d, _) as compilerOption :: _ when optToken = s -> + | CompilerOption(s, _, OptionFloat f, d, _) as compilerOption :: _ when optToken = s -> reportDeprecatedOption d let oa = getOptionArg compilerOption argString @@ -438,11 +438,11 @@ let ParseCompilerOptions (collectOtherArgument: string -> unit, blocks: Compiler ) t - | CompilerOption (s, _, OptionRest f, d, _) :: _ when optToken = s -> + | CompilerOption(s, _, OptionRest f, d, _) :: _ when optToken = s -> reportDeprecatedOption d List.iter f t [] - | CompilerOption (s, _, OptionIntList f, d, _) as compilerOption :: _ when optToken = s -> + | CompilerOption(s, _, OptionIntList f, d, _) as compilerOption :: _ when optToken = s -> reportDeprecatedOption d let al = getOptionArgList compilerOption argString @@ -459,7 +459,7 @@ let ParseCompilerOptions (collectOtherArgument: string -> unit, blocks: Compiler al t - | CompilerOption (s, _, OptionIntListSwitch f, d, _) as compilerOption :: _ when getSwitchOpt optToken = s -> + | CompilerOption(s, _, OptionIntListSwitch f, d, _) as compilerOption :: _ when getSwitchOpt optToken = s -> reportDeprecatedOption d let al = getOptionArgList compilerOption argString @@ -479,7 +479,7 @@ let ParseCompilerOptions (collectOtherArgument: string -> unit, blocks: Compiler t // here - | CompilerOption (s, _, OptionStringList f, d, _) as compilerOption :: _ when optToken = s -> + | CompilerOption(s, _, OptionStringList f, d, _) as compilerOption :: _ when optToken = s -> reportDeprecatedOption d let al = getOptionArgList compilerOption argString @@ -487,7 +487,7 @@ let ParseCompilerOptions (collectOtherArgument: string -> unit, blocks: Compiler List.iter f (getOptionArgList compilerOption argString) t - | CompilerOption (s, _, OptionStringListSwitch f, d, _) as compilerOption :: _ when getSwitchOpt optToken = s -> + | CompilerOption(s, _, OptionStringListSwitch f, d, _) as compilerOption :: _ when getSwitchOpt optToken = s -> reportDeprecatedOption d let al = getOptionArgList compilerOption argString @@ -496,7 +496,7 @@ let ParseCompilerOptions (collectOtherArgument: string -> unit, blocks: Compiler List.iter (fun s -> f s switch) (getOptionArgList compilerOption argString) t - | CompilerOption (_, _, OptionGeneral (pred, exec), d, _) :: _ when pred args -> + | CompilerOption(_, _, OptionGeneral(pred, exec), d, _) :: _ when pred args -> reportDeprecatedOption d let rest = exec args in rest // arguments taken, rest remaining @@ -581,7 +581,7 @@ let SetDeterministicSwitch (tcConfigB: TcConfigBuilder) switch = let SetReferenceAssemblyOnlySwitch (tcConfigB: TcConfigBuilder) switch = match tcConfigB.emitMetadataAssembly with - | MetadataAssemblyGeneration.None when tcConfigB.standalone = false && tcConfigB.extraStaticLinkRoots.IsEmpty -> + | MetadataAssemblyGeneration.None when (not tcConfigB.standalone) && tcConfigB.extraStaticLinkRoots.IsEmpty -> tcConfigB.emitMetadataAssembly <- if (switch = OptionSwitch.On) then MetadataAssemblyGeneration.ReferenceOnly @@ -591,7 +591,7 @@ let SetReferenceAssemblyOnlySwitch (tcConfigB: TcConfigBuilder) switch = let SetReferenceAssemblyOutSwitch (tcConfigB: TcConfigBuilder) outputPath = match tcConfigB.emitMetadataAssembly with - | MetadataAssemblyGeneration.None when tcConfigB.standalone = false && tcConfigB.extraStaticLinkRoots.IsEmpty -> + | MetadataAssemblyGeneration.None when (not tcConfigB.standalone) && tcConfigB.extraStaticLinkRoots.IsEmpty -> if FileSystem.IsInvalidPathShim outputPath then error (Error(FSComp.SR.optsInvalidRefOut (), rangeCmdArgs)) else @@ -758,13 +758,7 @@ let inputFileFlagsBoth (tcConfigB: TcConfigBuilder) = None, Some(FSComp.SR.optsReference ()) ) - CompilerOption( - "compilertool", - tagFile, - OptionString(fun s -> tcConfigB.AddCompilerToolsByPath s), - None, - Some(FSComp.SR.optsCompilerTool ()) - ) + CompilerOption("compilertool", tagFile, OptionString tcConfigB.AddCompilerToolsByPath, None, Some(FSComp.SR.optsCompilerTool ())) ] let inputFileFlagsFsc tcConfigB = inputFileFlagsBoth tcConfigB @@ -992,13 +986,7 @@ let resourcesFlagsFsc (tcConfigB: TcConfigBuilder) = Some(FSComp.SR.optsNowin32manifest ()) ) - CompilerOption( - "resource", - tagResInfo, - OptionString(fun s -> tcConfigB.AddEmbeddedResource s), - None, - Some(FSComp.SR.optsResource ()) - ) + CompilerOption("resource", tagResInfo, OptionString tcConfigB.AddEmbeddedResource, None, Some(FSComp.SR.optsResource ())) CompilerOption( "linkresource", @@ -1030,13 +1018,7 @@ let codeGenerationFlags isFsi (tcConfigB: TcConfigBuilder) = [ CompilerOption("embed", tagNone, OptionSwitch(SetEmbedAllSourceSwitch tcConfigB), None, Some(FSComp.SR.optsEmbedAllSource ())) - CompilerOption( - "embed", - tagFileList, - OptionStringList(fun f -> tcConfigB.AddEmbeddedSourceFile f), - None, - Some(FSComp.SR.optsEmbedSource ()) - ) + CompilerOption("embed", tagFileList, OptionStringList tcConfigB.AddEmbeddedSourceFile, None, Some(FSComp.SR.optsEmbedSource ())) CompilerOption("sourcelink", tagFile, OptionString(fun f -> tcConfigB.sourceLink <- f), None, Some(FSComp.SR.optsSourceLink ())) ] @@ -2205,8 +2187,8 @@ let GetAbbrevFlagSet tcConfigB isFsc = for c in ((if isFsc then abbreviatedFlagsFsc else abbreviatedFlagsFsi) tcConfigB) do match c with - | CompilerOption (arg, _, OptionString _, _, _) - | CompilerOption (arg, _, OptionStringList _, _, _) -> argList <- argList @ [ "-" + arg; "/" + arg ] + | CompilerOption(arg, _, OptionString _, _, _) + | CompilerOption(arg, _, OptionStringList _, _, _) -> argList <- argList @ [ "-" + arg; "/" + arg ] | _ -> () Set.ofList argList @@ -2236,7 +2218,7 @@ let PostProcessCompilerArgs (abbrevArgs: string Set) (args: string[]) = let testingAndQAFlags _tcConfigB = [ - CompilerOption("dumpAllCommandLineOptions", tagNone, OptionConsoleOnly(fun blocks -> DumpCompilerOptionBlocks blocks), None, None) // "Command line options") + CompilerOption("dumpAllCommandLineOptions", tagNone, OptionConsoleOnly(DumpCompilerOptionBlocks), None, None) // "Command line options") ] // Core compiler options, overview @@ -2298,7 +2280,7 @@ let GetCoreFscCompilerOptions (tcConfigB: TcConfigBuilder) = let GetCoreServiceCompilerOptions (tcConfigB: TcConfigBuilder) = let isConsoleOnlyOption = function - | CompilerOption (_, _, OptionConsoleOnly _, _, _) -> true + | CompilerOption(_, _, OptionConsoleOnly _, _, _) -> true | _ -> false List.map (FilterCompilerOptionBlock(isConsoleOnlyOption >> not)) (GetCoreFscCompilerOptions tcConfigB) @@ -2353,7 +2335,7 @@ let ApplyCommandLineArgs (tcConfigB: TcConfigBuilder, sourceFiles: string list, ParseCompilerOptions(collect, GetCoreServiceCompilerOptions tcConfigB, argv) sourceFilesAcc |> CheckAndReportSourceFileDuplicates - with e -> + with RecoverableException e -> errorRecovery e range0 sourceFiles @@ -2365,25 +2347,25 @@ let ApplyCommandLineArgs (tcConfigB: TcConfigBuilder, sourceFiles: string list, let private SimulateException simulateConfig = match simulateConfig with - | Some ("fsc-oom") -> raise (OutOfMemoryException()) - | Some ("fsc-an") -> raise (ArgumentNullException("simulated")) - | Some ("fsc-invop") -> raise (InvalidOperationException()) - | Some ("fsc-av") -> raise (AccessViolationException()) - | Some ("fsc-aor") -> raise (ArgumentOutOfRangeException()) - | Some ("fsc-dv0") -> raise (DivideByZeroException()) - | Some ("fsc-nfn") -> raise (NotFiniteNumberException()) - | Some ("fsc-oe") -> raise (OverflowException()) - | Some ("fsc-atmm") -> raise (ArrayTypeMismatchException()) - | Some ("fsc-bif") -> raise (BadImageFormatException()) - | Some ("fsc-knf") -> raise (System.Collections.Generic.KeyNotFoundException()) - | Some ("fsc-ior") -> raise (IndexOutOfRangeException()) - | Some ("fsc-ic") -> raise (InvalidCastException()) - | Some ("fsc-ip") -> raise (InvalidProgramException()) - | Some ("fsc-ma") -> raise (MemberAccessException()) - | Some ("fsc-ni") -> raise (NotImplementedException()) - | Some ("fsc-nr") -> raise (NullReferenceException()) - | Some ("fsc-oc") -> raise (OperationCanceledException()) - | Some ("fsc-fail") -> failwith "simulated" + | Some("fsc-oom") -> raise (OutOfMemoryException()) + | Some("fsc-an") -> raise (ArgumentNullException("simulated")) + | Some("fsc-invop") -> raise (InvalidOperationException()) + | Some("fsc-av") -> raise (AccessViolationException()) + | Some("fsc-aor") -> raise (ArgumentOutOfRangeException()) + | Some("fsc-dv0") -> raise (DivideByZeroException()) + | Some("fsc-nfn") -> raise (NotFiniteNumberException()) + | Some("fsc-oe") -> raise (OverflowException()) + | Some("fsc-atmm") -> raise (ArrayTypeMismatchException()) + | Some("fsc-bif") -> raise (BadImageFormatException()) + | Some("fsc-knf") -> raise (System.Collections.Generic.KeyNotFoundException()) + | Some("fsc-ior") -> raise (IndexOutOfRangeException()) + | Some("fsc-ic") -> raise (InvalidCastException()) + | Some("fsc-ip") -> raise (InvalidProgramException()) + | Some("fsc-ma") -> raise (MemberAccessException()) + | Some("fsc-ni") -> raise (NotImplementedException()) + | Some("fsc-nr") -> raise (NullReferenceException()) + | Some("fsc-oc") -> raise (OperationCanceledException()) + | Some("fsc-fail") -> failwith "simulated" | _ -> () let ReportTime = @@ -2425,7 +2407,7 @@ let DoWithColor newColor f = | true, None -> // could not get console colours, so no attempt to change colours, can not set them back f () - | true, Some (c, _) -> + | true, Some(c, _) -> try ignoreFailureOnMono1_1_16 (fun () -> Console.ForegroundColor <- newColor) f () @@ -2435,7 +2417,7 @@ let DoWithColor newColor f = let DoWithDiagnosticColor severity f = match foreBackColor () with | None -> f () - | Some (_, backColor) -> + | Some(_, backColor) -> let infoColor = if backColor = ConsoleColor.White then ConsoleColor.Blue diff --git a/src/fcs-fable/src/Compiler/Driver/CreateILModule.fs b/src/fcs-fable/src/Compiler/Driver/CreateILModule.fs index 45d9791ffd..7fa60a2595 100644 --- a/src/fcs-fable/src/Compiler/Driver/CreateILModule.fs +++ b/src/fcs-fable/src/Compiler/Driver/CreateILModule.fs @@ -35,7 +35,7 @@ module AttributeHelpers = | None -> None | Some attribRef -> match TryFindFSharpAttribute g attribRef attribs with - | Some (Attrib (_, _, [ AttribStringArg s ], _, _, _, _)) -> Some s + | Some(Attrib(_, _, [ AttribStringArg s ], _, _, _, _)) -> Some s | _ -> None let TryFindIntAttribute (g: TcGlobals) attrib attribs = @@ -43,7 +43,7 @@ module AttributeHelpers = | None -> None | Some attribRef -> match TryFindFSharpAttribute g attribRef attribs with - | Some (Attrib (_, _, [ AttribInt32Arg i ], _, _, _, _)) -> Some i + | Some(Attrib(_, _, [ AttribInt32Arg i ], _, _, _, _)) -> Some i | _ -> None let TryFindBoolAttribute (g: TcGlobals) attrib attribs = @@ -51,7 +51,7 @@ module AttributeHelpers = | None -> None | Some attribRef -> match TryFindFSharpAttribute g attribRef attribs with - | Some (Attrib (_, _, [ AttribBoolArg p ], _, _, _, _)) -> Some p + | Some(Attrib(_, _, [ AttribBoolArg p ], _, _, _, _)) -> Some p | _ -> None let (|ILVersion|_|) (versionString: string) = @@ -134,7 +134,7 @@ let ValidateKeySigningAttributes (tcConfig: TcConfig, tcGlobals, topAttrs) = /// Get the object used to perform strong-name signing let GetStrongNameSigner signingInfo = - let (StrongNameSigningInfo (delaysign, publicsign, signer, container)) = signingInfo + let (StrongNameSigningInfo(delaysign, publicsign, signer, container)) = signingInfo // REVIEW: favor the container over the key file - C# appears to do this match container with | Some container -> Some(ILStrongNameSigner.OpenKeyContainer container) @@ -238,7 +238,7 @@ module MainModuleBuilder = match findStringAttr attrName with | None -> assemblyVersion - | Some (AttributeHelpers.ILVersion v) -> v + | Some(AttributeHelpers.ILVersion v) -> v | Some _ -> // Warning will be reported by CheckExpressions.fs assemblyVersion @@ -252,7 +252,7 @@ module MainModuleBuilder = match findStringAttr attrName with | None | Some "" -> fileVersion |> toDotted - | Some (AttributeHelpers.ILVersion v) -> v |> toDotted + | Some(AttributeHelpers.ILVersion v) -> v |> toDotted | Some v -> // Warning will be reported by CheckExpressions.fs v diff --git a/src/fcs-fable/src/Compiler/Driver/FxResolver.fs b/src/fcs-fable/src/Compiler/Driver/FxResolver.fs index db0b6c3d75..6f8643c30a 100644 --- a/src/fcs-fable/src/Compiler/Driver/FxResolver.fs +++ b/src/fcs-fable/src/Compiler/Driver/FxResolver.fs @@ -403,7 +403,7 @@ type internal FxResolver | ".NET", "Core" when arr.Length >= 3 -> Some("netcoreapp" + (getTfmNumber arr[2])) | ".NET", "Framework" when arr.Length >= 3 -> - if arr[ 2 ].StartsWith("4.8") then + if arr[2].StartsWith("4.8") then Some "net48" else Some "net472" @@ -936,7 +936,7 @@ type internal FxResolver if useFsiAuxLib then getFsiLibraryImplementationReference () ] - |> List.filter (fun f -> systemAssemblies.Contains(Path.GetFileNameWithoutExtension(f))) + |> List.filter (Path.GetFileNameWithoutExtension >> systemAssemblies.Contains) sdkReferences, false with e -> diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/DependencyResolution.fs b/src/fcs-fable/src/Compiler/Driver/GraphChecking/DependencyResolution.fs index 243d5fb177..9300385b48 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/DependencyResolution.fs +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/DependencyResolution.fs @@ -69,7 +69,7 @@ let processIdentifier (queryResult: QueryTrieNodeResult) (state: FileContentQuer /// Typically used to fold FileContentEntry items over a FileContentQueryState let rec processStateEntry (trie: TrieNode) (state: FileContentQueryState) (entry: FileContentEntry) : FileContentQueryState = match entry with - | FileContentEntry.TopLevelNamespace (topLevelPath, content) -> + | FileContentEntry.TopLevelNamespace(topLevelPath, content) -> let state = match topLevelPath with | [] -> state @@ -107,7 +107,7 @@ let rec processStateEntry (trie: TrieNode) (state: FileContentQueryState) (entry let queryResult = queryTrieDual trie openNS path processIdentifier queryResult acc)) - | FileContentEntry.NestedModule (nestedContent = nestedContent) -> + | FileContentEntry.NestedModule(nestedContent = nestedContent) -> // We don't want our current state to be affect by any open statements in the nested module let nestedState = List.fold (processStateEntry trie) state nestedContent // Afterward we are only interested in the found dependencies in the nested module @@ -154,7 +154,7 @@ let collectGhostDependencies (fileIndex: FileIndex) (trie: TrieNode) (result: Fi // Both Root and module would expose data, so we can ignore them. | Root _ | Module _ -> None - | Namespace (filesDefiningNamespaceWithoutTypes = filesDefiningNamespaceWithoutTypes) -> + | Namespace(filesDefiningNamespaceWithoutTypes = filesDefiningNamespaceWithoutTypes) -> if filesDefiningNamespaceWithoutTypes.Overlaps(result.FoundDependencies) then // The ghost dependency is already covered by a real dependency. None diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/FileContentMapping.fs b/src/fcs-fable/src/Compiler/Driver/GraphChecking/FileContentMapping.fs index cfcdfa703c..bfdaf4beea 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/FileContentMapping.fs +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/FileContentMapping.fs @@ -43,24 +43,23 @@ let visitSynAttributes (attributes: SynAttributes) : FileContentEntry list = let visitSynModuleDecl (decl: SynModuleDecl) : FileContentEntry list = [ match decl with - | SynModuleDecl.Open(target = SynOpenDeclTarget.ModuleOrNamespace (longId, _)) -> + | SynModuleDecl.Open(target = SynOpenDeclTarget.ModuleOrNamespace(longId, _)) -> yield FileContentEntry.OpenStatement(synLongIdentToPath false longId) - | SynModuleDecl.Open(target = SynOpenDeclTarget.Type (typeName, _)) -> yield! visitSynType typeName - | SynModuleDecl.Attributes (attributes, _) -> yield! List.collect visitSynAttributeList attributes - | SynModuleDecl.Expr (expr, _) -> yield! visitSynExpr expr - | SynModuleDecl.NestedModule (moduleInfo = SynComponentInfo (longId = [ ident ]; attributes = attributes); decls = decls) -> + | SynModuleDecl.Open(target = SynOpenDeclTarget.Type(typeName, _)) -> yield! visitSynType typeName + | SynModuleDecl.Attributes(attributes, _) -> yield! List.collect visitSynAttributeList attributes + | SynModuleDecl.Expr(expr, _) -> yield! visitSynExpr expr + | SynModuleDecl.NestedModule(moduleInfo = SynComponentInfo(longId = [ ident ]; attributes = attributes); decls = decls) -> yield! visitSynAttributes attributes yield FileContentEntry.NestedModule(ident.idText, List.collect visitSynModuleDecl decls) | SynModuleDecl.NestedModule _ -> failwith "A nested module cannot have multiple identifiers" - | SynModuleDecl.Let (bindings = bindings) -> yield! List.collect visitBinding bindings - | SynModuleDecl.Types (typeDefns = typeDefns) -> yield! List.collect visitSynTypeDefn typeDefns + | SynModuleDecl.Let(bindings = bindings) -> yield! List.collect visitBinding bindings + | SynModuleDecl.Types(typeDefns = typeDefns) -> yield! List.collect visitSynTypeDefn typeDefns | SynModuleDecl.HashDirective _ -> () - | SynModuleDecl.ModuleAbbrev (longId = longId) -> yield! visitLongIdentForModuleAbbrev longId + | SynModuleDecl.ModuleAbbrev(longId = longId) -> yield! visitLongIdentForModuleAbbrev longId | SynModuleDecl.NamespaceFragment _ -> () - | SynModuleDecl.Exception(exnDefn = SynExceptionDefn (exnRepr = SynExceptionDefnRepr (attributes = attributes - caseName = caseName - longId = longId) - members = members)) -> + | SynModuleDecl.Exception( + exnDefn = SynExceptionDefn( + exnRepr = SynExceptionDefnRepr(attributes = attributes; caseName = caseName; longId = longId); members = members)) -> yield! visitSynAttributes attributes yield! visitSynUnionCase caseName yield! collectFromOption visitLongIdent longId @@ -70,20 +69,19 @@ let visitSynModuleDecl (decl: SynModuleDecl) : FileContentEntry list = let visitSynModuleSigDecl (md: SynModuleSigDecl) = [ match md with - | SynModuleSigDecl.Open(target = SynOpenDeclTarget.ModuleOrNamespace (longId, _)) -> + | SynModuleSigDecl.Open(target = SynOpenDeclTarget.ModuleOrNamespace(longId, _)) -> yield FileContentEntry.OpenStatement(synLongIdentToPath false longId) - | SynModuleSigDecl.Open(target = SynOpenDeclTarget.Type (typeName, _)) -> yield! visitSynType typeName - | SynModuleSigDecl.NestedModule (moduleInfo = SynComponentInfo (longId = [ ident ]; attributes = attributes); moduleDecls = decls) -> + | SynModuleSigDecl.Open(target = SynOpenDeclTarget.Type(typeName, _)) -> yield! visitSynType typeName + | SynModuleSigDecl.NestedModule(moduleInfo = SynComponentInfo(longId = [ ident ]; attributes = attributes); moduleDecls = decls) -> yield! visitSynAttributes attributes yield FileContentEntry.NestedModule(ident.idText, List.collect visitSynModuleSigDecl decls) | SynModuleSigDecl.NestedModule _ -> failwith "A nested module cannot have multiple identifiers" - | SynModuleSigDecl.ModuleAbbrev (longId = longId) -> yield! visitLongIdentForModuleAbbrev longId - | SynModuleSigDecl.Val (valSig, _) -> yield! visitSynValSig valSig - | SynModuleSigDecl.Types (types = types) -> yield! List.collect visitSynTypeDefnSig types - | SynModuleSigDecl.Exception(exnSig = SynExceptionSig (exnRepr = SynExceptionDefnRepr (attributes = attributes - caseName = caseName - longId = longId) - members = members)) -> + | SynModuleSigDecl.ModuleAbbrev(longId = longId) -> yield! visitLongIdentForModuleAbbrev longId + | SynModuleSigDecl.Val(valSig, _) -> yield! visitSynValSig valSig + | SynModuleSigDecl.Types(types = types) -> yield! List.collect visitSynTypeDefnSig types + | SynModuleSigDecl.Exception( + exnSig = SynExceptionSig( + exnRepr = SynExceptionDefnRepr(attributes = attributes; caseName = caseName; longId = longId); members = members)) -> yield! visitSynAttributes attributes yield! visitSynUnionCase caseName yield! collectFromOption visitLongIdent longId @@ -92,43 +90,44 @@ let visitSynModuleSigDecl (md: SynModuleSigDecl) = | SynModuleSigDecl.NamespaceFragment _ -> () ] -let visitSynUnionCase (SynUnionCase (attributes = attributes; caseType = caseType)) = +let visitSynUnionCase (SynUnionCase(attributes = attributes; caseType = caseType)) = [ yield! visitSynAttributes attributes match caseType with | SynUnionCaseKind.Fields cases -> yield! List.collect visitSynField cases - | SynUnionCaseKind.FullType (fullType = fullType) -> yield! visitSynType fullType + | SynUnionCaseKind.FullType(fullType = fullType) -> yield! visitSynType fullType ] -let visitSynEnumCase (SynEnumCase (attributes = attributes)) = visitSynAttributes attributes +let visitSynEnumCase (SynEnumCase(attributes = attributes)) = visitSynAttributes attributes let visitSynTypeDefn - (SynTypeDefn (typeInfo = SynComponentInfo (attributes = attributes; longId = longId; typeParams = typeParams; constraints = constraints) - typeRepr = typeRepr - members = members)) + (SynTypeDefn( + typeInfo = SynComponentInfo(attributes = attributes; longId = longId; typeParams = typeParams; constraints = constraints) + typeRepr = typeRepr + members = members)) : FileContentEntry list = [ yield! visitSynAttributes attributes yield! collectFromOption visitSynTyparDecls typeParams yield! List.collect visitSynTypeConstraint constraints match typeRepr with - | SynTypeDefnRepr.Simple (simpleRepr, _) -> + | SynTypeDefnRepr.Simple(simpleRepr, _) -> match simpleRepr with - | SynTypeDefnSimpleRepr.Union (unionCases = unionCases) -> yield! List.collect visitSynUnionCase unionCases - | SynTypeDefnSimpleRepr.Enum (cases = cases) -> yield! List.collect visitSynEnumCase cases - | SynTypeDefnSimpleRepr.Record (recordFields = recordFields) -> yield! List.collect visitSynField recordFields + | SynTypeDefnSimpleRepr.Union(unionCases = unionCases) -> yield! List.collect visitSynUnionCase unionCases + | SynTypeDefnSimpleRepr.Enum(cases = cases) -> yield! List.collect visitSynEnumCase cases + | SynTypeDefnSimpleRepr.Record(recordFields = recordFields) -> yield! List.collect visitSynField recordFields // This is only used in the typed tree // The parser doesn't construct this | SynTypeDefnSimpleRepr.General _ | SynTypeDefnSimpleRepr.LibraryOnlyILAssembly _ -> () - | SynTypeDefnSimpleRepr.TypeAbbrev (rhsType = rhsType) -> yield! visitSynType rhsType + | SynTypeDefnSimpleRepr.TypeAbbrev(rhsType = rhsType) -> yield! visitSynType rhsType | SynTypeDefnSimpleRepr.None _ // This is only used in the typed tree // The parser doesn't construct this | SynTypeDefnSimpleRepr.Exception _ -> () - | SynTypeDefnRepr.ObjectModel (kind, members, _) -> + | SynTypeDefnRepr.ObjectModel(kind, members, _) -> match kind with - | SynTypeDefnKind.Delegate (signature, _) -> + | SynTypeDefnKind.Delegate(signature, _) -> yield! visitSynType signature yield! List.collect visitSynMemberDefn members | SynTypeDefnKind.Augmentation _ -> @@ -143,28 +142,26 @@ let visitSynTypeDefn ] let visitSynTypeDefnSig - (SynTypeDefnSig (typeInfo = SynComponentInfo (attributes = attributes - longId = longId - typeParams = typeParams - constraints = constraints) - typeRepr = typeRepr - members = members)) + (SynTypeDefnSig( + typeInfo = SynComponentInfo(attributes = attributes; longId = longId; typeParams = typeParams; constraints = constraints) + typeRepr = typeRepr + members = members)) = [ yield! visitSynAttributes attributes yield! collectFromOption visitSynTyparDecls typeParams yield! List.collect visitSynTypeConstraint constraints match typeRepr with - | SynTypeDefnSigRepr.Simple (simpleRepr, _) -> + | SynTypeDefnSigRepr.Simple(simpleRepr, _) -> match simpleRepr with - | SynTypeDefnSimpleRepr.Union (unionCases = unionCases) -> yield! List.collect visitSynUnionCase unionCases - | SynTypeDefnSimpleRepr.Enum (cases = cases) -> yield! List.collect visitSynEnumCase cases - | SynTypeDefnSimpleRepr.Record (recordFields = recordFields) -> yield! List.collect visitSynField recordFields + | SynTypeDefnSimpleRepr.Union(unionCases = unionCases) -> yield! List.collect visitSynUnionCase unionCases + | SynTypeDefnSimpleRepr.Enum(cases = cases) -> yield! List.collect visitSynEnumCase cases + | SynTypeDefnSimpleRepr.Record(recordFields = recordFields) -> yield! List.collect visitSynField recordFields // This is only used in the typed tree // The parser doesn't construct this | SynTypeDefnSimpleRepr.General _ | SynTypeDefnSimpleRepr.LibraryOnlyILAssembly _ -> () - | SynTypeDefnSimpleRepr.TypeAbbrev (rhsType = rhsType) -> yield! visitSynType rhsType + | SynTypeDefnSimpleRepr.TypeAbbrev(rhsType = rhsType) -> yield! visitSynType rhsType // This is a type augmentation in a signature file | SynTypeDefnSimpleRepr.None _ -> yield! visitLongIdent longId @@ -172,9 +169,9 @@ let visitSynTypeDefnSig // This is only used in the typed tree // The parser doesn't construct this | SynTypeDefnSimpleRepr.Exception _ -> () - | SynTypeDefnSigRepr.ObjectModel (kind, members, _) -> + | SynTypeDefnSigRepr.ObjectModel(kind, members, _) -> match kind with - | SynTypeDefnKind.Delegate (signature, _) -> + | SynTypeDefnKind.Delegate(signature, _) -> yield! visitSynType signature yield! List.collect visitSynMemberSig members | _ -> yield! List.collect visitSynMemberSig members @@ -185,43 +182,43 @@ let visitSynTypeDefnSig yield! List.collect visitSynMemberSig members ] -let visitSynValSig (SynValSig (attributes = attributes; synType = synType; synExpr = synExpr)) = +let visitSynValSig (SynValSig(attributes = attributes; synType = synType; synExpr = synExpr)) = [ yield! visitSynAttributes attributes yield! visitSynType synType yield! collectFromOption visitSynExpr synExpr ] -let visitSynField (SynField (attributes = attributes; fieldType = fieldType)) = +let visitSynField (SynField(attributes = attributes; fieldType = fieldType)) = visitSynAttributes attributes @ visitSynType fieldType let visitSynMemberDefn (md: SynMemberDefn) : FileContentEntry list = [ match md with - | SynMemberDefn.Member (memberDefn = binding) -> yield! visitBinding binding + | SynMemberDefn.Member(memberDefn = binding) -> yield! visitBinding binding | SynMemberDefn.Open _ -> () - | SynMemberDefn.GetSetMember (memberDefnForGet, memberDefnForSet, _, _) -> + | SynMemberDefn.GetSetMember(memberDefnForGet, memberDefnForSet, _, _) -> yield! collectFromOption visitBinding memberDefnForGet yield! collectFromOption visitBinding memberDefnForSet - | SynMemberDefn.ImplicitCtor (ctorArgs = ctorArgs) -> yield! visitSynSimplePats ctorArgs - | SynMemberDefn.ImplicitInherit (inheritType, inheritArgs, _, _) -> + | SynMemberDefn.ImplicitCtor(ctorArgs = ctorArgs) -> yield! visitSynSimplePats ctorArgs + | SynMemberDefn.ImplicitInherit(inheritType, inheritArgs, _, _) -> yield! visitSynType inheritType yield! visitSynExpr inheritArgs - | SynMemberDefn.LetBindings (bindings = bindings) -> yield! List.collect visitBinding bindings - | SynMemberDefn.AbstractSlot (slotSig = slotSig) -> yield! visitSynValSig slotSig - | SynMemberDefn.Interface (interfaceType, _, members, _) -> + | SynMemberDefn.LetBindings(bindings = bindings) -> yield! List.collect visitBinding bindings + | SynMemberDefn.AbstractSlot(slotSig = slotSig) -> yield! visitSynValSig slotSig + | SynMemberDefn.Interface(interfaceType, _, members, _) -> yield! visitSynType interfaceType yield! collectFromOption (List.collect visitSynMemberDefn) members - | SynMemberDefn.Inherit (baseType, _, _) -> yield! visitSynType baseType - | SynMemberDefn.ValField (fieldInfo, _) -> yield! visitSynField fieldInfo + | SynMemberDefn.Inherit(baseType, _, _) -> yield! visitSynType baseType + | SynMemberDefn.ValField(fieldInfo, _) -> yield! visitSynField fieldInfo | SynMemberDefn.NestedType _ -> () - | SynMemberDefn.AutoProperty (attributes = attributes; typeOpt = typeOpt; synExpr = synExpr) -> + | SynMemberDefn.AutoProperty(attributes = attributes; typeOpt = typeOpt; synExpr = synExpr) -> yield! visitSynAttributes attributes yield! collectFromOption visitSynType typeOpt yield! visitSynExpr synExpr ] -let visitSynInterfaceImpl (SynInterfaceImpl (interfaceTy = t; bindings = bindings; members = members)) = +let visitSynInterfaceImpl (SynInterfaceImpl(interfaceTy = t; bindings = bindings; members = members)) = [ yield! visitSynType t yield! List.collect visitBinding bindings @@ -232,62 +229,62 @@ let visitSynType (t: SynType) : FileContentEntry list = let rec visit (t: SynType) (continuation: FileContentEntry list -> FileContentEntry list) = match t with | SynType.LongIdent lid -> continuation (visitSynLongIdent lid) - | SynType.App (typeName = typeName; typeArgs = typeArgs) -> + | SynType.App(typeName = typeName; typeArgs = typeArgs) -> let continuations = List.map visit (typeName :: typeArgs) Continuation.concatenate continuations continuation - | SynType.LongIdentApp (typeName = typeName; longDotId = longDotId; typeArgs = typeArgs) -> + | SynType.LongIdentApp(typeName = typeName; longDotId = longDotId; typeArgs = typeArgs) -> let continuations = List.map visit (typeName :: typeArgs) let finalContinuation nodes = visitSynLongIdent longDotId @ List.concat nodes |> continuation Continuation.sequence continuations finalContinuation - | SynType.Tuple (path = path) -> + | SynType.Tuple(path = path) -> let continuations = List.map visit (getTypeFromTuplePath path) Continuation.concatenate continuations continuation - | SynType.AnonRecd (fields = fields) -> + | SynType.AnonRecd(fields = fields) -> let continuations = List.map (snd >> visit) fields Continuation.concatenate continuations continuation - | SynType.Array (elementType = elementType) -> visit elementType continuation - | SynType.Fun (argType, returnType, _, _) -> + | SynType.Array(elementType = elementType) -> visit elementType continuation + | SynType.Fun(argType, returnType, _, _) -> let continuations = List.map visit [ argType; returnType ] Continuation.concatenate continuations continuation | SynType.Var _ -> continuation [] | SynType.Anon _ -> continuation [] - | SynType.WithGlobalConstraints (typeName, constraints, _) -> + | SynType.WithGlobalConstraints(typeName, constraints, _) -> visit typeName (fun nodes -> nodes @ List.collect visitSynTypeConstraint constraints |> continuation) - | SynType.HashConstraint (innerType, _) -> visit innerType continuation - | SynType.MeasurePower (baseMeasure = baseMeasure) -> visit baseMeasure continuation + | SynType.HashConstraint(innerType, _) -> visit innerType continuation + | SynType.MeasurePower(baseMeasure = baseMeasure) -> visit baseMeasure continuation | SynType.StaticConstant _ -> continuation [] - | SynType.StaticConstantExpr (expr, _) -> continuation (visitSynExpr expr) - | SynType.StaticConstantNamed (ident, value, _) -> + | SynType.StaticConstantExpr(expr, _) -> continuation (visitSynExpr expr) + | SynType.StaticConstantNamed(ident, value, _) -> let continuations = List.map visit [ ident; value ] Continuation.concatenate continuations continuation - | SynType.Paren (innerType, _) -> visit innerType continuation - | SynType.SignatureParameter (attributes = attributes; usedType = usedType) -> + | SynType.Paren(innerType, _) -> visit innerType continuation + | SynType.SignatureParameter(attributes = attributes; usedType = usedType) -> visit usedType (fun nodes -> [ yield! visitSynAttributes attributes; yield! nodes ] |> continuation) - | SynType.Or (lhsType, rhsType, _, _) -> + | SynType.Or(lhsType, rhsType, _, _) -> let continuations = List.map visit [ lhsType; rhsType ] Continuation.concatenate continuations continuation | SynType.FromParseError _ -> continuation [] - | SynType.Intersection (types = types) -> + | SynType.Intersection(types = types) -> let continuations = List.map visit types Continuation.concatenate continuations continuation visit t id -let visitSynValTyparDecls (SynValTyparDecls (typars = typars)) = +let visitSynValTyparDecls (SynValTyparDecls(typars = typars)) = collectFromOption visitSynTyparDecls typars let visitSynTyparDecls (td: SynTyparDecls) : FileContentEntry list = match td with - | SynTyparDecls.PostfixList (decls, constraints, _) -> + | SynTyparDecls.PostfixList(decls, constraints, _) -> List.collect visitSynTyparDecl decls @ List.collect visitSynTypeConstraint constraints - | SynTyparDecls.PrefixList (decls = decls) -> List.collect visitSynTyparDecl decls - | SynTyparDecls.SinglePrefix (decl = decl) -> visitSynTyparDecl decl + | SynTyparDecls.PrefixList(decls = decls) -> List.collect visitSynTyparDecl decls + | SynTyparDecls.SinglePrefix(decl = decl) -> visitSynTyparDecl decl -let visitSynTyparDecl (SynTyparDecl (attributes = attributes; intersectionConstraints = constraints)) = +let visitSynTyparDecl (SynTyparDecl(attributes = attributes; intersectionConstraints = constraints)) = visitSynAttributes attributes @ List.collect visitSynType constraints let visitSynTypeConstraint (tc: SynTypeConstraint) : FileContentEntry list = @@ -299,50 +296,49 @@ let visitSynTypeConstraint (tc: SynTypeConstraint) : FileContentEntry list = | SynTypeConstraint.WhereTyparSupportsNull _ | SynTypeConstraint.WhereTyparIsComparable _ | SynTypeConstraint.WhereTyparIsEquatable _ -> [] - | SynTypeConstraint.WhereTyparDefaultsToType (typeName = typeName) -> visitSynType typeName - | SynTypeConstraint.WhereTyparSubtypeOfType (typeName = typeName) -> visitSynType typeName - | SynTypeConstraint.WhereTyparSupportsMember (typars, memberSig, _) -> visitSynType typars @ visitSynMemberSig memberSig - | SynTypeConstraint.WhereTyparIsEnum (typeArgs = typeArgs) -> List.collect visitSynType typeArgs - | SynTypeConstraint.WhereTyparIsDelegate (typeArgs = typeArgs) -> List.collect visitSynType typeArgs + | SynTypeConstraint.WhereTyparDefaultsToType(typeName = typeName) -> visitSynType typeName + | SynTypeConstraint.WhereTyparSubtypeOfType(typeName = typeName) -> visitSynType typeName + | SynTypeConstraint.WhereTyparSupportsMember(typars, memberSig, _) -> visitSynType typars @ visitSynMemberSig memberSig + | SynTypeConstraint.WhereTyparIsEnum(typeArgs = typeArgs) -> List.collect visitSynType typeArgs + | SynTypeConstraint.WhereTyparIsDelegate(typeArgs = typeArgs) -> List.collect visitSynType typeArgs let visitSynExpr (e: SynExpr) : FileContentEntry list = let rec visit (e: SynExpr) (continuation: FileContentEntry list -> FileContentEntry list) : FileContentEntry list = match e with | SynExpr.Const _ -> continuation [] - | SynExpr.Paren (expr = expr) -> visit expr continuation - | SynExpr.Quote (operator = operator; quotedExpr = quotedExpr) -> + | SynExpr.Paren(expr = expr) -> visit expr continuation + | SynExpr.Quote(operator = operator; quotedExpr = quotedExpr) -> visit operator (fun operatorNodes -> visit quotedExpr (fun quotedNodes -> operatorNodes @ quotedNodes |> continuation)) - | SynExpr.Typed (expr, targetType, _) -> visit expr (fun nodes -> nodes @ visitSynType targetType |> continuation) - | SynExpr.Tuple (exprs = exprs) -> + | SynExpr.Typed(expr, targetType, _) -> visit expr (fun nodes -> nodes @ visitSynType targetType |> continuation) + | SynExpr.Tuple(exprs = exprs) -> let continuations: ((FileContentEntry list -> FileContentEntry list) -> FileContentEntry list) list = List.map visit exprs Continuation.concatenate continuations continuation - | SynExpr.AnonRecd (copyInfo = copyInfo; recordFields = recordFields) -> + | SynExpr.AnonRecd(copyInfo = copyInfo; recordFields = recordFields) -> let continuations = match copyInfo with | None -> List.map (fun (_, _, e) -> visit e) recordFields - | Some (cp, _) -> visit cp :: List.map (fun (_, _, e) -> visit e) recordFields + | Some(cp, _) -> visit cp :: List.map (fun (_, _, e) -> visit e) recordFields Continuation.concatenate continuations continuation - | SynExpr.ArrayOrList (exprs = exprs) -> + | SynExpr.ArrayOrList(exprs = exprs) -> let continuations = List.map visit exprs Continuation.concatenate continuations continuation - | SynExpr.Record (baseInfo = baseInfo; copyInfo = copyInfo; recordFields = recordFields) -> + | SynExpr.Record(baseInfo = baseInfo; copyInfo = copyInfo; recordFields = recordFields) -> let fieldNodes = [ - for SynExprRecordField (fieldName = (si, _); expr = expr) in recordFields do + for SynExprRecordField(fieldName = (si, _); expr = expr) in recordFields do yield! visitSynLongIdent si yield! collectFromOption visitSynExpr expr ] match baseInfo, copyInfo with - | Some (t, e, _, _, _), None -> - visit e (fun nodes -> [ yield! visitSynType t; yield! nodes; yield! fieldNodes ] |> continuation) - | None, Some (e, _) -> visit e (fun nodes -> nodes @ fieldNodes |> continuation) + | Some(t, e, _, _, _), None -> visit e (fun nodes -> [ yield! visitSynType t; yield! nodes; yield! fieldNodes ] |> continuation) + | None, Some(e, _) -> visit e (fun nodes -> nodes @ fieldNodes |> continuation) | _ -> continuation fieldNodes - | SynExpr.New (targetType = targetType; expr = expr) -> visit expr (fun nodes -> visitSynType targetType @ nodes |> continuation) - | SynExpr.ObjExpr (objType, argOptions, _, bindings, members, extraImpls, _, _) -> + | SynExpr.New(targetType = targetType; expr = expr) -> visit expr (fun nodes -> visitSynType targetType @ nodes |> continuation) + | SynExpr.ObjExpr(objType, argOptions, _, bindings, members, extraImpls, _, _) -> [ yield! visitSynType objType yield! collectFromOption (fst >> visitSynExpr) argOptions @@ -351,88 +347,88 @@ let visitSynExpr (e: SynExpr) : FileContentEntry list = yield! List.collect visitSynInterfaceImpl extraImpls ] |> continuation - | SynExpr.While (whileExpr = whileExpr; doExpr = doExpr) -> + | SynExpr.While(whileExpr = whileExpr; doExpr = doExpr) -> visit whileExpr (fun whileNodes -> visit doExpr (fun doNodes -> whileNodes @ doNodes |> continuation)) - | SynExpr.For (identBody = identBody; toBody = toBody; doBody = doBody) -> + | SynExpr.For(identBody = identBody; toBody = toBody; doBody = doBody) -> let continuations = List.map visit [ identBody; toBody; doBody ] Continuation.concatenate continuations continuation - | SynExpr.ForEach (pat = pat; enumExpr = enumExpr; bodyExpr = bodyExpr) -> + | SynExpr.ForEach(pat = pat; enumExpr = enumExpr; bodyExpr = bodyExpr) -> visit enumExpr (fun enumNodes -> visit bodyExpr (fun bodyNodes -> [ yield! visitPat pat; yield! enumNodes; yield! bodyNodes ] |> continuation)) - | SynExpr.ArrayOrListComputed (expr = expr) -> visit expr continuation - | SynExpr.IndexRange (expr1 = expr1; expr2 = expr2) -> + | SynExpr.ArrayOrListComputed(expr = expr) -> visit expr continuation + | SynExpr.IndexRange(expr1 = expr1; expr2 = expr2) -> match expr1, expr2 with | None, None -> continuation [] | Some e, None | None, Some e -> visit e continuation | Some e1, Some e2 -> visit e1 (fun e1Nodes -> visit e2 (fun e2Nodes -> e1Nodes @ e2Nodes |> continuation)) - | SynExpr.IndexFromEnd (expr, _) -> visit expr continuation - | SynExpr.ComputationExpr (expr = expr) -> visit expr continuation - | SynExpr.Lambda (args = args; body = body) -> visit body (fun bodyNodes -> visitSynSimplePats args @ bodyNodes |> continuation) - | SynExpr.DotLambda (expr = expr) -> visit expr continuation - | SynExpr.MatchLambda (matchClauses = clauses) -> List.collect visitSynMatchClause clauses |> continuation - | SynExpr.Match (expr = expr; clauses = clauses) -> + | SynExpr.IndexFromEnd(expr, _) -> visit expr continuation + | SynExpr.ComputationExpr(expr = expr) -> visit expr continuation + | SynExpr.Lambda(args = args; body = body) -> visit body (fun bodyNodes -> visitSynSimplePats args @ bodyNodes |> continuation) + | SynExpr.DotLambda(expr = expr) -> visit expr continuation + | SynExpr.MatchLambda(matchClauses = clauses) -> List.collect visitSynMatchClause clauses |> continuation + | SynExpr.Match(expr = expr; clauses = clauses) -> visit expr (fun exprNodes -> [ yield! exprNodes; yield! List.collect visitSynMatchClause clauses ] |> continuation) - | SynExpr.Do (expr, _) -> visit expr continuation - | SynExpr.Assert (expr, _) -> visit expr continuation - | SynExpr.App (funcExpr = funcExpr; argExpr = argExpr) -> + | SynExpr.Do(expr, _) -> visit expr continuation + | SynExpr.Assert(expr, _) -> visit expr continuation + | SynExpr.App(funcExpr = funcExpr; argExpr = argExpr) -> visit funcExpr (fun funcNodes -> visit argExpr (fun argNodes -> funcNodes @ argNodes |> continuation)) - | SynExpr.TypeApp (expr = expr; typeArgs = typeArgs) -> + | SynExpr.TypeApp(expr = expr; typeArgs = typeArgs) -> visit expr (fun exprNodes -> exprNodes @ List.collect visitSynType typeArgs |> continuation) - | SynExpr.LetOrUse (bindings = bindings; body = body) -> + | SynExpr.LetOrUse(bindings = bindings; body = body) -> visit body (fun nodes -> List.collect visitBinding bindings @ nodes |> continuation) - | SynExpr.TryWith (tryExpr = tryExpr; withCases = withCases) -> + | SynExpr.TryWith(tryExpr = tryExpr; withCases = withCases) -> visit tryExpr (fun nodes -> nodes @ List.collect visitSynMatchClause withCases |> continuation) - | SynExpr.TryFinally (tryExpr = tryExpr; finallyExpr = finallyExpr) -> + | SynExpr.TryFinally(tryExpr = tryExpr; finallyExpr = finallyExpr) -> visit tryExpr (fun tNodes -> visit finallyExpr (fun fNodes -> tNodes @ fNodes |> continuation)) - | SynExpr.Lazy (expr, _) -> visit expr continuation - | SynExpr.Sequential (expr1 = expr1; expr2 = expr2) -> + | SynExpr.Lazy(expr, _) -> visit expr continuation + | SynExpr.Sequential(expr1 = expr1; expr2 = expr2) -> visit expr1 (fun nodes1 -> visit expr2 (fun nodes2 -> nodes1 @ nodes2 |> continuation)) - | SynExpr.IfThenElse (ifExpr = ifExpr; thenExpr = thenExpr; elseExpr = elseExpr) -> + | SynExpr.IfThenElse(ifExpr = ifExpr; thenExpr = thenExpr; elseExpr = elseExpr) -> let continuations = List.map visit (ifExpr :: thenExpr :: Option.toList elseExpr) Continuation.concatenate continuations continuation | SynExpr.Typar _ -> continuation [] | SynExpr.Ident _ -> continuation [] - | SynExpr.LongIdent (longDotId = longDotId) -> continuation (visitSynLongIdent longDotId) - | SynExpr.LongIdentSet (longDotId, expr, _) -> visit expr (fun nodes -> visitSynLongIdent longDotId @ nodes |> continuation) - | SynExpr.DotGet (expr = expr; longDotId = longDotId) -> + | SynExpr.LongIdent(longDotId = longDotId) -> continuation (visitSynLongIdent longDotId) + | SynExpr.LongIdentSet(longDotId, expr, _) -> visit expr (fun nodes -> visitSynLongIdent longDotId @ nodes |> continuation) + | SynExpr.DotGet(expr = expr; longDotId = longDotId) -> visit expr (fun nodes -> visitSynLongIdent longDotId @ nodes |> continuation) - | SynExpr.DotSet (targetExpr, longDotId, rhsExpr, _) -> + | SynExpr.DotSet(targetExpr, longDotId, rhsExpr, _) -> visit targetExpr (fun tNodes -> visit rhsExpr (fun rNodes -> [ yield! tNodes; yield! visitSynLongIdent longDotId; yield! rNodes ] |> continuation)) - | SynExpr.Set (targetExpr, rhsExpr, _) -> + | SynExpr.Set(targetExpr, rhsExpr, _) -> let continuations = List.map visit [ targetExpr; rhsExpr ] Continuation.concatenate continuations continuation - | SynExpr.DotIndexedGet (objectExpr, indexArgs, _, _) -> + | SynExpr.DotIndexedGet(objectExpr, indexArgs, _, _) -> let continuations = List.map visit [ objectExpr; indexArgs ] Continuation.concatenate continuations continuation - | SynExpr.DotIndexedSet (objectExpr, indexArgs, valueExpr, _, _, _) -> + | SynExpr.DotIndexedSet(objectExpr, indexArgs, valueExpr, _, _, _) -> let continuations = List.map visit [ objectExpr; indexArgs; valueExpr ] Continuation.concatenate continuations continuation - | SynExpr.NamedIndexedPropertySet (longDotId, expr1, expr2, _) -> + | SynExpr.NamedIndexedPropertySet(longDotId, expr1, expr2, _) -> visit expr1 (fun nodes1 -> visit expr2 (fun nodes2 -> [ yield! visitSynLongIdent longDotId; yield! nodes1; yield! nodes2 ] |> continuation)) - | SynExpr.DotNamedIndexedPropertySet (targetExpr, longDotId, argExpr, rhsExpr, _) -> + | SynExpr.DotNamedIndexedPropertySet(targetExpr, longDotId, argExpr, rhsExpr, _) -> let continuations = List.map visit [ targetExpr; argExpr; rhsExpr ] let finalContinuation nodes = visitSynLongIdent longDotId @ List.concat nodes |> continuation Continuation.sequence continuations finalContinuation - | SynExpr.TypeTest (expr, targetType, _) -> visit expr (fun nodes -> nodes @ visitSynType targetType |> continuation) - | SynExpr.Upcast (expr, targetType, _) -> visit expr (fun nodes -> nodes @ visitSynType targetType |> continuation) - | SynExpr.Downcast (expr, targetType, _) -> visit expr (fun nodes -> nodes @ visitSynType targetType |> continuation) - | SynExpr.InferredUpcast (expr, _) -> visit expr continuation - | SynExpr.InferredDowncast (expr, _) -> visit expr continuation + | SynExpr.TypeTest(expr, targetType, _) -> visit expr (fun nodes -> nodes @ visitSynType targetType |> continuation) + | SynExpr.Upcast(expr, targetType, _) -> visit expr (fun nodes -> nodes @ visitSynType targetType |> continuation) + | SynExpr.Downcast(expr, targetType, _) -> visit expr (fun nodes -> nodes @ visitSynType targetType |> continuation) + | SynExpr.InferredUpcast(expr, _) -> visit expr continuation + | SynExpr.InferredDowncast(expr, _) -> visit expr continuation | SynExpr.Null _ -> continuation [] - | SynExpr.AddressOf (expr = expr) -> visit expr continuation - | SynExpr.TraitCall (supportTys, traitSig, argExpr, _) -> + | SynExpr.AddressOf(expr = expr) -> visit expr continuation + | SynExpr.TraitCall(supportTys, traitSig, argExpr, _) -> visit argExpr (fun nodes -> [ yield! visitSynType supportTys @@ -440,38 +436,38 @@ let visitSynExpr (e: SynExpr) : FileContentEntry list = yield! nodes ] |> continuation) - | SynExpr.JoinIn (lhsExpr, _, rhsExpr, _) -> + | SynExpr.JoinIn(lhsExpr, _, rhsExpr, _) -> let continuations = List.map visit [ lhsExpr; rhsExpr ] Continuation.concatenate continuations continuation | SynExpr.ImplicitZero _ -> continuation [] - | SynExpr.SequentialOrImplicitYield (_, expr1, expr2, _, _) -> + | SynExpr.SequentialOrImplicitYield(_, expr1, expr2, _, _) -> let continuations = List.map visit [ expr1; expr2 ] Continuation.concatenate continuations continuation - | SynExpr.YieldOrReturn (expr = expr) -> visit expr continuation - | SynExpr.YieldOrReturnFrom (expr = expr) -> visit expr continuation - | SynExpr.LetOrUseBang (pat = pat; rhs = rhs; andBangs = andBangs; body = body) -> + | SynExpr.YieldOrReturn(expr = expr) -> visit expr continuation + | SynExpr.YieldOrReturnFrom(expr = expr) -> visit expr continuation + | SynExpr.LetOrUseBang(pat = pat; rhs = rhs; andBangs = andBangs; body = body) -> let continuations = - let andBangExprs = List.map (fun (SynExprAndBang (body = body)) -> body) andBangs + let andBangExprs = List.map (fun (SynExprAndBang(body = body)) -> body) andBangs List.map visit (body :: rhs :: andBangExprs) let finalContinuation nodes = [ yield! List.concat nodes yield! visitPat pat - for SynExprAndBang (pat = pat) in andBangs do + for SynExprAndBang(pat = pat) in andBangs do yield! visitPat pat ] |> continuation Continuation.sequence continuations finalContinuation - | SynExpr.MatchBang (expr = expr; clauses = clauses) -> + | SynExpr.MatchBang(expr = expr; clauses = clauses) -> visit expr (fun exprNodes -> [ yield! exprNodes; yield! List.collect visitSynMatchClause clauses ] |> continuation) - | SynExpr.DoBang (expr, _) -> visit expr continuation - | SynExpr.WhileBang (whileExpr = whileExpr; doExpr = doExpr) -> + | SynExpr.DoBang(expr, _) -> visit expr continuation + | SynExpr.WhileBang(whileExpr = whileExpr; doExpr = doExpr) -> visit whileExpr (fun whileNodes -> visit doExpr (fun doNodes -> whileNodes @ doNodes |> continuation)) - | SynExpr.LibraryOnlyILAssembly (typeArgs = typeArgs; args = args; retTy = retTy) -> + | SynExpr.LibraryOnlyILAssembly(typeArgs = typeArgs; args = args; retTy = retTy) -> let typeNodes = List.collect visitSynType (typeArgs @ retTy) let continuations = List.map visit args @@ -479,11 +475,11 @@ let visitSynExpr (e: SynExpr) : FileContentEntry list = List.concat nodes @ typeNodes |> continuation Continuation.sequence continuations finalContinuation - | SynExpr.LibraryOnlyStaticOptimization (constraints, expr, optimizedExpr, _) -> + | SynExpr.LibraryOnlyStaticOptimization(constraints, expr, optimizedExpr, _) -> let constraintTypes = constraints |> List.choose (function - | SynStaticOptimizationConstraint.WhenTyparTyconEqualsTycon (rhsType = t) -> Some t + | SynStaticOptimizationConstraint.WhenTyparTyconEqualsTycon(rhsType = t) -> Some t | SynStaticOptimizationConstraint.WhenTyparIsStruct _ -> None) visit expr (fun eNodes -> @@ -494,28 +490,28 @@ let visitSynExpr (e: SynExpr) : FileContentEntry list = yield! oNodes ] |> continuation)) - | SynExpr.LibraryOnlyUnionCaseFieldGet (expr, longId, _, _) -> + | SynExpr.LibraryOnlyUnionCaseFieldGet(expr, longId, _, _) -> visit expr (fun eNodes -> visitLongIdent longId @ eNodes |> continuation) - | SynExpr.LibraryOnlyUnionCaseFieldSet (expr, longId, _, rhsExpr, _) -> + | SynExpr.LibraryOnlyUnionCaseFieldSet(expr, longId, _, rhsExpr, _) -> visit expr (fun eNodes -> visit rhsExpr (fun rhsNodes -> [ yield! visitLongIdent longId; yield! eNodes; yield! rhsNodes ] |> continuation)) | SynExpr.ArbitraryAfterError _ -> continuation [] | SynExpr.FromParseError _ -> continuation [] | SynExpr.DiscardAfterMissingQualificationAfterDot _ -> continuation [] - | SynExpr.Fixed (expr, _) -> visit expr continuation - | SynExpr.InterpolatedString (contents = contents) -> + | SynExpr.Fixed(expr, _) -> visit expr continuation + | SynExpr.InterpolatedString(contents = contents) -> let continuations = List.map visit (List.choose (function - | SynInterpolatedStringPart.FillExpr (fillExpr = e) -> Some e + | SynInterpolatedStringPart.FillExpr(fillExpr = e) -> Some e | SynInterpolatedStringPart.String _ -> None) contents) Continuation.concatenate continuations continuation | SynExpr.DebugPoint _ -> continuation [] - | SynExpr.Dynamic (funcExpr, _, argExpr, _) -> + | SynExpr.Dynamic(funcExpr, _, argExpr, _) -> let continuations = List.map visit [ funcExpr; argExpr ] Continuation.concatenate continuations continuation @@ -524,38 +520,38 @@ let visitSynExpr (e: SynExpr) : FileContentEntry list = let visitPat (p: SynPat) : FileContentEntry list = let rec visit (p: SynPat) (continuation: FileContentEntry list -> FileContentEntry list) : FileContentEntry list = match p with - | SynPat.Paren (pat = pat) -> visit pat continuation - | SynPat.Typed (pat = pat; targetType = t) -> visit pat (fun nodes -> nodes @ visitSynType t) + | SynPat.Paren(pat = pat) -> visit pat continuation + | SynPat.Typed(pat = pat; targetType = t) -> visit pat (fun nodes -> nodes @ visitSynType t) | SynPat.Const _ -> continuation [] | SynPat.Wild _ -> continuation [] | SynPat.Named _ -> continuation [] - | SynPat.Attrib (pat, attributes, _) -> visit pat (fun nodes -> visitSynAttributes attributes @ nodes |> continuation) - | SynPat.Or (lhsPat, rhsPat, _, _) -> + | SynPat.Attrib(pat, attributes, _) -> visit pat (fun nodes -> visitSynAttributes attributes @ nodes |> continuation) + | SynPat.Or(lhsPat, rhsPat, _, _) -> let continuations = List.map visit [ lhsPat; rhsPat ] Continuation.concatenate continuations continuation - | SynPat.ListCons (lhsPat, rhsPat, _, _) -> + | SynPat.ListCons(lhsPat, rhsPat, _, _) -> let continuations = List.map visit [ lhsPat; rhsPat ] Continuation.concatenate continuations continuation - | SynPat.Ands (pats, _) -> + | SynPat.Ands(pats, _) -> let continuations = List.map visit pats Continuation.concatenate continuations continuation - | SynPat.As (lhsPat, rhsPat, _) -> + | SynPat.As(lhsPat, rhsPat, _) -> let continuations = List.map visit [ lhsPat; rhsPat ] Continuation.concatenate continuations continuation - | SynPat.LongIdent (longDotId = longDotId; typarDecls = typarDecls; argPats = argPats) -> + | SynPat.LongIdent(longDotId = longDotId; typarDecls = typarDecls; argPats = argPats) -> continuation [ yield! visitSynLongIdent longDotId yield! collectFromOption visitSynValTyparDecls typarDecls yield! visitSynArgPats argPats ] - | SynPat.Tuple (elementPats = elementPats) -> + | SynPat.Tuple(elementPats = elementPats) -> let continuations = List.map visit elementPats Continuation.concatenate continuations continuation - | SynPat.ArrayOrList (_, elementPats, _) -> + | SynPat.ArrayOrList(_, elementPats, _) -> let continuations = List.map visit elementPats Continuation.concatenate continuations continuation - | SynPat.Record (fieldPats, _) -> + | SynPat.Record(fieldPats, _) -> let pats = List.map (fun (_, _, p) -> p) fieldPats let lids = @@ -572,8 +568,8 @@ let visitPat (p: SynPat) : FileContentEntry list = Continuation.sequence continuations finalContinuation | SynPat.Null _ -> continuation [] | SynPat.OptionalVal _ -> continuation [] - | SynPat.IsInst (t, _) -> continuation (visitSynType t) - | SynPat.QuoteExpr (expr, _) -> continuation (visitSynExpr expr) + | SynPat.IsInst(t, _) -> continuation (visitSynType t) + | SynPat.QuoteExpr(expr, _) -> continuation (visitSynExpr expr) | SynPat.InstanceMember _ -> continuation [] | SynPat.FromParseError _ -> continuation [] @@ -582,7 +578,7 @@ let visitPat (p: SynPat) : FileContentEntry list = let visitSynArgPats (argPat: SynArgPats) = match argPat with | SynArgPats.Pats args -> List.collect visitPat args - | SynArgPats.NamePatPairs (pats = pats) -> + | SynArgPats.NamePatPairs(pats = pats) -> [ for _, _, p in pats do yield! visitPat p @@ -591,21 +587,21 @@ let visitSynArgPats (argPat: SynArgPats) = let visitSynSimplePat (pat: SynSimplePat) = match pat with | SynSimplePat.Id _ -> [] - | SynSimplePat.Attrib (pat, attributes, _) -> visitSynSimplePat pat @ visitSynAttributes attributes - | SynSimplePat.Typed (pat, t, _) -> visitSynSimplePat pat @ visitSynType t + | SynSimplePat.Attrib(pat, attributes, _) -> visitSynSimplePat pat @ visitSynAttributes attributes + | SynSimplePat.Typed(pat, t, _) -> visitSynSimplePat pat @ visitSynType t let visitSynSimplePats (pats: SynSimplePats) = match pats with - | SynSimplePats.SimplePats (pats = pats) -> List.collect visitSynSimplePat pats + | SynSimplePats.SimplePats(pats = pats) -> List.collect visitSynSimplePat pats -let visitSynMatchClause (SynMatchClause (pat = pat; whenExpr = whenExpr; resultExpr = resultExpr)) = +let visitSynMatchClause (SynMatchClause(pat = pat; whenExpr = whenExpr; resultExpr = resultExpr)) = [ yield! visitPat pat yield! collectFromOption visitSynExpr whenExpr yield! visitSynExpr resultExpr ] -let visitBinding (SynBinding (attributes = attributes; headPat = headPat; returnInfo = returnInfo; expr = expr)) : FileContentEntry list = +let visitBinding (SynBinding(attributes = attributes; headPat = headPat; returnInfo = returnInfo; expr = expr)) : FileContentEntry list = [ yield! visitSynAttributes attributes match headPat with @@ -615,22 +611,22 @@ let visitBinding (SynBinding (attributes = attributes; headPat = headPat; return yield! visitSynExpr expr ] -let visitSynBindingReturnInfo (SynBindingReturnInfo (typeName = typeName; attributes = attributes)) = +let visitSynBindingReturnInfo (SynBindingReturnInfo(typeName = typeName; attributes = attributes)) = visitSynAttributes attributes @ visitSynType typeName let visitSynMemberSig (ms: SynMemberSig) : FileContentEntry list = match ms with - | SynMemberSig.Member (memberSig = memberSig) -> visitSynValSig memberSig - | SynMemberSig.Interface (interfaceType, _) -> visitSynType interfaceType - | SynMemberSig.Inherit (inheritedType, _) -> visitSynType inheritedType - | SynMemberSig.ValField (field, _) -> visitSynField field + | SynMemberSig.Member(memberSig = memberSig) -> visitSynValSig memberSig + | SynMemberSig.Interface(interfaceType, _) -> visitSynType interfaceType + | SynMemberSig.Inherit(inheritedType, _) -> visitSynType inheritedType + | SynMemberSig.ValField(field, _) -> visitSynField field | SynMemberSig.NestedType _ -> [] let mkFileContent (f: FileInProject) : FileContentEntry list = [ match f.ParsedInput with - | ParsedInput.SigFile (ParsedSigFileInput (contents = contents)) -> - for SynModuleOrNamespaceSig (longId = longId; kind = kind; decls = decls; attribs = attribs) in contents do + | ParsedInput.SigFile(ParsedSigFileInput(contents = contents)) -> + for SynModuleOrNamespaceSig(longId = longId; kind = kind; decls = decls; attribs = attribs) in contents do yield! List.collect visitSynAttributeList attribs match kind with @@ -642,8 +638,8 @@ let mkFileContent (f: FileInProject) : FileContentEntry list = | SynModuleOrNamespaceKind.NamedModule -> let path = longIdentToPath true longId yield FileContentEntry.TopLevelNamespace(path, List.collect visitSynModuleSigDecl decls) - | ParsedInput.ImplFile (ParsedImplFileInput (contents = contents)) -> - for SynModuleOrNamespace (longId = longId; attribs = attribs; kind = kind; decls = decls) in contents do + | ParsedInput.ImplFile(ParsedImplFileInput(contents = contents)) -> + for SynModuleOrNamespace(longId = longId; attribs = attribs; kind = kind; decls = decls) in contents do yield! List.collect visitSynAttributeList attribs match kind with diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/Graph.fs b/src/fcs-fable/src/Compiler/Driver/GraphChecking/Graph.fs index 19ef211e4c..075859e6c4 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/Graph.fs +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/Graph.fs @@ -12,7 +12,7 @@ module internal Graph = let map (f: 'T -> 'U) (graph: Graph<'T>) : Graph<'U> = graph - |> Seq.map (fun (KeyValue (node, deps)) -> f node, deps |> Array.map f) + |> Seq.map (fun (KeyValue(node, deps)) -> f node, deps |> Array.map f) |> make let addIfMissing<'Node when 'Node: equality> (nodes: 'Node seq) (graph: Graph<'Node>) : Graph<'Node> = @@ -24,7 +24,7 @@ module internal Graph = graph |> Seq.toArray |> Array.append entriesToAdd - |> Array.map (fun (KeyValue (k, v)) -> k, v) + |> Array.map (fun (KeyValue(k, v)) -> k, v) |> readOnlyDict let transitive<'Node when 'Node: equality> (graph: Graph<'Node>) : Graph<'Node> = @@ -51,7 +51,7 @@ module internal Graph = let reverse (originalGraph: Graph<'Node>) : Graph<'Node> = originalGraph // Collect all edges - |> Seq.collect (fun (KeyValue (idx, deps)) -> deps |> Array.map (fun dep -> idx, dep)) + |> Seq.collect (fun (KeyValue(idx, deps)) -> deps |> Array.map (fun dep -> idx, dep)) // Group dependants of the same dependencies together |> Seq.groupBy snd // Construct reversed graph @@ -64,7 +64,7 @@ module internal Graph = let join (xs: string[]) = System.String.Join(", ", xs) graph - |> Seq.iter (fun (KeyValue (file, deps)) -> printfn $"{file} -> {deps |> Array.map nodePrinter |> join}") + |> Seq.iter (fun (KeyValue(file, deps)) -> printfn $"{file} -> {deps |> Array.map nodePrinter |> join}") let print (graph: Graph<'Node>) : unit = printCustom graph (fun node -> node.ToString()) @@ -76,10 +76,10 @@ module internal Graph = appendLine "```mermaid" appendLine "flowchart RL" - for KeyValue ((idx, fileName), _) in graph do + for KeyValue((idx, fileName), _) in graph do appendLine $" %i{idx}[\"%s{fileName}\"]" - for KeyValue ((idx, _), deps) in graph do + for KeyValue((idx, _), deps) in graph do for depIdx, _depFileName in deps do appendLine $" %i{idx} --> %i{depIdx}" diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/GraphProcessing.fs b/src/fcs-fable/src/Compiler/Driver/GraphChecking/GraphProcessing.fs index c30a64c74d..7d92fc41a5 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/GraphProcessing.fs +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/GraphProcessing.fs @@ -122,7 +122,7 @@ let processGraph<'Item, 'Result when 'Item: equality and 'Item: comparison> let! res = async { processNode node } |> Async.Catch match res with - | Choice1Of2 () -> () + | Choice1Of2() -> () | Choice2Of2 ex -> raiseExn (Some(node.Info.Item, ex)) }, cts.Token @@ -161,7 +161,7 @@ let processGraph<'Item, 'Result when 'Item: equality and 'Item: comparison> // If we stopped early due to an exception, reraise it. match getExn () with | None -> () - | Some (item, ex) -> raise (System.Exception($"Encountered exception when processing item '{item}'", ex)) + | Some(item, ex) -> raise (System.Exception($"Encountered exception when processing item '{item}'", ex)) // All calculations succeeded - extract the results and sort in input order. nodes.Values diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/TrieMapping.fs b/src/fcs-fable/src/Compiler/Driver/GraphChecking/TrieMapping.fs index 60fa5b8b69..a1ab4fadfc 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/TrieMapping.fs +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/TrieMapping.fs @@ -48,15 +48,15 @@ let isAnyAttributeAutoOpen (attributes: SynAttributes) = /// This can happen when a `namespace global` is used, or when a module (with a single ident name) has the `[]` attribute. let doesFileExposeContentToTheRoot (ast: ParsedInput) : bool = match ast with - | ParsedInput.SigFile (ParsedSigFileInput (contents = contents)) -> + | ParsedInput.SigFile(ParsedSigFileInput(contents = contents)) -> contents - |> List.exists (fun (SynModuleOrNamespaceSig (attribs = attribs; longId = longId; kind = kind)) -> + |> List.exists (fun (SynModuleOrNamespaceSig(attribs = attribs; longId = longId; kind = kind)) -> (isAnyAttributeAutoOpen attribs && longId.Length < 2) || kind = SynModuleOrNamespaceKind.GlobalNamespace) - | ParsedInput.ImplFile (ParsedImplFileInput (contents = contents)) -> + | ParsedInput.ImplFile(ParsedImplFileInput(contents = contents)) -> contents - |> List.exists (fun (SynModuleOrNamespace (attribs = attribs; longId = longId; kind = kind)) -> + |> List.exists (fun (SynModuleOrNamespace(attribs = attribs; longId = longId; kind = kind)) -> (isAnyAttributeAutoOpen attribs && longId.Length < 2) || kind = SynModuleOrNamespaceKind.GlobalNamespace) @@ -65,10 +65,9 @@ let rec mergeTrieNodes (accumulatorTrie: TrieNode) (currentTrie: TrieNode) : Tri let nextNodeInfo: TrieNodeInfo = match accumulatorTrie.Current, currentTrie.Current with | TrieNodeInfo.Root accFiles, TrieNodeInfo.Root currentFiles -> TrieNodeInfo.Root(accFiles.Union currentFiles) - | TrieNodeInfo.Namespace (name = name - filesThatExposeTypes = currentFilesThatExposeTypes - filesDefiningNamespaceWithoutTypes = currentFilesWithoutTypes), - TrieNodeInfo.Namespace (filesThatExposeTypes = otherFiles; filesDefiningNamespaceWithoutTypes = otherFilesWithoutTypes) -> + | TrieNodeInfo.Namespace( + name = name; filesThatExposeTypes = currentFilesThatExposeTypes; filesDefiningNamespaceWithoutTypes = currentFilesWithoutTypes), + TrieNodeInfo.Namespace(filesThatExposeTypes = otherFiles; filesDefiningNamespaceWithoutTypes = otherFilesWithoutTypes) -> TrieNodeInfo.Namespace( name, currentFilesThatExposeTypes.Union otherFiles, @@ -76,19 +75,19 @@ let rec mergeTrieNodes (accumulatorTrie: TrieNode) (currentTrie: TrieNode) : Tri ) // Edge case scenario detected in https://github.com/dotnet/fsharp/issues/15985 // Keep the namespace (as it can still have nested children). - | TrieNodeInfo.Namespace (name, currentFilesThatExposeTypes, filesDefiningNamespaceWithoutTypes), TrieNodeInfo.Module (_name, file) + | TrieNodeInfo.Namespace(name, currentFilesThatExposeTypes, filesDefiningNamespaceWithoutTypes), TrieNodeInfo.Module(_name, file) // Replace the module in favour of the namespace (which can hold nested children). - | TrieNodeInfo.Module (_name, file), TrieNodeInfo.Namespace (name, currentFilesThatExposeTypes, filesDefiningNamespaceWithoutTypes) -> + | TrieNodeInfo.Module(_name, file), TrieNodeInfo.Namespace(name, currentFilesThatExposeTypes, filesDefiningNamespaceWithoutTypes) -> TrieNodeInfo.Namespace(name, currentFilesThatExposeTypes.Add file, filesDefiningNamespaceWithoutTypes) | _ -> accumulatorTrie.Current let nextChildren = (accumulatorTrie.Children, currentTrie.Children) - ||> Seq.fold (fun accChildren (KeyValue (k, v)) -> - if not (accChildren.ContainsKey k) then - accChildren.Add(k, v) - else - let accNode = accChildren[k] + ||> Seq.fold (fun accChildren (KeyValue(k, v)) -> + match accChildren.TryGetValue k with + | false, _ -> accChildren.Add(k, v) + | true, kVal -> + let accNode = kVal accChildren.SetItem(k, mergeTrieNodes accNode v)) { @@ -207,37 +206,32 @@ let rec mkTrieNodeFor (file: FileInProject) : FileIndex * TrieNode = else let trie = match file.ParsedInput with - | ParsedInput.SigFile (ParsedSigFileInput (contents = contents)) -> + | ParsedInput.SigFile(ParsedSigFileInput(contents = contents)) -> contents |> List.map - (fun (SynModuleOrNamespaceSig (longId = longId - kind = kind - attribs = attribs - decls = decls - accessibility = _accessibility)) -> + (fun + (SynModuleOrNamespaceSig( + longId = longId; kind = kind; attribs = attribs; decls = decls; accessibility = _accessibility)) -> let hasTypesOrAutoOpenNestedModules = decls |> List.exists (function | SynModuleSigDecl.Types _ -> true - | SynModuleSigDecl.NestedModule(moduleInfo = SynComponentInfo (attributes = attributes)) -> + | SynModuleSigDecl.NestedModule(moduleInfo = SynComponentInfo(attributes = attributes)) -> isAnyAttributeAutoOpen attributes | _ -> false) processSynModuleOrNamespace mkTrieForSynModuleSigDecl idx longId attribs kind hasTypesOrAutoOpenNestedModules decls) |> List.reduce mergeTrieNodes - | ParsedInput.ImplFile (ParsedImplFileInput (contents = contents)) -> + | ParsedInput.ImplFile(ParsedImplFileInput(contents = contents)) -> contents |> List.map - (fun (SynModuleOrNamespace (longId = longId - attribs = attribs - kind = kind - decls = decls - accessibility = _accessibility)) -> + (fun + (SynModuleOrNamespace(longId = longId; attribs = attribs; kind = kind; decls = decls; accessibility = _accessibility)) -> let hasTypesOrAutoOpenNestedModules = List.exists (function | SynModuleDecl.Types _ -> true - | SynModuleDecl.NestedModule(moduleInfo = SynComponentInfo (attributes = attributes)) -> + | SynModuleDecl.NestedModule(moduleInfo = SynComponentInfo(attributes = attributes)) -> isAnyAttributeAutoOpen attributes | _ -> false) decls @@ -249,7 +243,7 @@ let rec mkTrieNodeFor (file: FileInProject) : FileIndex * TrieNode = and mkTrieForSynModuleDecl (fileIndex: FileIndex) (decl: SynModuleDecl) : KeyValuePair option = match decl with - | SynModuleDecl.NestedModule (moduleInfo = SynComponentInfo(longId = [ nestedModuleIdent ]); decls = decls) -> + | SynModuleDecl.NestedModule(moduleInfo = SynComponentInfo(longId = [ nestedModuleIdent ]); decls = decls) -> let name = nestedModuleIdent.idText let children = @@ -270,7 +264,7 @@ and mkTrieForSynModuleDecl (fileIndex: FileIndex) (decl: SynModuleDecl) : KeyVal and mkTrieForSynModuleSigDecl (fileIndex: FileIndex) (decl: SynModuleSigDecl) : KeyValuePair option = match decl with - | SynModuleSigDecl.NestedModule (moduleInfo = SynComponentInfo(longId = [ nestedModuleIdent ]); moduleDecls = decls) -> + | SynModuleSigDecl.NestedModule(moduleInfo = SynComponentInfo(longId = [ nestedModuleIdent ]); moduleDecls = decls) -> let name = nestedModuleIdent.idText let children = @@ -316,8 +310,8 @@ let serializeToMermaid (path: string) (filesInProject: FileInProject array) (tri let getName (node: TrieNodeInfo) = match node with | Root _ -> "root" - | Module (name, _) -> $"mod_{name}" - | Namespace (name, _, _) -> $"ns_{name}" + | Module(name, _) -> $"mod_{name}" + | Namespace(name, _, _) -> $"ns_{name}" let toBoxList (boxPos: MermaidBoxPos) (files: ImmutableHashSet) = let sb = StringBuilder() @@ -343,12 +337,12 @@ let serializeToMermaid (path: string) (filesInProject: FileInProject array) (tri appendLine "class root\n" else appendLine $"class root {{\n{firstBox}}}\n" - | TrieNodeInfo.Module (_name, file) as md -> + | TrieNodeInfo.Module(_name, file) as md -> let name = getName md let fileName = System.IO.Path.GetFileName(filesInProject[file].FileName) appendLine $"{getName parent.Current} <|-- {name}" appendLine $"class {name} {{\n {fileName}[{file}]\n}}\n" - | TrieNodeInfo.Namespace (_name, filesThatExposeTypes, filesDefiningNamespaceWithoutTypes) as ns -> + | TrieNodeInfo.Namespace(_name, filesThatExposeTypes, filesDefiningNamespaceWithoutTypes) as ns -> let name = getName ns let firstBox = toBoxList First filesThatExposeTypes let secondBox = toBoxList Second filesDefiningNamespaceWithoutTypes diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/Types.fs b/src/fcs-fable/src/Compiler/Driver/GraphChecking/Types.fs index 72370ed41d..00538b6e59 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/Types.fs +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/Types.fs @@ -40,8 +40,8 @@ type internal TrieNodeInfo = member x.Files: Set = match x with | Root files -> set files - | Module (file = file) -> Set.singleton file - | Namespace (filesThatExposeTypes = files) -> set files + | Module(file = file) -> Set.singleton file + | Namespace(filesThatExposeTypes = files) -> set files type internal TrieNode = { diff --git a/src/fcs-fable/src/Compiler/Driver/OptimizeInputs.fs b/src/fcs-fable/src/Compiler/Driver/OptimizeInputs.fs index e529c0b71f..6055bd44d0 100644 --- a/src/fcs-fable/src/Compiler/Driver/OptimizeInputs.fs +++ b/src/fcs-fable/src/Compiler/Driver/OptimizeInputs.fs @@ -151,7 +151,9 @@ module private ParallelOptimization = FirstLoopRes = { OptEnv = env0 - OptInfo = lazy failwith "This dummy value wrapped in a Lazy was not expected to be evaluated before being replaced." + OptInfo = + InterruptibleLazy(fun _ -> + failwith "This dummy value wrapped in a Lazy was not expected to be evaluated before being replaced.") HidingInfo = SignatureHidingInfo.Empty // A no-op optimizer OptDuringCodeGen = fun _ expr -> expr @@ -271,9 +273,9 @@ let optimizeFilesSequentially optEnv (phases: PhaseInfo[]) implFiles = { OptEnv = optEnvFirstLoop OptInfo = - lazy + InterruptibleLazy(fun _ -> failwith - "This dummy value wrapped in a Lazy was not expected to be evaluated before being replaced." + "This dummy value wrapped in a Lazy was not expected to be evaluated before being replaced.") HidingInfo = hidden // A no-op optimizer OptDuringCodeGen = fun _ expr -> expr diff --git a/src/fcs-fable/src/Compiler/Driver/ParseAndCheckInputs.fs b/src/fcs-fable/src/Compiler/Driver/ParseAndCheckInputs.fs index 7945a31d08..23a6e0da30 100644 --- a/src/fcs-fable/src/Compiler/Driver/ParseAndCheckInputs.fs +++ b/src/fcs-fable/src/Compiler/Driver/ParseAndCheckInputs.fs @@ -73,34 +73,34 @@ let ComputeQualifiedNameOfFileFromUniquePath (m, p: string list) = let QualFileNameOfSpecs fileName specs = match specs with - | [ SynModuleOrNamespaceSig (longId = modname; kind = kind; range = m) ] when kind.IsModule -> + | [ SynModuleOrNamespaceSig(longId = modname; kind = kind; range = m) ] when kind.IsModule -> QualFileNameOfModuleName m fileName modname - | [ SynModuleOrNamespaceSig (kind = kind; range = m) ] when not kind.IsModule -> QualFileNameOfFilename m fileName + | [ SynModuleOrNamespaceSig(kind = kind; range = m) ] when not kind.IsModule -> QualFileNameOfFilename m fileName | _ -> QualFileNameOfFilename (mkRange fileName pos0 pos0) fileName let QualFileNameOfImpls fileName specs = match specs with - | [ SynModuleOrNamespace (longId = modname; kind = kind; range = m) ] when kind.IsModule -> QualFileNameOfModuleName m fileName modname - | [ SynModuleOrNamespace (kind = kind; range = m) ] when not kind.IsModule -> QualFileNameOfFilename m fileName + | [ SynModuleOrNamespace(longId = modname; kind = kind; range = m) ] when kind.IsModule -> QualFileNameOfModuleName m fileName modname + | [ SynModuleOrNamespace(kind = kind; range = m) ] when not kind.IsModule -> QualFileNameOfFilename m fileName | _ -> QualFileNameOfFilename (mkRange fileName pos0 pos0) fileName let PrependPathToQualFileName x (QualifiedNameOfFile q) = ComputeQualifiedNameOfFileFromUniquePath(q.idRange, pathOfLid x @ [ q.idText ]) -let PrependPathToImpl x (SynModuleOrNamespace (longId, isRecursive, kind, decls, xmlDoc, attribs, accessibility, range, trivia)) = +let PrependPathToImpl x (SynModuleOrNamespace(longId, isRecursive, kind, decls, xmlDoc, attribs, accessibility, range, trivia)) = SynModuleOrNamespace(x @ longId, isRecursive, kind, decls, xmlDoc, attribs, accessibility, range, trivia) -let PrependPathToSpec x (SynModuleOrNamespaceSig (longId, isRecursive, kind, decls, xmlDoc, attribs, accessibility, range, trivia)) = +let PrependPathToSpec x (SynModuleOrNamespaceSig(longId, isRecursive, kind, decls, xmlDoc, attribs, accessibility, range, trivia)) = SynModuleOrNamespaceSig(x @ longId, isRecursive, kind, decls, xmlDoc, attribs, accessibility, range, trivia) let PrependPathToInput x inp = match inp with - | ParsedInput.ImplFile (ParsedImplFileInput (b, c, q, d, hd, impls, e, trivia, i)) -> + | ParsedInput.ImplFile(ParsedImplFileInput(b, c, q, d, hd, impls, e, trivia, i)) -> ParsedInput.ImplFile( ParsedImplFileInput(b, c, PrependPathToQualFileName x q, d, hd, List.map (PrependPathToImpl x) impls, e, trivia, i) ) - | ParsedInput.SigFile (ParsedSigFileInput (b, q, d, hd, specs, trivia, i)) -> + | ParsedInput.SigFile(ParsedSigFileInput(b, q, d, hd, specs, trivia, i)) -> ParsedInput.SigFile(ParsedSigFileInput(b, PrependPathToQualFileName x q, d, hd, List.map (PrependPathToSpec x) specs, trivia, i)) let IsValidAnonModuleName (modname: string) = @@ -128,7 +128,7 @@ let FileRequiresModuleOrNamespaceDecl isLast isExe fileName = let PostParseModuleImpl (_i, defaultNamespace, isLastCompiland, fileName, impl) = match impl with - | ParsedImplFileFragment.NamedModule (SynModuleOrNamespace (lid, isRec, kind, decls, xmlDoc, attribs, access, m, trivia)) -> + | ParsedImplFileFragment.NamedModule(SynModuleOrNamespace(lid, isRec, kind, decls, xmlDoc, attribs, access, m, trivia)) -> let lid = match lid with | [ id ] when kind.IsModule && id.idText = MangledGlobalName -> @@ -138,7 +138,7 @@ let PostParseModuleImpl (_i, defaultNamespace, isLastCompiland, fileName, impl) SynModuleOrNamespace(lid, isRec, kind, decls, xmlDoc, attribs, access, m, trivia) - | ParsedImplFileFragment.AnonModule (defs, m) -> + | ParsedImplFileFragment.AnonModule(defs, m) -> let isLast, isExe = isLastCompiland if FileRequiresModuleOrNamespaceDecl isLast isExe fileName then @@ -156,7 +156,7 @@ let PostParseModuleImpl (_i, defaultNamespace, isLastCompiland, fileName, impl) SynModuleOrNamespace(modname, false, SynModuleOrNamespaceKind.AnonModule, defs, PreXmlDoc.Empty, [], None, m, trivia) - | ParsedImplFileFragment.NamespaceFragment (lid, isRecursive, kind, decls, xmlDoc, attributes, range, trivia) -> + | ParsedImplFileFragment.NamespaceFragment(lid, isRecursive, kind, decls, xmlDoc, attributes, range, trivia) -> let lid, kind = match lid with | id :: rest when id.idText = MangledGlobalName -> @@ -173,7 +173,7 @@ let PostParseModuleImpl (_i, defaultNamespace, isLastCompiland, fileName, impl) let PostParseModuleSpec (_i, defaultNamespace, isLastCompiland, fileName, intf) = match intf with - | ParsedSigFileFragment.NamedModule (SynModuleOrNamespaceSig (lid, isRec, kind, decls, xmlDoc, attribs, access, m, trivia)) -> + | ParsedSigFileFragment.NamedModule(SynModuleOrNamespaceSig(lid, isRec, kind, decls, xmlDoc, attribs, access, m, trivia)) -> let lid = match lid with | [ id ] when kind.IsModule && id.idText = MangledGlobalName -> @@ -183,7 +183,7 @@ let PostParseModuleSpec (_i, defaultNamespace, isLastCompiland, fileName, intf) SynModuleOrNamespaceSig(lid, isRec, SynModuleOrNamespaceKind.NamedModule, decls, xmlDoc, attribs, access, m, trivia) - | ParsedSigFileFragment.AnonModule (defs, m) -> + | ParsedSigFileFragment.AnonModule(defs, m) -> let isLast, isExe = isLastCompiland if FileRequiresModuleOrNamespaceDecl isLast isExe fileName then @@ -201,7 +201,7 @@ let PostParseModuleSpec (_i, defaultNamespace, isLastCompiland, fileName, intf) SynModuleOrNamespaceSig(modname, false, SynModuleOrNamespaceKind.AnonModule, defs, PreXmlDoc.Empty, [], None, m, trivia) - | ParsedSigFileFragment.NamespaceFragment (lid, isRecursive, kind, decls, xmlDoc, attributes, range, trivia) -> + | ParsedSigFileFragment.NamespaceFragment(lid, isRecursive, kind, decls, xmlDoc, attributes, range, trivia) -> let lid, kind = match lid with | id :: rest when id.idText = MangledGlobalName -> @@ -219,11 +219,11 @@ let PostParseModuleSpec (_i, defaultNamespace, isLastCompiland, fileName, intf) let GetScopedPragmasForHashDirective hd = [ match hd with - | ParsedHashDirective ("nowarn", numbers, m) -> + | ParsedHashDirective("nowarn", numbers, m) -> for s in numbers do match s with | ParsedHashDirectiveArgument.SourceIdentifier _ -> () - | ParsedHashDirectiveArgument.String (s, _, _) -> + | ParsedHashDirectiveArgument.String(s, _, _) -> match GetWarningNumber(m, s) with | None -> () | Some n -> ScopedPragma.WarningOff(m, n) @@ -244,7 +244,7 @@ let PostParseModuleImpls defaultNamespace, fileName, isLastCompiland, - ParsedImplFile (hashDirectives, impls), + ParsedImplFile(hashDirectives, impls), lexbuf: UnicodeLexing.Lexbuf, tripleSlashComments: range list, identifiers: Set @@ -253,7 +253,7 @@ let PostParseModuleImpls impls |> List.rev |> List.tryPick (function - | ParsedImplFileFragment.NamedModule (SynModuleOrNamespace (longId = lid)) -> Some lid + | ParsedImplFileFragment.NamedModule(SynModuleOrNamespace(longId = lid)) -> Some lid | _ -> None) match othersWithSameName with @@ -269,10 +269,10 @@ let PostParseModuleImpls let scopedPragmas = [ - for SynModuleOrNamespace (decls = decls) in impls do + for SynModuleOrNamespace(decls = decls) in impls do for d in decls do match d with - | SynModuleDecl.HashDirective (hd, _) -> yield! GetScopedPragmasForHashDirective hd + | SynModuleDecl.HashDirective(hd, _) -> yield! GetScopedPragmasForHashDirective hd | _ -> () for hd in hashDirectives do yield! GetScopedPragmasForHashDirective hd @@ -296,7 +296,7 @@ let PostParseModuleSpecs defaultNamespace, fileName, isLastCompiland, - ParsedSigFile (hashDirectives, specs), + ParsedSigFile(hashDirectives, specs), lexbuf: UnicodeLexing.Lexbuf, tripleSlashComments: range list, identifiers: Set @@ -305,7 +305,7 @@ let PostParseModuleSpecs specs |> List.rev |> List.tryPick (function - | ParsedSigFileFragment.NamedModule (SynModuleOrNamespaceSig (longId = lid)) -> Some lid + | ParsedSigFileFragment.NamedModule(SynModuleOrNamespaceSig(longId = lid)) -> Some lid | _ -> None) match othersWithSameName with @@ -320,10 +320,10 @@ let PostParseModuleSpecs let scopedPragmas = [ - for SynModuleOrNamespaceSig (decls = decls) in specs do + for SynModuleOrNamespaceSig(decls = decls) in specs do for d in decls do match d with - | SynModuleSigDecl.HashDirective (hd, _) -> yield! GetScopedPragmasForHashDirective hd + | SynModuleSigDecl.HashDirective(hd, _) -> yield! GetScopedPragmasForHashDirective hd | _ -> () for hd in hashDirectives do yield! GetScopedPragmasForHashDirective hd @@ -357,9 +357,9 @@ let DeduplicateModuleName (moduleNamesDict: ModuleNamesDict) fileName (qualNameO match moduleNamesDict.TryGetValue qualNameOfFile.Text with | true, paths -> - if paths.ContainsKey path then - paths[path], moduleNamesDict - else + match paths.TryGetValue path with + | true, pathV -> pathV, moduleNamesDict + | false, _ -> let count = paths.Count + 1 let id = qualNameOfFile.Id @@ -383,7 +383,7 @@ let DeduplicateModuleName (moduleNamesDict: ModuleNamesDict) fileName (qualNameO let DeduplicateParsedInputModuleName (moduleNamesDict: ModuleNamesDict) input = match input with | ParsedInput.ImplFile implFile -> - let (ParsedImplFileInput (fileName, isScript, qualNameOfFile, scopedPragmas, hashDirectives, modules, flags, trivia, identifiers)) = + let (ParsedImplFileInput(fileName, isScript, qualNameOfFile, scopedPragmas, hashDirectives, modules, flags, trivia, identifiers)) = implFile let qualNameOfFileR, moduleNamesDictR = @@ -395,7 +395,7 @@ let DeduplicateParsedInputModuleName (moduleNamesDict: ModuleNamesDict) input = let inputR = ParsedInput.ImplFile implFileR inputR, moduleNamesDictR | ParsedInput.SigFile sigFile -> - let (ParsedSigFileInput (fileName, qualNameOfFile, scopedPragmas, hashDirectives, modules, trivia, identifiers)) = + let (ParsedSigFileInput(fileName, qualNameOfFile, scopedPragmas, hashDirectives, modules, trivia, identifiers)) = sigFile let qualNameOfFileR, moduleNamesDictR = @@ -540,9 +540,9 @@ let TestInteractionParserAndExit (tokenizer: Tokenizer, lexbuf: LexBuffer tokenizer ()) lexbuf) with #if FABLE_COMPILER - | ParsedScriptInteraction.Definitions (l, m) -> printfn "Parsed OK, got %d defs @ %s" l.Length (stringOfRange m) + | ParsedScriptInteraction.Definitions(l, m) -> printfn "Parsed OK, got %d defs @ %s" l.Length (stringOfRange m) #else - | ParsedScriptInteraction.Definitions (l, m) -> printfn "Parsed OK, got %d defs @ %a" l.Length outputRange m + | ParsedScriptInteraction.Definitions(l, m) -> printfn "Parsed OK, got %d defs @ %a" l.Length outputRange m #endif exiter.Exit 0 @@ -552,17 +552,17 @@ let ReportParsingStatistics res = let rec flattenSpecs specs = specs |> List.collect (function - | SynModuleSigDecl.NestedModule (moduleDecls = subDecls) -> flattenSpecs subDecls + | SynModuleSigDecl.NestedModule(moduleDecls = subDecls) -> flattenSpecs subDecls | spec -> [ spec ]) let rec flattenDefns specs = specs |> List.collect (function - | SynModuleDecl.NestedModule (decls = subDecls) -> flattenDefns subDecls + | SynModuleDecl.NestedModule(decls = subDecls) -> flattenDefns subDecls | defn -> [ defn ]) - let flattenModSpec (SynModuleOrNamespaceSig (decls = decls)) = flattenSpecs decls - let flattenModImpl (SynModuleOrNamespace (decls = decls)) = flattenDefns decls + let flattenModSpec (SynModuleOrNamespaceSig(decls = decls)) = flattenSpecs decls + let flattenModImpl (SynModuleOrNamespace(decls = decls)) = flattenDefns decls match res with | ParsedInput.SigFile sigFile -> printfn "parsing yielded %d specs" (List.collect flattenModSpec sigFile.Contents).Length @@ -687,7 +687,7 @@ let ParseOneInputLexbuf (tcConfig: TcConfig, lexResourceManager, lexbuf, fileNam input - with exn -> + with RecoverableException exn -> errorRecovery exn rangeStartup EmptyParsedInput(fileName, isLastCompiland) @@ -762,7 +762,7 @@ let ParseOneInputStream ) = try parseInputStreamAux (tcConfig, lexResourceManager, fileName, isLastCompiland, diagnosticsLogger, retryLocked, stream) - with exn -> + with RecoverableException exn -> errorRecovery exn rangeStartup EmptyParsedInput(fileName, isLastCompiland) @@ -778,7 +778,7 @@ let ParseOneInputSourceText ) = try parseInputSourceTextAux (tcConfig, lexResourceManager, fileName, isLastCompiland, diagnosticsLogger, sourceText) - with exn -> + with RecoverableException exn -> errorRecovery exn rangeStartup EmptyParsedInput(fileName, isLastCompiland) @@ -787,7 +787,7 @@ let ParseOneInputFile (tcConfig: TcConfig, lexResourceManager, fileName, isLastC try checkInputFile tcConfig fileName parseInputFileAux (tcConfig, lexResourceManager, fileName, isLastCompiland, diagnosticsLogger, retryLocked) - with exn -> + with RecoverableException exn -> errorRecovery exn rangeStartup EmptyParsedInput(fileName, isLastCompiland) @@ -894,7 +894,7 @@ let ProcessMetaCommandsFromInput try match hash with - | ParsedHashDirective ("I", ParsedHashDirectiveArguments args, m) -> + | ParsedHashDirective("I", ParsedHashDirectiveArguments args, m) -> if not canHaveScriptMetaCommands then errorR (HashIncludeNotAllowedInNonScript m) @@ -906,18 +906,18 @@ let ProcessMetaCommandsFromInput | _ -> errorR (Error(FSComp.SR.buildInvalidHashIDirective (), m)) state - | ParsedHashDirective ("nowarn", ParsedHashDirectiveArguments numbers, m) -> + | ParsedHashDirective("nowarn", ParsedHashDirectiveArguments numbers, m) -> List.fold (fun state d -> nowarnF state (m, d)) state numbers - | ParsedHashDirective (("reference" | "r"), ParsedHashDirectiveArguments args, m) -> + | ParsedHashDirective(("reference" | "r"), ParsedHashDirectiveArguments args, m) -> matchedm <- m ProcessDependencyManagerDirective Directive.Resolution args m state - | ParsedHashDirective ("i", ParsedHashDirectiveArguments args, m) -> + | ParsedHashDirective("i", ParsedHashDirectiveArguments args, m) -> matchedm <- m ProcessDependencyManagerDirective Directive.Include args m state - | ParsedHashDirective ("load", ParsedHashDirectiveArguments args, m) -> + | ParsedHashDirective("load", ParsedHashDirectiveArguments args, m) -> if not canHaveScriptMetaCommands then errorR (HashDirectiveNotAllowedInNonScript m) @@ -928,7 +928,7 @@ let ProcessMetaCommandsFromInput | _ -> errorR (Error(FSComp.SR.buildInvalidHashloadDirective (), m)) state - | ParsedHashDirective ("time", ParsedHashDirectiveArguments args, m) -> + | ParsedHashDirective("time", ParsedHashDirectiveArguments args, m) -> if not canHaveScriptMetaCommands then errorR (HashDirectiveNotAllowedInNonScript m) @@ -943,7 +943,7 @@ let ProcessMetaCommandsFromInput (* warning(Error("This meta-command has been ignored", m)) *) state - with e -> + with RecoverableException e -> errorRecovery e matchedm state @@ -951,36 +951,36 @@ let ProcessMetaCommandsFromInput decls |> List.iter (fun d -> match d with - | SynModuleSigDecl.HashDirective (_, m) -> warning (Error(FSComp.SR.buildDirectivesInModulesAreIgnored (), m)) - | SynModuleSigDecl.NestedModule (moduleDecls = subDecls) -> WarnOnIgnoredSpecDecls subDecls + | SynModuleSigDecl.HashDirective(_, m) -> warning (Error(FSComp.SR.buildDirectivesInModulesAreIgnored (), m)) + | SynModuleSigDecl.NestedModule(moduleDecls = subDecls) -> WarnOnIgnoredSpecDecls subDecls | _ -> ()) let rec WarnOnIgnoredImplDecls decls = decls |> List.iter (fun d -> match d with - | SynModuleDecl.HashDirective (_, m) -> warning (Error(FSComp.SR.buildDirectivesInModulesAreIgnored (), m)) - | SynModuleDecl.NestedModule (decls = subDecls) -> WarnOnIgnoredImplDecls subDecls + | SynModuleDecl.HashDirective(_, m) -> warning (Error(FSComp.SR.buildDirectivesInModulesAreIgnored (), m)) + | SynModuleDecl.NestedModule(decls = subDecls) -> WarnOnIgnoredImplDecls subDecls | _ -> ()) - let ProcessMetaCommandsFromModuleSpec state (SynModuleOrNamespaceSig (decls = decls)) = + let ProcessMetaCommandsFromModuleSpec state (SynModuleOrNamespaceSig(decls = decls)) = List.fold (fun s d -> match d with - | SynModuleSigDecl.HashDirective (h, _) -> ProcessMetaCommand s h - | SynModuleSigDecl.NestedModule (moduleDecls = subDecls) -> + | SynModuleSigDecl.HashDirective(h, _) -> ProcessMetaCommand s h + | SynModuleSigDecl.NestedModule(moduleDecls = subDecls) -> WarnOnIgnoredSpecDecls subDecls s | _ -> s) state decls - let ProcessMetaCommandsFromModuleImpl state (SynModuleOrNamespace (decls = decls)) = + let ProcessMetaCommandsFromModuleImpl state (SynModuleOrNamespace(decls = decls)) = List.fold (fun s d -> match d with - | SynModuleDecl.HashDirective (h, _) -> ProcessMetaCommand s h - | SynModuleDecl.NestedModule (decls = subDecls) -> + | SynModuleDecl.HashDirective(h, _) -> ProcessMetaCommand s h + | SynModuleDecl.NestedModule(decls = subDecls) -> WarnOnIgnoredImplDecls subDecls s | _ -> s) @@ -1044,7 +1044,7 @@ let GetInitialTcEnv (assemblyName: string, initm: range, tcConfig: TcConfig, tcI TcOpenModuleOrNamespaceDecl TcResultsSink.NoSink tcGlobals amap initm tcEnv (checkOperatorsModule, initm) tcEnv, openDecls0 @ openDecls1 - with e -> + with RecoverableException e -> errorRecovery e initm tcEnv, openDecls0 else @@ -1055,25 +1055,25 @@ let GetInitialTcEnv (assemblyName: string, initm: range, tcConfig: TcConfig, tcI /// Inject faults into checking let CheckSimulateException (tcConfig: TcConfig) = match tcConfig.simulateException with - | Some ("tc-oom") -> raise (OutOfMemoryException()) - | Some ("tc-an") -> raise (ArgumentNullException("simulated")) - | Some ("tc-invop") -> raise (InvalidOperationException()) - | Some ("tc-av") -> raise (AccessViolationException()) - | Some ("tc-nfn") -> raise (NotFiniteNumberException()) - | Some ("tc-aor") -> raise (ArgumentOutOfRangeException()) - | Some ("tc-dv0") -> raise (DivideByZeroException()) - | Some ("tc-oe") -> raise (OverflowException()) - | Some ("tc-atmm") -> raise (ArrayTypeMismatchException()) - | Some ("tc-bif") -> raise (BadImageFormatException()) - | Some ("tc-knf") -> raise (KeyNotFoundException()) - | Some ("tc-ior") -> raise (IndexOutOfRangeException()) - | Some ("tc-ic") -> raise (InvalidCastException()) - | Some ("tc-ip") -> raise (InvalidProgramException()) - | Some ("tc-ma") -> raise (MemberAccessException()) - | Some ("tc-ni") -> raise (NotImplementedException()) - | Some ("tc-nr") -> raise (NullReferenceException()) - | Some ("tc-oc") -> raise (OperationCanceledException()) - | Some ("tc-fail") -> failwith "simulated" + | Some("tc-oom") -> raise (OutOfMemoryException()) + | Some("tc-an") -> raise (ArgumentNullException("simulated")) + | Some("tc-invop") -> raise (InvalidOperationException()) + | Some("tc-av") -> raise (AccessViolationException()) + | Some("tc-nfn") -> raise (NotFiniteNumberException()) + | Some("tc-aor") -> raise (ArgumentOutOfRangeException()) + | Some("tc-dv0") -> raise (DivideByZeroException()) + | Some("tc-oe") -> raise (OverflowException()) + | Some("tc-atmm") -> raise (ArrayTypeMismatchException()) + | Some("tc-bif") -> raise (BadImageFormatException()) + | Some("tc-knf") -> raise (KeyNotFoundException()) + | Some("tc-ior") -> raise (IndexOutOfRangeException()) + | Some("tc-ic") -> raise (InvalidCastException()) + | Some("tc-ip") -> raise (InvalidProgramException()) + | Some("tc-ma") -> raise (MemberAccessException()) + | Some("tc-ni") -> raise (NotImplementedException()) + | Some("tc-nr") -> raise (NullReferenceException()) + | Some("tc-oc") -> raise (OperationCanceledException()) + | Some("tc-fail") -> failwith "simulated" | _ -> () #endif //!FABLE_COMPILER @@ -1396,7 +1396,7 @@ let CheckOneInput let result = (tcEnvAtEnd, topAttrs, Some implFile, ccuSigForFile) return result, tcState - with e -> + with RecoverableException e -> errorRecovery e range0 return (tcState.TcEnvFromSignatures, EmptyTopAttrs, None, tcState.tcsCcuSig), tcState } @@ -1504,7 +1504,8 @@ let CheckOneInputWithCallback tcSink, tcState: TcState, inp: ParsedInput, - _skipImplIfSigExists: bool): (unit -> bool) * TcConfig * TcImports * TcGlobals * LongIdent option * TcResultsSink * TcState * ParsedInput * bool) + _skipImplIfSigExists: bool): + (unit -> bool) * TcConfig * TcImports * TcGlobals * LongIdent option * TcResultsSink * TcState * ParsedInput * bool) : Cancellable> = cancellable { try @@ -1611,7 +1612,14 @@ let CheckOneInputWithCallback let ccuSigForFile, fsTcState = AddCheckResultsToTcState - (tcGlobals, amap, false, prefixPathOpt, tcSink, tcState.tcsTcImplEnv, qualNameOfFile, implFile.Signature) + (tcGlobals, + amap, + false, + prefixPathOpt, + tcSink, + tcState.tcsTcImplEnv, + qualNameOfFile, + implFile.Signature) tcState let partialResult = tcEnvAtEnd, topAttrs, Some implFile, ccuSigForFile @@ -1625,7 +1633,7 @@ let CheckOneInputWithCallback partialResult, tcState) ) - with e -> + with RecoverableException e -> errorRecovery e range0 return Finisher(node, (fun tcState -> (tcState.TcEnvFromSignatures, EmptyTopAttrs, None, tcState.tcsCcuSig), tcState)) } @@ -1693,7 +1701,7 @@ module private TypeCheckingGraphProcessing = let resultsToAdd = transitiveDeps - |> Array.filter (fun dep -> itemsPresent.Contains dep.Info.Item = false) + |> Array.filter (fun dep -> not (itemsPresent.Contains dep.Info.Item)) |> Array.distinctBy (fun dep -> dep.Info.Item) |> Array.sortWith (fun a b -> // We preserve the order in which items are folded to the state. @@ -1723,7 +1731,7 @@ module private TypeCheckingGraphProcessing = (getProcessedNode: NodeToTypeCheck -> ProcessedNode>) (node: NodeInfo) : State * Finisher = - let folder (state: State) (Finisher (finisher = finisher)) : State = finisher state |> snd + let folder (state: State) (Finisher(finisher = finisher)) : State = finisher state |> snd let deps = node.Deps |> Array.except [| node.Item |] |> Array.map getProcessedNode let transitiveDeps = @@ -1739,14 +1747,14 @@ module private TypeCheckingGraphProcessing = let results = processGraph graph workWrapper ct - let finalFileResults, state: (int * FinalFileResult) list * State = + let finalFileResults, state = (([], emptyState), results |> Array.choose (fun (item, res) -> match item with | NodeToTypeCheck.ArtificialImplFile _ -> None | NodeToTypeCheck.PhysicalFile file -> Some(file, res))) - ||> Array.fold (fun (fileResults, state) (item, (_, Finisher (finisher = finisher))) -> + ||> Array.fold (fun (fileResults, state) (item, (_, Finisher(finisher = finisher))) -> let fileResult, state = finisher state (item, fileResult) :: fileResults, state) @@ -1754,7 +1762,16 @@ module private TypeCheckingGraphProcessing = /// Constructs a file dependency graph and type-checks the files in parallel where possible. let CheckMultipleInputsUsingGraphMode - ((ctok, checkForErrors, tcConfig: TcConfig, tcImports: TcImports, tcGlobals, prefixPathOpt, tcState, eagerFormat, inputs): 'a * (unit -> bool) * TcConfig * TcImports * TcGlobals * LongIdent option * TcState * (PhasedDiagnostic -> PhasedDiagnostic) * ParsedInput list) + ((ctok, checkForErrors, tcConfig: TcConfig, tcImports: TcImports, tcGlobals, prefixPathOpt, tcState, eagerFormat, inputs): + 'a * + (unit -> bool) * + TcConfig * + TcImports * + TcGlobals * + LongIdent option * + TcState * + (PhasedDiagnostic -> PhasedDiagnostic) * + ParsedInput list) : FinalFileResult list * TcState = use cts = new CancellationTokenSource() @@ -1795,7 +1812,7 @@ let CheckMultipleInputsUsingGraphMode // Transform the graph to include ArtificialImplFile nodes when necessary. graph - |> Seq.collect (fun (KeyValue (fileIdx, deps)) -> + |> Seq.collect (fun (KeyValue(fileIdx, deps)) -> if filePairs.IsSignature fileIdx then // Add an additional ArtificialImplFile node for the signature file. [| @@ -1864,7 +1881,7 @@ let CheckMultipleInputsUsingGraphMode let checkForErrors2 () = priorErrors || (logger.ErrorCount > 0) let tcSink = TcResultsSink.NoSink - let (Finisher (finisher = finisher)) = + let (Finisher(finisher = finisher)) = CheckOneInputWithCallback node (checkForErrors2, tcConfig, tcImports, tcGlobals, prefixPathOpt, tcSink, currentTcState, input, false) diff --git a/src/fcs-fable/src/Compiler/Driver/ScriptClosure.fs b/src/fcs-fable/src/Compiler/Driver/ScriptClosure.fs index a54424ff49..5ed409d7f5 100644 --- a/src/fcs-fable/src/Compiler/Driver/ScriptClosure.fs +++ b/src/fcs-fable/src/Compiler/Driver/ScriptClosure.fs @@ -222,7 +222,7 @@ module ScriptPreprocessClosure = diagnosticsLogger.Diagnostics - | Some (rs, diagnostics) -> + | Some(rs, diagnostics) -> for m, reference in rs do tcConfigB.AddReferencedAssemblyByPath(m, reference) @@ -254,11 +254,11 @@ module ScriptPreprocessClosure = use reader = match inputCodePage with | None -> new StreamReader(stream, true) - | Some (n: int) -> new StreamReader(stream, Encoding.GetEncoding n) + | Some(n: int) -> new StreamReader(stream, Encoding.GetEncoding n) let source = reader.ReadToEnd() [ ClosureSource(fileName, m, SourceText.ofString source, parseRequired) ] - with exn -> + with RecoverableException exn -> errorRecovery exn m [] @@ -447,7 +447,7 @@ module ScriptPreprocessClosure = tcConfig <- TcConfig.Create(tcConfigB, validate = false) ] - and processClosureSource (ClosureSource (fileName, m, sourceText, parseRequired)) = + and processClosureSource (ClosureSource(fileName, m, sourceText, parseRequired)) = [ if not (observedSources.HaveSeen(fileName)) then observedSources.SetSeen(fileName) @@ -513,13 +513,13 @@ module ScriptPreprocessClosure = /// Mark the last file as isLastCompiland. let MarkLastCompiland (tcConfig: TcConfig, lastClosureFile) = - let (ClosureFile (fileName, m, lastParsedInput, parseDiagnostics, metaDiagnostics, nowarns)) = + let (ClosureFile(fileName, m, lastParsedInput, parseDiagnostics, metaDiagnostics, nowarns)) = lastClosureFile match lastParsedInput with - | Some (ParsedInput.ImplFile lastParsedImplFile) -> + | Some(ParsedInput.ImplFile lastParsedImplFile) -> - let (ParsedImplFileInput (name, isScript, qualNameOfFile, scopedPragmas, hashDirectives, implFileFlags, _, trivia, identifiers)) = + let (ParsedImplFileInput(name, isScript, qualNameOfFile, scopedPragmas, hashDirectives, implFileFlags, _, trivia, identifiers)) = lastParsedImplFile let isLastCompiland = (true, tcConfig.target.IsExe) @@ -550,18 +550,18 @@ module ScriptPreprocessClosure = let closureFiles = match List.tryFrontAndBack closureFiles with | None -> closureFiles - | Some (rest, lastClosureFile) -> + | Some(rest, lastClosureFile) -> let lastClosureFileR = MarkLastCompiland(tcConfig, lastClosureFile) rest @ [ lastClosureFileR ] // Get all source files. let sourceFiles = - [ for ClosureFile (fileName, m, _, _, _, _) in closureFiles -> (fileName, m) ] + [ for ClosureFile(fileName, m, _, _, _, _) in closureFiles -> (fileName, m) ] let sourceInputs = [ for closureFile in closureFiles -> - let (ClosureFile (fileName, _, input, parseDiagnostics, metaDiagnostics, _nowarns)) = + let (ClosureFile(fileName, _, input, parseDiagnostics, metaDiagnostics, _nowarns)) = closureFile let closureInput: LoadClosureInput = @@ -577,7 +577,7 @@ module ScriptPreprocessClosure = let globalNoWarns = closureFiles - |> List.collect (fun (ClosureFile (_, _, _, _, _, noWarns)) -> noWarns) + |> List.collect (fun (ClosureFile(_, _, _, _, _, noWarns)) -> noWarns) // Resolve all references. let references, unresolvedReferences, resolutionDiagnostics = @@ -594,7 +594,7 @@ module ScriptPreprocessClosure = // Root errors and warnings - look at the last item in the closureFiles list let loadClosureRootDiagnostics, allRootDiagnostics = match List.rev closureFiles with - | ClosureFile (_, _, _, parseDiagnostics, metaDiagnostics, _) :: _ -> + | ClosureFile(_, _, _, parseDiagnostics, metaDiagnostics, _) :: _ -> (earlierDiagnostics @ metaDiagnostics @ resolutionDiagnostics), (parseDiagnostics @ earlierDiagnostics @ metaDiagnostics @ resolutionDiagnostics) | _ -> [], [] // When no file existed. diff --git a/src/fcs-fable/src/Compiler/Driver/StaticLinking.fs b/src/fcs-fable/src/Compiler/Driver/StaticLinking.fs index 54a47568f4..007c77c8e5 100644 --- a/src/fcs-fable/src/Compiler/Driver/StaticLinking.fs +++ b/src/fcs-fable/src/Compiler/Driver/StaticLinking.fs @@ -60,7 +60,7 @@ type TypeForwarding(tcImports: TcImports) = match ccuThunksQualifiedName.TryGetValue(scope.QualifiedName) with | true, ccu -> match typename with - | Some (parts, name) -> + | Some(parts, name) -> let forwarded = ccu.TryForward(parts, name) let result = @@ -75,7 +75,7 @@ type TypeForwarding(tcImports: TcImports) = match ccuThunksSimpleName.TryGetValue(scope.Name) with | true, ccu -> match typename with - | Some (parts, name) -> + | Some(parts, name) -> let forwarded = ccu.TryForward(parts, name) let result = @@ -318,7 +318,7 @@ let FindDependentILModulesForStaticLinking (ctok, tcConfig: TcConfig, tcImports: let ccu = match tcImports.FindCcuFromAssemblyRef(ctok, rangeStartup, ilAssemRef) with | ResolvedCcu ccu -> Some ccu - | UnresolvedCcu (_ccuName) -> None + | UnresolvedCcu(_ccuName) -> None let fileName = dllInfo.FileName @@ -393,7 +393,7 @@ let FindDependentILModulesForStaticLinking (ctok, tcConfig: TcConfig, tcImports: ReportTime tcConfig "Find dependencies" // Add edges from modules to the modules that depend on them - for KeyValue (_, n) in depModuleTable do + for KeyValue(_, n) in depModuleTable do for aref in n.refs.AssemblyReferences do let n2 = depModuleTable[aref.Name] n2.edges <- n :: n2.edges @@ -440,7 +440,7 @@ let FindProviderGeneratedILModules (ctok, tcImports: TcImports, providerGenerate let ccu = match tcImports.FindCcuFromAssemblyRef(ctok, rangeStartup, ilAssemRef) with | ResolvedCcu ccu -> Some ccu - | UnresolvedCcu (_ccuName) -> None + | UnresolvedCcu(_ccuName) -> None let modul = dllInfo.RawMetadata.TryGetILModuleDef().Value (ccu, dllInfo.ILScopeRef, modul), (ilAssemRef.Name, provAssemStaticLinkInfo) @@ -504,7 +504,7 @@ let StaticLink (ctok, tcConfig: TcConfig, tcImports: TcImports, tcGlobals: TcGlo let providerGeneratedAssemblies = [ // Add all EST-generated assemblies into the static linking set - for KeyValue (_, importedBinary: ImportedBinary) in tcImports.DllTable do + for KeyValue(_, importedBinary: ImportedBinary) in tcImports.DllTable do if importedBinary.IsProviderGenerated then match importedBinary.ProviderGeneratedStaticLinkMap with | None -> () @@ -544,9 +544,9 @@ let StaticLink (ctok, tcConfig: TcConfig, tcImports: TcImports, tcGlobals: TcGlo dict [ for _, (_, provAssemStaticLinkInfo) in providerGeneratedILModules do - for KeyValue (k, v) in provAssemStaticLinkInfo.ILTypeMap do + for KeyValue(k, v) in provAssemStaticLinkInfo.ILTypeMap do (k, v) - for KeyValue (k, v) in localProvAssemStaticLinkInfo.ILTypeMap do + for KeyValue(k, v) in localProvAssemStaticLinkInfo.ILTypeMap do (ILTypeRef.Create(ILScopeRef.Local, k.Enclosing, k.Name), v) ] @@ -570,7 +570,7 @@ let StaticLink (ctok, tcConfig: TcConfig, tcImports: TcImports, tcGlobals: TcGlo let providerGeneratedILModules, ilxMainModule = // Build a dictionary of all remapped IL type defs let ilOrigTyRefsForProviderGeneratedTypesToRelocate = - let rec walk acc (ProviderGeneratedType (ilOrigTyRef, _, xs) as node) = + let rec walk acc (ProviderGeneratedType(ilOrigTyRef, _, xs) as node) = List.fold walk ((ilOrigTyRef, node) :: acc) xs dict (Seq.fold walk [] tcImports.ProviderGeneratedTypeRoots) @@ -594,12 +594,12 @@ let StaticLink (ctok, tcConfig: TcConfig, tcImports: TcImports, tcGlobals: TcGlo // Debugging output if debugStaticLinking then - for ProviderGeneratedType (ilOrigTyRef, _, _) in tcImports.ProviderGeneratedTypeRoots do + for ProviderGeneratedType(ilOrigTyRef, _, _) in tcImports.ProviderGeneratedTypeRoots do printfn "Have [] root '%s'" ilOrigTyRef.QualifiedName // Build the ILTypeDefs for generated types, starting with the roots let generatedILTypeDefs = - let rec buildRelocatedGeneratedType (ProviderGeneratedType (ilOrigTyRef, ilTgtTyRef, ch)) = + let rec buildRelocatedGeneratedType (ProviderGeneratedType(ilOrigTyRef, ilTgtTyRef, ch)) = let isNested = not (isNil ilTgtTyRef.Enclosing) match allTypeDefsInProviderGeneratedAssemblies.TryGetValue ilOrigTyRef with @@ -618,7 +618,10 @@ let StaticLink (ctok, tcConfig: TcConfig, tcImports: TcImports, tcGlobals: TcGlo else ilOrigTypeDef - ilOrigTypeDef.With(name = ilTgtTyRef.Name, nestedTypes = mkILTypeDefs (List.map buildRelocatedGeneratedType ch)) + ilOrigTypeDef.With( + name = ilTgtTyRef.Name, + nestedTypes = mkILTypeDefs (List.map buildRelocatedGeneratedType ch) + ) | _ -> // If there is no matching IL type definition, then make a simple container class if debugStaticLinking then @@ -648,7 +651,7 @@ let StaticLink (ctok, tcConfig: TcConfig, tcImports: TcImports, tcGlobals: TcGlo ILTypeInit.OnAny) [ - for ProviderGeneratedType (_, ilTgtTyRef, _) as node in tcImports.ProviderGeneratedTypeRoots do + for ProviderGeneratedType(_, ilTgtTyRef, _) as node in tcImports.ProviderGeneratedTypeRoots do (ilTgtTyRef, buildRelocatedGeneratedType node) ] diff --git a/src/fcs-fable/src/Compiler/Driver/fsc.fs b/src/fcs-fable/src/Compiler/Driver/fsc.fs index 6a537c62d6..d3bfd2e74c 100644 --- a/src/fcs-fable/src/Compiler/Driver/fsc.fs +++ b/src/fcs-fable/src/Compiler/Driver/fsc.fs @@ -89,7 +89,7 @@ type DiagnosticsLoggerUpToMaxErrors(tcConfigB: TcConfigBuilder, exiter: Exiter, errors <- errors + 1 match diagnostic.Exception, tcConfigB.simulateException with - | InternalError (msg, _), None + | InternalError(msg, _), None | Failure msg, None -> Debug.Assert(false, sprintf "Bug in compiler: %s\n%s" msg (diagnostic.Exception.ToString())) | :? KeyNotFoundException, None -> Debug.Assert(false, sprintf "Lookup exception in compiler: %s" (diagnostic.Exception.ToString())) @@ -304,7 +304,7 @@ let ProcessCommandLineFlags (tcConfigB: TcConfigBuilder, lcidFromCodePage, argv) (* step - get dll references *) let dllFiles, sourceFiles = inputFiles - |> List.map (fun p -> FileSystemUtils.trimQuotes p) + |> List.map FileSystemUtils.trimQuotes |> List.partition FileSystemUtils.isDll match dllFiles with @@ -330,7 +330,7 @@ module InterfaceFileWriter = printVerboseSignatures = true } - let writeToFile os (CheckedImplFile (contents = mexpr)) = + let writeToFile os (CheckedImplFile(contents = mexpr)) = let text = NicePrint.layoutImpliedSignatureOfModuleOrNamespace true denv infoReader AccessibleFromSomewhere range0 mexpr |> Display.squashTo 80 @@ -371,7 +371,7 @@ module InterfaceFileWriter = ".fsi" let writeToSeparateFiles (declaredImpls: CheckedImplFile list) = - for CheckedImplFile (qualifiedNameOfFile = name) as impl in declaredImpls do + for CheckedImplFile(qualifiedNameOfFile = name) as impl in declaredImpls do let fileName = Path.ChangeExtension(name.Range.FileName, extensionForFile name.Range.FileName) @@ -710,20 +710,20 @@ let main1 /// Second phase of compilation. /// - Write the signature file, check some attributes let main2 - (Args (ctok, - tcGlobals, - tcImports: TcImports, - frameworkTcImports, - generatedCcu: CcuThunk, - typedImplFiles, - topAttrs, - tcConfig: TcConfig, - outfile, - pdbfile, - assemblyName, - diagnosticsLogger, - exiter: Exiter, - ilSourceDocs)) + (Args(ctok, + tcGlobals, + tcImports: TcImports, + frameworkTcImports, + generatedCcu: CcuThunk, + typedImplFiles, + topAttrs, + tcConfig: TcConfig, + outfile, + pdbfile, + assemblyName, + diagnosticsLogger, + exiter: Exiter, + ilSourceDocs)) = if tcConfig.typeCheckOnly then exiter.Exit 0 @@ -742,7 +742,7 @@ let main2 let diagnosticsLogger = let scopedPragmas = [ - for CheckedImplFile (pragmas = pragmas) in typedImplFiles do + for CheckedImplFile(pragmas = pragmas) in typedImplFiles do yield! pragmas ] @@ -815,22 +815,22 @@ let main2 /// - optimize /// - encode optimization data let main3 - (Args (ctok, - tcConfig, - tcImports, - frameworkTcImports: TcImports, - tcGlobals, - diagnosticsLogger: DiagnosticsLogger, - generatedCcu: CcuThunk, - outfile, - typedImplFiles, - topAttrs, - pdbfile, - assemblyName, - assemVerFromAttrib, - signingInfo, - exiter: Exiter, - ilSourceDocs)) + (Args(ctok, + tcConfig, + tcImports, + frameworkTcImports: TcImports, + tcGlobals, + diagnosticsLogger: DiagnosticsLogger, + generatedCcu: CcuThunk, + outfile, + typedImplFiles, + topAttrs, + pdbfile, + assemblyName, + assemVerFromAttrib, + signingInfo, + exiter: Exiter, + ilSourceDocs)) = // Encode the signature data ReportTime tcConfig "Encode Interface Data" @@ -949,26 +949,26 @@ let main3 /// - IL code generation let main4 (tcImportsCapture, dynamicAssemblyCreator) - (Args (ctok, - tcConfig: TcConfig, - tcImports, - tcGlobals: TcGlobals, - diagnosticsLogger, - generatedCcu: CcuThunk, - outfile, - optimizedImpls, - topAttrs, - pdbfile, - assemblyName, - sigDataAttributes, - sigDataResources, - optDataResources, - assemVerFromAttrib, - signingInfo, - metadataVersion, - exiter: Exiter, - ilSourceDocs, - refAssemblySignatureHash)) + (Args(ctok, + tcConfig: TcConfig, + tcImports, + tcGlobals: TcGlobals, + diagnosticsLogger, + generatedCcu: CcuThunk, + outfile, + optimizedImpls, + topAttrs, + pdbfile, + assemblyName, + sigDataAttributes, + sigDataResources, + optDataResources, + assemVerFromAttrib, + signingInfo, + metadataVersion, + exiter: Exiter, + ilSourceDocs, + refAssemblySignatureHash)) = match tcImportsCapture with | None -> () @@ -1058,19 +1058,19 @@ let main4 /// Fifth phase of compilation. /// - static linking let main5 - (Args (ctok, - tcConfig, - tcImports, - tcGlobals, - diagnosticsLogger: DiagnosticsLogger, - staticLinker, - outfile, - pdbfile, - ilxMainModule, - signingInfo, - exiter: Exiter, - ilSourceDocs, - refAssemblySignatureHash)) + (Args(ctok, + tcConfig, + tcImports, + tcGlobals, + diagnosticsLogger: DiagnosticsLogger, + staticLinker, + outfile, + pdbfile, + ilxMainModule, + signingInfo, + exiter: Exiter, + ilSourceDocs, + refAssemblySignatureHash)) = use _ = UseBuildPhase BuildPhase.Output @@ -1105,18 +1105,18 @@ let main5 /// - write the binaries let main6 dynamicAssemblyCreator - (Args (ctok, - tcConfig, - tcImports: TcImports, - tcGlobals: TcGlobals, - diagnosticsLogger: DiagnosticsLogger, - ilxMainModule, - outfile, - pdbfile, - signingInfo, - exiter: Exiter, - ilSourceDocs, - refAssemblySignatureHash)) + (Args(ctok, + tcConfig, + tcImports: TcImports, + tcGlobals: TcGlobals, + diagnosticsLogger: DiagnosticsLogger, + ilxMainModule, + outfile, + pdbfile, + signingInfo, + exiter: Exiter, + ilSourceDocs, + refAssemblySignatureHash)) = ReportTime tcConfig "Write .NET Binary" diff --git a/src/fcs-fable/src/Compiler/FSComp.txt b/src/fcs-fable/src/Compiler/FSComp.txt index c6baff5fc2..d0fad76ab3 100644 --- a/src/fcs-fable/src/Compiler/FSComp.txt +++ b/src/fcs-fable/src/Compiler/FSComp.txt @@ -750,7 +750,7 @@ tcTypeAbbreviationsCheckedAtCompileTime,"As of F# 4.1, the accessibility of type 897,tcMeasureDeclarationsRequireStaticMembers,"Measure declarations may have only static members" tcStructsMayNotContainDoBindings,"Structs cannot contain 'do' bindings because the default constructor for structs would not execute these bindings" 901,tcStructsMayNotContainLetBindings,"Structs cannot contain value definitions because the default constructor for structs will not execute these bindings. Consider adding additional arguments to the primary constructor for the type." -902,tcStaticLetBindingsRequireClassesWithImplicitConstructors,"For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'." +902,tcStaticLetBindingsRequireClassesWithImplicitConstructors,"For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher." 904,tcMeasureDeclarationsRequireStaticMembersNotConstructors,"Measure declarations may have only static members: constructors are not available" 905,tcMemberAndLocalClassBindingHaveSameName,"A member and a local class binding both have the name '%s'" 906,tcTypeAbbreviationsCannotHaveInterfaceDeclaration,"Type abbreviations cannot have interface declarations" @@ -839,7 +839,7 @@ ilDynamicInvocationNotSupported,"Dynamic invocation of %s is not supported" 992,ilStructLayoutAttributeCouldNotBeDecoded,"The StructLayout attribute could not be decoded" 993,ilDefaultAugmentationAttributeCouldNotBeDecoded,"The DefaultAugmentation attribute could not be decoded" 994,ilReflectedDefinitionsCannotUseSliceOperator,"Reflected definitions cannot contain uses of the prefix splice operator '%%'" -998,packageManagerUnknown,"Package manager key '%s' was not registered in %s. Currently registered: %s. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager" +998,packageManagerUnknown,"Package manager key '%s' was not registered in %s. Currently registered: %s. You can provide extra path(s) by passing '--compilertool:' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager" 999,packageManagerError,"%s" 1000,optsProblemWithCodepage,"Problem with codepage '%d': %s" optsCopyright,"Copyright (c) Microsoft Corporation. All Rights Reserved." @@ -1588,6 +1588,10 @@ featureChkNotTailRecursive,"Raises warnings if a member or function has the 'Tai featureWhileBang,"'while!' expression" featureExtendedFixedBindings,"extended fixed bindings for byref and GetPinnableReference" featurePreferStringGetPinnableReference,"prefer String.GetPinnableReference in fixed bindings" +featurePreferExtensionMethodOverPlainProperty,"prefer extension method over plain property" +featureWarningIndexedPropertiesGetSetSameType,"Indexed properties getter and setter must have the same type" +featureChkTailCallAttrOnNonRec,"Raises warnings if the 'TailCall' attribute is used on non-recursive functions." +featureUnionIsPropertiesVisible,"Union case test properties" 3354,tcNotAFunctionButIndexerNamedIndexingNotYetEnabled,"This value supports indexing, e.g. '%s.[index]'. The syntax '%s[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation." 3354,tcNotAFunctionButIndexerIndexingNotYetEnabled,"This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation." 3355,tcNotAnIndexerNamedIndexingNotYetEnabled,"The value '%s' is not a function and does not support index notation." @@ -1714,7 +1718,6 @@ featureStaticLetInRecordsDusEmptyTypes,"Allow static let bindings in union, reco 3568,parsMissingKeyword,"Missing keyword '%s'" 3569,chkNotTailRecursive,"The member or function '%s' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way." 3570,tcAmbiguousDiscardDotLambda,"The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope." -3571,parsUnderScoreDotLambdaNonAtomic," _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses." featureAccessorFunctionShorthand,"underscore dot shorthand for accessor only function" 3572,parsConstraintIntersectionSyntaxUsedWithNonFlexibleType,"Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'." 3573,tcStaticBindingInExtrinsicAugmentation,"Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead." @@ -1724,4 +1727,15 @@ featureUnmanagedConstraintCsharpInterop,"Interop between C#'s and F#'s unmanaged 3578,chkCopyUpdateSyntaxInAnonRecords,"This expression is an anonymous record, use {{|...|}} instead of {{...}}." 3579,alwaysUseTypedStringInterpolation,"Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended." 3580,tcUnexpectedFunTypeInUnionCaseField,"Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b)." +3581,chkIndexedGetterAndSetterHaveSamePropertyType,"An indexed property's getter and setter must have the same type. Property '%s' has getter of type '%s' but setter of type '%s'." 3582,tcInfoIfFunctionShadowsUnionCase,"This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses." +3583,unnecessaryParentheses,"Parentheses can be removed." +3584,tcDotLambdaAtNotSupportedExpression,"Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'." +3585,tcStructUnionMultiCaseFieldsSameType,"If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields." +featureReuseSameFieldsInStructUnions,"Share underlying fields in a [] discriminated union as long as they have same name and type" +3855,tcNoStaticMemberFoundForOverride,"No static abstract member was found that corresponds to this override" +3859,tcNoStaticPropertyFoundForOverride,"No static abstract property was found that corresponds to this override" +3860,chkStaticMembersOnObjectExpressions,"Object expressions cannot implement interfaces with static abstract members or declare static members." +3861,chkTailCallAttrOnNonRec,"The TailCall attribute should only be applied to recursive functions." +3862,parsStaticMemberImcompleteSyntax,"Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration." +3863,parsExpectingField,"Expecting record field" \ No newline at end of file diff --git a/src/fcs-fable/src/Compiler/FSStrings.resx b/src/fcs-fable/src/Compiler/FSStrings.resx index 04946671a8..251f626c63 100644 --- a/src/fcs-fable/src/Compiler/FSStrings.resx +++ b/src/fcs-fable/src/Compiler/FSStrings.resx @@ -882,6 +882,12 @@ The member '{0}' is specialized with 'unit' but 'unit' can't be used as return type of an abstract method parameterized on return type. + + Static member is expected. + + + Non-static member is expected. + This constructor is applied to {0} argument(s) but expects {1} diff --git a/src/fcs-fable/src/Compiler/FSharp.Compiler.Service.fsproj b/src/fcs-fable/src/Compiler/FSharp.Compiler.Service.fsproj index 45ae22a3e5..687bc26923 100644 --- a/src/fcs-fable/src/Compiler/FSharp.Compiler.Service.fsproj +++ b/src/fcs-fable/src/Compiler/FSharp.Compiler.Service.fsproj @@ -106,6 +106,8 @@ + + @@ -154,6 +156,8 @@ + + --module FSharp.Compiler.AbstractIL.AsciiLexer --internal --open Internal.Utilities.Text.Lexing --open FSharp.Compiler.AbstractIL.AsciiParser --unicode --lexlib Internal.Utilities.Text.Lexing AbstractIL\illex.fsl diff --git a/src/fcs-fable/src/Compiler/Facilities/BuildGraph.fs b/src/fcs-fable/src/Compiler/Facilities/BuildGraph.fs index 4249c04dfa..556dd21085 100644 --- a/src/fcs-fable/src/Compiler/Facilities/BuildGraph.fs +++ b/src/fcs-fable/src/Compiler/Facilities/BuildGraph.fs @@ -19,19 +19,21 @@ let wrapThreadStaticInfo computation = async { let diagnosticsLogger = DiagnosticsThreadStatics.DiagnosticsLogger let phase = DiagnosticsThreadStatics.BuildPhase + let ct = Cancellable.Token try return! computation finally DiagnosticsThreadStatics.DiagnosticsLogger <- diagnosticsLogger DiagnosticsThreadStatics.BuildPhase <- phase + Cancellable.Token <- ct } type Async<'T> with static member AwaitNodeCode(node: NodeCode<'T>) = match node with - | Node (computation) -> wrapThreadStaticInfo computation + | Node(computation) -> wrapThreadStaticInfo computation [] type NodeCodeBuilder() = @@ -46,7 +48,7 @@ type NodeCodeBuilder() = Node( async.Delay(fun () -> match f () with - | Node (p) -> p) + | Node(p) -> p) ) [] @@ -56,7 +58,7 @@ type NodeCodeBuilder() = member _.ReturnFrom(computation: NodeCode<_>) = computation [] - member _.Bind(Node (p): NodeCode<'a>, binder: 'a -> NodeCode<'b>) : NodeCode<'b> = + member _.Bind(Node(p): NodeCode<'a>, binder: 'a -> NodeCode<'b>) : NodeCode<'b> = Node( async.Bind( p, @@ -67,7 +69,7 @@ type NodeCodeBuilder() = ) [] - member _.TryWith(Node (p): NodeCode<'T>, binder: exn -> NodeCode<'T>) : NodeCode<'T> = + member _.TryWith(Node(p): NodeCode<'T>, binder: exn -> NodeCode<'T>) : NodeCode<'T> = Node( async.TryWith( p, @@ -78,7 +80,7 @@ type NodeCodeBuilder() = ) [] - member _.TryFinally(Node (p): NodeCode<'T>, binder: unit -> unit) : NodeCode<'T> = Node(async.TryFinally(p, binder)) + member _.TryFinally(Node(p): NodeCode<'T>, binder: unit -> unit) : NodeCode<'T> = Node(async.TryFinally(p, binder)) [] member _.For(xs: 'T seq, binder: 'T -> NodeCode) : NodeCode = @@ -92,7 +94,7 @@ type NodeCodeBuilder() = ) [] - member _.Combine(Node (p1): NodeCode, Node (p2): NodeCode<'T>) : NodeCode<'T> = Node(async.Combine(p1, p2)) + member _.Combine(Node(p1): NodeCode, Node(p2): NodeCode<'T>) : NodeCode<'T> = Node(async.Combine(p1, p2)) [] member _.Using(value: CompilationGlobalsScope, binder: CompilationGlobalsScope -> NodeCode<'U>) = @@ -127,6 +129,7 @@ type NodeCode private () = static member RunImmediate(computation: NodeCode<'T>, ct: CancellationToken) = let diagnosticsLogger = DiagnosticsThreadStatics.DiagnosticsLogger let phase = DiagnosticsThreadStatics.BuildPhase + let ct2 = Cancellable.Token try try @@ -134,6 +137,7 @@ type NodeCode private () = async { DiagnosticsThreadStatics.DiagnosticsLogger <- diagnosticsLogger DiagnosticsThreadStatics.BuildPhase <- phase + Cancellable.Token <- ct2 return! computation |> Async.AwaitNodeCode } @@ -141,6 +145,7 @@ type NodeCode private () = finally DiagnosticsThreadStatics.DiagnosticsLogger <- diagnosticsLogger DiagnosticsThreadStatics.BuildPhase <- phase + Cancellable.Token <- ct2 with :? AggregateException as ex when ex.InnerExceptions.Count = 1 -> raise (ex.InnerExceptions[0]) @@ -150,12 +155,14 @@ type NodeCode private () = static member StartAsTask_ForTesting(computation: NodeCode<'T>, ?ct: CancellationToken) = let diagnosticsLogger = DiagnosticsThreadStatics.DiagnosticsLogger let phase = DiagnosticsThreadStatics.BuildPhase + let ct2 = Cancellable.Token try let work = async { DiagnosticsThreadStatics.DiagnosticsLogger <- diagnosticsLogger DiagnosticsThreadStatics.BuildPhase <- phase + Cancellable.Token <- ct2 return! computation |> Async.AwaitNodeCode } @@ -163,6 +170,7 @@ type NodeCode private () = finally DiagnosticsThreadStatics.DiagnosticsLogger <- diagnosticsLogger DiagnosticsThreadStatics.BuildPhase <- phase + Cancellable.Token <- ct2 static member CancellationToken = cancellationToken @@ -263,7 +271,7 @@ type GraphNode<'T> private (computation: NodeCode<'T>, cachedResult: ValueOption | ValueSome value -> return value | _ -> let tcs = TaskCompletionSource<'T>() - let (Node (p)) = computation + let (Node(p)) = computation Async.StartWithContinuations( async { diff --git a/src/fcs-fable/src/Compiler/Facilities/CompilerLocation.fs b/src/fcs-fable/src/Compiler/Facilities/CompilerLocation.fs index 7bee5f1c92..fa49445b76 100644 --- a/src/fcs-fable/src/Compiler/Facilities/CompilerLocation.fs +++ b/src/fcs-fable/src/Compiler/Facilities/CompilerLocation.fs @@ -41,7 +41,8 @@ module internal FSharpEnvironment = let FSharpBinaryMetadataFormatRevision = "2.0.0.0" let isRunningOnCoreClr = - typeof.Assembly.FullName.StartsWith ("System.Private.CoreLib", StringComparison.InvariantCultureIgnoreCase) + typeof.Assembly.FullName + .StartsWith("System.Private.CoreLib", StringComparison.InvariantCultureIgnoreCase) module Option = /// Convert string into Option string where null and String.Empty result in None @@ -181,9 +182,9 @@ module internal FSharpEnvironment = seq { match path with | None -> () - | Some (p: string) -> + | Some(p: string) -> match Path.GetDirectoryName(p) with - | s when s = "" || s = null || Path.GetFileName(p) = "packages" || s = p -> () + | s when s = "" || isNull s || Path.GetFileName(p) = "packages" || s = p -> () | parentDir -> yield! searchParentDirChain (Some parentDir) assemblyName for p in searchToolPaths path compilerToolPaths do diff --git a/src/fcs-fable/src/Compiler/Facilities/DiagnosticsLogger.fs b/src/fcs-fable/src/Compiler/Facilities/DiagnosticsLogger.fs index 534ca6e65c..643f9c022d 100644 --- a/src/fcs-fable/src/Compiler/Facilities/DiagnosticsLogger.fs +++ b/src/fcs-fable/src/Compiler/Facilities/DiagnosticsLogger.fs @@ -2,6 +2,7 @@ module FSharp.Compiler.DiagnosticsLogger +open FSharp.Compiler open FSharp.Compiler.Diagnostics open FSharp.Compiler.Features open FSharp.Compiler.Text.Range @@ -26,7 +27,7 @@ type DiagnosticStyle = exception WrappedError of exn * range with override this.Message = match this :> exn with - | WrappedError (exn, _) -> "WrappedError(" + exn.Message + ")" + | WrappedError(exn, _) -> "WrappedError(" + exn.Message + ")" | _ -> "WrappedError" /// Thrown when immediate, local error recovery is not possible. This indicates @@ -42,13 +43,13 @@ exception ReportedError of exn option with "The exception has been reported. This internal exception should now be caught at an error recovery point on the stack." match this :> exn with - | ReportedError (Some exn) -> msg + " Original message: " + exn.Message + ")" + | ReportedError(Some exn) -> msg + " Original message: " + exn.Message + ")" | _ -> msg let rec findOriginalException err = match err with - | ReportedError (Some err) -> err - | WrappedError (err, _) -> findOriginalException err + | ReportedError(Some err) -> err + | WrappedError(err, _) -> findOriginalException err | _ -> err type Suggestions = (string -> unit) -> unit @@ -62,7 +63,7 @@ exception StopProcessingExn of exn option with override this.ToString() = match this :> exn with - | StopProcessingExn (Some exn) -> "StopProcessingExn, originally (" + exn.ToString() + ")" + | StopProcessingExn(Some exn) -> "StopProcessingExn, originally (" + exn.ToString() + ")" | _ -> "StopProcessingExn" let (|StopProcessing|_|) exn = @@ -76,24 +77,24 @@ let StopProcessing<'T> = StopProcessingExn None exception DiagnosticWithText of number: int * message: string * range: range with override this.Message = match this :> exn with - | DiagnosticWithText (_, msg, _) -> msg + | DiagnosticWithText(_, msg, _) -> msg | _ -> "impossible" exception InternalError of message: string * range: range with override this.Message = match this :> exn with - | InternalError (msg, m) -> msg + m.ToString() + | InternalError(msg, m) -> msg + m.ToString() | _ -> "impossible" exception InternalException of exn: Exception * msg: string * range: range with override this.Message = match this :> exn with - | InternalException (_, msg, _) -> msg + | InternalException(_, msg, _) -> msg | _ -> "impossible" override this.ToString() = match this :> exn with - | InternalException (exn, _, _) -> exn.ToString() + | InternalException(exn, _, _) -> exn.ToString() | _ -> "impossible" exception UserCompilerMessage of message: string * number: int * range: range @@ -113,7 +114,7 @@ exception UnresolvedReferenceError of assemblyName: string * range: range exception UnresolvedPathReferenceNoRange of assemblyName: string * path: string with override this.Message = match this :> exn with - | UnresolvedPathReferenceNoRange (assemblyName, path) -> sprintf "Assembly: %s, full path: %s" assemblyName path + | UnresolvedPathReferenceNoRange(assemblyName, path) -> sprintf "Assembly: %s, full path: %s" assemblyName path | _ -> "impossible" exception UnresolvedPathReference of assemblyName: string * path: string * range: range @@ -121,7 +122,7 @@ exception UnresolvedPathReference of assemblyName: string * path: string * range exception DiagnosticWithSuggestions of number: int * message: string * range: range * identifier: string * suggestions: Suggestions with // int is e.g. 191 in FS0191 override this.Message = match this :> exn with - | DiagnosticWithSuggestions (_, msg, _, _, _) -> msg + | DiagnosticWithSuggestions(_, msg, _, _, _) -> msg | _ -> "impossible" /// A diagnostic that is raised when enabled manually, or by default with a language feature @@ -154,7 +155,7 @@ let inline protectAssemblyExplorationF dflt ([] f) = try f () with - | UnresolvedPathReferenceNoRange (asmName, path) -> dflt (asmName, path) + | UnresolvedPathReferenceNoRange(asmName, path) -> dflt (asmName, path) | _ -> reraise () let inline protectAssemblyExplorationNoReraise dflt1 dflt2 ([] f) = @@ -175,7 +176,7 @@ let rec AttachRange m (exn: exn) = | :? TargetInvocationException -> AttachRange m exn.InnerException #endif | UnresolvedReferenceNoRange a -> UnresolvedReferenceError(a, m) - | UnresolvedPathReferenceNoRange (a, p) -> UnresolvedPathReference(a, p, m) + | UnresolvedPathReferenceNoRange(a, p) -> UnresolvedPathReference(a, p, m) #if !FABLE_COMPILER | :? NotSupportedException -> exn | :? SystemException -> InternalException(exn, exn.Message, m) @@ -428,7 +429,8 @@ module DiagnosticsLoggerExtensions = try if not tryAndDetectDev15 then let preserveStackTrace = - typeof.GetMethod ("InternalPreserveStackTrace", BindingFlags.Instance ||| BindingFlags.NonPublic) + typeof + .GetMethod("InternalPreserveStackTrace", BindingFlags.Instance ||| BindingFlags.NonPublic) preserveStackTrace.Invoke(exn, null) |> ignore with _ -> @@ -442,8 +444,8 @@ module DiagnosticsLoggerExtensions = member x.EmitDiagnostic(exn, severity) = #if !FABLE_COMPILER match exn with - | InternalError (s, _) - | InternalException (_, s, _) + | InternalError(s, _) + | InternalException(_, s, _) | Failure s as exn -> Debug.Assert(false, sprintf "Unexpected exception raised in compiler: %s\n%s" s (exn.ToString())) | _ -> () #endif @@ -479,12 +481,12 @@ module DiagnosticsLoggerExtensions = #if !FABLE_COMPILER // Don't send ThreadAbortException down the error channel | :? System.Threading.ThreadAbortException - | WrappedError (:? System.Threading.ThreadAbortException, _) -> () + | WrappedError(:? System.Threading.ThreadAbortException, _) -> () #endif | ReportedError _ - | WrappedError (ReportedError _, _) -> () + | WrappedError(ReportedError _, _) -> () | StopProcessing - | WrappedError (StopProcessing, _) -> + | WrappedError(StopProcessing, _) -> PreserveStackTrace exn raise exn | _ -> @@ -492,7 +494,7 @@ module DiagnosticsLoggerExtensions = x.ErrorR(AttachRange m exn) // may raise exceptions, e.g. an fsi error sink raises StopProcessing. with | ReportedError _ - | WrappedError (ReportedError _, _) -> () + | WrappedError(ReportedError _, _) -> () member x.StopProcessingRecovery (exn: exn) (m: range) = // Do standard error recovery. @@ -501,15 +503,15 @@ module DiagnosticsLoggerExtensions = // Can throw other exceptions raised by the DiagnosticSink(exn) handler. match exn with | StopProcessing - | WrappedError (StopProcessing, _) -> () // suppress, so skip error recovery. + | WrappedError(StopProcessing, _) -> () // suppress, so skip error recovery. | _ -> try x.ErrorRecovery exn m with | StopProcessing - | WrappedError (StopProcessing, _) -> () // catch, e.g. raised by DiagnosticSink. + | WrappedError(StopProcessing, _) -> () // catch, e.g. raised by DiagnosticSink. | ReportedError _ - | WrappedError (ReportedError _, _) -> () // catch, but not expected unless ErrorRecovery is changed. + | WrappedError(ReportedError _, _) -> () // catch, but not expected unless ErrorRecovery is changed. member x.ErrorRecoveryNoRange(exn: exn) = x.ErrorRecovery exn range0 @@ -651,10 +653,10 @@ let ReportWarnings warns = let CommitOperationResult res = match res with - | OkResult (warns, res) -> + | OkResult(warns, res) -> ReportWarnings warns res - | ErrorResult (warns, err) -> + | ErrorResult(warns, err) -> ReportWarnings warns error err @@ -670,18 +672,18 @@ let inline ResultD x = OkResult([], x) let CheckNoErrorsAndGetWarnings res = match res with - | OkResult (warns, res2) -> Some(warns, res2) + | OkResult(warns, res2) -> Some(warns, res2) | ErrorResult _ -> None [] let inline bind f res = match res with - | OkResult ([], res) -> (* tailcall *) f res - | OkResult (warns, res) -> + | OkResult([], res) -> (* tailcall *) f res + | OkResult(warns, res) -> match f res with - | OkResult (warns2, res2) -> OkResult(warns @ warns2, res2) - | ErrorResult (warns2, err) -> ErrorResult(warns @ warns2, err) - | ErrorResult (warns, err) -> ErrorResult(warns, err) + | OkResult(warns2, res2) -> OkResult(warns @ warns2, res2) + | ErrorResult(warns2, err) -> ErrorResult(warns @ warns2, err) + | ErrorResult(warns, err) -> ErrorResult(warns, err) /// Stop on first error. Accumulate warnings and continue. [] @@ -748,7 +750,7 @@ let rec Iterate2D f xs ys = [] let TryD f g = match f () with - | ErrorResult (warns, err) -> + | ErrorResult(warns, err) -> trackErrors { do! OkResult(warns, ()) return! g err @@ -786,8 +788,8 @@ let inline MapReduce2D mapper zero reducer xs ys = module OperationResult = let inline ignore (res: OperationResult<'a>) = match res with - | OkResult (warnings, _) -> OkResult(warnings, ()) - | ErrorResult (warnings, err) -> ErrorResult(warnings, err) + | OkResult(warnings, _) -> OkResult(warnings, ()) + | ErrorResult(warnings, err) -> ErrorResult(warnings, err) // Code below is for --flaterrors flag that is only used by the IDE let stringThatIsAProxyForANewlineInFlatErrors = String [| char 29 |] @@ -882,11 +884,13 @@ type StackGuard(maxDepth: int, name: string) = if depth % maxDepth = 0 then let diagnosticsLogger = DiagnosticsThreadStatics.DiagnosticsLogger let buildPhase = DiagnosticsThreadStatics.BuildPhase + let ct = Cancellable.Token async { do! Async.SwitchToNewThread() Thread.CurrentThread.Name <- $"F# Extra Compilation Thread for {name} (depth {depth})" use _scope = new CompilationGlobalsScope(diagnosticsLogger, buildPhase) + use _token = Cancellable.UsingToken ct return f () } |> Async.RunImmediate diff --git a/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fs b/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fs index 0cc5370d57..643224b904 100644 --- a/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fs +++ b/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fs @@ -43,6 +43,7 @@ type LanguageFeature = | IndexerNotationWithoutDot | RefCellNotationInformationals | UseBindingValueDiscard + | UnionIsPropertiesVisible | NonVariablePatternsToRightOfAsPatterns | AttributesToRightOfModuleKeyword | MLCompatRevisions @@ -77,8 +78,12 @@ type LanguageFeature = | WarningWhenTailRecAttributeButNonTailRecUsage | UnmanagedConstraintCsharpInterop | WhileBang + | ReuseSameFieldsInStructUnions | ExtendedFixedBindings | PreferStringGetPinnableReference + | PreferExtensionMethodOverPlainProperty + | WarningIndexedPropertiesGetSetSameType + | WarningWhenTailCallAttrOnNonRec /// LanguageVersion management type LanguageVersion(versionText) = @@ -185,6 +190,11 @@ type LanguageVersion(versionText) = // F# preview LanguageFeature.FromEndSlicing, previewVersion LanguageFeature.UnmanagedConstraintCsharpInterop, previewVersion + LanguageFeature.ReuseSameFieldsInStructUnions, previewVersion + LanguageFeature.PreferExtensionMethodOverPlainProperty, previewVersion + LanguageFeature.WarningIndexedPropertiesGetSetSameType, previewVersion + LanguageFeature.WarningWhenTailCallAttrOnNonRec, previewVersion + LanguageFeature.UnionIsPropertiesVisible, previewVersion ] static let defaultLanguageVersion = LanguageVersion("default") @@ -281,6 +291,7 @@ type LanguageVersion(versionText) = | LanguageFeature.IndexerNotationWithoutDot -> FSComp.SR.featureIndexerNotationWithoutDot () | LanguageFeature.RefCellNotationInformationals -> FSComp.SR.featureRefCellNotationInformationals () | LanguageFeature.UseBindingValueDiscard -> FSComp.SR.featureDiscardUseValue () + | LanguageFeature.UnionIsPropertiesVisible -> FSComp.SR.featureUnionIsPropertiesVisible () | LanguageFeature.NonVariablePatternsToRightOfAsPatterns -> FSComp.SR.featureNonVariablePatternsToRightOfAsPatterns () | LanguageFeature.AttributesToRightOfModuleKeyword -> FSComp.SR.featureAttributesToRightOfModuleKeyword () | LanguageFeature.MLCompatRevisions -> FSComp.SR.featureMLCompatRevisions () @@ -319,8 +330,12 @@ type LanguageVersion(versionText) = | LanguageFeature.WarningWhenTailRecAttributeButNonTailRecUsage -> FSComp.SR.featureChkNotTailRecursive () | LanguageFeature.UnmanagedConstraintCsharpInterop -> FSComp.SR.featureUnmanagedConstraintCsharpInterop () | LanguageFeature.WhileBang -> FSComp.SR.featureWhileBang () + | LanguageFeature.ReuseSameFieldsInStructUnions -> FSComp.SR.featureReuseSameFieldsInStructUnions () | LanguageFeature.ExtendedFixedBindings -> FSComp.SR.featureExtendedFixedBindings () | LanguageFeature.PreferStringGetPinnableReference -> FSComp.SR.featurePreferStringGetPinnableReference () + | LanguageFeature.PreferExtensionMethodOverPlainProperty -> FSComp.SR.featurePreferExtensionMethodOverPlainProperty () + | LanguageFeature.WarningIndexedPropertiesGetSetSameType -> FSComp.SR.featureWarningIndexedPropertiesGetSetSameType () + | LanguageFeature.WarningWhenTailCallAttrOnNonRec -> FSComp.SR.featureChkTailCallAttrOnNonRec () /// Get a version string associated with the given feature. static member GetFeatureVersionString feature = diff --git a/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fsi b/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fsi index c1cb2378d4..7af2317e3c 100644 --- a/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fsi +++ b/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fsi @@ -33,6 +33,7 @@ type LanguageFeature = | IndexerNotationWithoutDot | RefCellNotationInformationals | UseBindingValueDiscard + | UnionIsPropertiesVisible | NonVariablePatternsToRightOfAsPatterns | AttributesToRightOfModuleKeyword | MLCompatRevisions @@ -67,8 +68,13 @@ type LanguageFeature = | WarningWhenTailRecAttributeButNonTailRecUsage | UnmanagedConstraintCsharpInterop | WhileBang + | ReuseSameFieldsInStructUnions | ExtendedFixedBindings | PreferStringGetPinnableReference + /// RFC-1137 + | PreferExtensionMethodOverPlainProperty + | WarningIndexedPropertiesGetSetSameType + | WarningWhenTailCallAttrOnNonRec /// LanguageVersion management type LanguageVersion = diff --git a/src/fcs-fable/src/Compiler/Facilities/TextLayoutRender.fs b/src/fcs-fable/src/Compiler/Facilities/TextLayoutRender.fs index aa0b3742b9..070aea9036 100644 --- a/src/fcs-fable/src/Compiler/Facilities/TextLayoutRender.fs +++ b/src/fcs-fable/src/Compiler/Facilities/TextLayoutRender.fs @@ -104,13 +104,13 @@ module LayoutRender = match layout with | ObjLeaf _ -> failwith "ObjLeaf should never appear here" (* pos is tab level *) - | Leaf (_, text, _) -> k (rr.AddText z text, i + text.Text.Length) - | Node (l, r, Broken indent) -> + | Leaf(_, text, _) -> k (rr.AddText z text, i + text.Text.Length) + | Node(l, r, Broken indent) -> addL z pos i l <| fun (z, _i) -> let z, i = rr.AddBreak z (pos + indent), (pos + indent) addL z (pos + indent) i r k - | Node (l, r, _) -> + | Node(l, r, _) -> let jm = Layout.JuxtapositionMiddle(l, r) addL z pos i l @@ -118,7 +118,7 @@ module LayoutRender = let z, i = if jm then z, i else rr.AddText z TaggedText.space, i + 1 let pos = i addL z pos i r k - | Attr (tag, attrs, l) -> + | Attr(tag, attrs, l) -> let z = rr.AddTag z (tag, attrs, true) addL z pos i l diff --git a/src/fcs-fable/src/Compiler/Facilities/prim-lexing.fs b/src/fcs-fable/src/Compiler/Facilities/prim-lexing.fs index 45cb204831..e84974842a 100644 --- a/src/fcs-fable/src/Compiler/Facilities/prim-lexing.fs +++ b/src/fcs-fable/src/Compiler/Facilities/prim-lexing.fs @@ -218,12 +218,7 @@ type internal Position = type internal LexBufferFiller<'Char> = LexBuffer<'Char> -> unit and [] internal LexBuffer<'Char> - ( - filler: LexBufferFiller<'Char>, - reportLibraryOnlyFeatures: bool, - langVersion: LanguageVersion, - strictIndentation: bool option - ) = + (filler: LexBufferFiller<'Char>, reportLibraryOnlyFeatures: bool, langVersion: LanguageVersion, strictIndentation: bool option) = let context = Dictionary(1) let mutable buffer = [||] /// number of valid characters beyond bufferScanStart. @@ -365,7 +360,9 @@ and [] internal LexBuffer<'Char> // Important: this method does copy the array static member FromArray(reportLibraryOnlyFeatures, langVersion, strictIndentation, s: 'Char[]) : LexBuffer<'Char> = let buffer = Array.copy s - LexBuffer<'Char>.FromArrayNoCopy (reportLibraryOnlyFeatures, langVersion, strictIndentation, buffer) + + LexBuffer<'Char> + .FromArrayNoCopy(reportLibraryOnlyFeatures, langVersion, strictIndentation, buffer) // Important: This method takes ownership of the array static member FromChars(reportLibraryOnlyFeatures, langVersion, strictIndentation, arr: char[]) = @@ -378,23 +375,25 @@ and [] internal LexBuffer<'Char> #else let mutable currentSourceIndex = 0 - LexBuffer.FromFunction - (reportLibraryOnlyFeatures, - langVersion, - strictIndentation, - fun (chars, start, length) -> - let lengthToCopy = - if currentSourceIndex + length <= sourceText.Length then - length - else - sourceText.Length - currentSourceIndex - - if lengthToCopy <= 0 then - 0 - else - sourceText.CopyTo(currentSourceIndex, chars, start, lengthToCopy) - currentSourceIndex <- currentSourceIndex + lengthToCopy - lengthToCopy) + LexBuffer + .FromFunction( + reportLibraryOnlyFeatures, + langVersion, + strictIndentation, + fun (chars, start, length) -> + let lengthToCopy = + if currentSourceIndex + length <= sourceText.Length then + length + else + sourceText.Length - currentSourceIndex + + if lengthToCopy <= 0 then + 0 + else + sourceText.CopyTo(currentSourceIndex, chars, start, lengthToCopy) + currentSourceIndex <- currentSourceIndex + lengthToCopy + lengthToCopy + ) #endif //!FABLE_COMPILER static member FromString (reportLibraryOnlyFeatures, langVersion, strictIndentation, s: string) = diff --git a/src/fcs-fable/src/Compiler/Facilities/prim-parsing.fs b/src/fcs-fable/src/Compiler/Facilities/prim-parsing.fs index b109b004d8..9ce808163c 100644 --- a/src/fcs-fable/src/Compiler/Facilities/prim-parsing.fs +++ b/src/fcs-fable/src/Compiler/Facilities/prim-parsing.fs @@ -16,13 +16,11 @@ exception Accept of obj [] type internal IParseState - ( - ruleStartPoss: Position[], - ruleEndPoss: Position[], - lhsPos: Position[], - ruleValues: obj[], - lexbuf: LexBuffer - ) = +#if FABLE_COMPILER + (ruleStartPoss: Position[], ruleEndPoss: Position[], lhsPos: Position[], ruleValues: obj[], lexbuf: LexBuffer) = +#else + (ruleStartPoss: Position[], ruleEndPoss: Position[], lhsPos: Position[], ruleValues: obj[], lexbuf: LexBuffer) = +#endif member _.LexBuffer = lexbuf member _.InputRange index = @@ -287,8 +285,8 @@ module internal Implementation = let actionTableCache = Array.zeroCreate (cacheSize * 2) let gotoTableCache = Array.zeroCreate (cacheSize * 2) #else - let actionTableCache = ArrayPool.Shared.Rent (cacheSize * 2) - let gotoTableCache = ArrayPool.Shared.Rent (cacheSize * 2) + let actionTableCache = ArrayPool.Shared.Rent(cacheSize * 2) + let gotoTableCache = ArrayPool.Shared.Rent(cacheSize * 2) // Clear the arrays since ArrayPool does not Array.Clear(actionTableCache, 0, actionTableCache.Length) Array.Clear(gotoTableCache, 0, gotoTableCache.Length) @@ -343,7 +341,7 @@ module internal Implementation = actionKind action = shiftFlag && (match tokenOpt with | None -> true - | Some (token) -> + | Some(token) -> let nextState = actionValue action actionKind (actionTable.Read(nextState, tables.tagOfToken (token))) = shiftFlag) then @@ -380,7 +378,7 @@ module internal Implementation = let action = let immediateAction = int tables.immediateActions[state] - if not (immediateAction = anyMarker) then + if immediateAction <> anyMarker then // Action has been pre-determined, no need to lookahead // Expecting it to be a Reduce action on a non-fakeStartNonTerminal ? immediateAction diff --git a/src/fcs-fable/src/Compiler/Interactive/fsi.fs b/src/fcs-fable/src/Compiler/Interactive/fsi.fs index 671e0a15f5..4cec0c7a8d 100644 --- a/src/fcs-fable/src/Compiler/Interactive/fsi.fs +++ b/src/fcs-fable/src/Compiler/Interactive/fsi.fs @@ -296,11 +296,7 @@ type internal FsiTimeReporter(outWriter: TextWriter) = /// Manages the emit of one logical assembly into multiple assemblies. Gives warnings /// on cross-fragment internal access. type ILMultiInMemoryAssemblyEmitEnv - ( - ilg: ILGlobals, - resolveAssemblyRef: ILAssemblyRef -> Choice option, - dynamicCcuName: string - ) = + (ilg: ILGlobals, resolveAssemblyRef: ILAssemblyRef -> Choice option, dynamicCcuName: string) = let typeMap = Dictionary(HashIdentity.Structural) let reverseTypeMap = Dictionary(HashIdentity.Structural) @@ -316,8 +312,8 @@ type ILMultiInMemoryAssemblyEmitEnv match aref.PublicKey with | None -> () - | Some (PublicKey bytes) -> asmName.SetPublicKey bytes - | Some (PublicKeyToken bytes) -> asmName.SetPublicKeyToken bytes + | Some(PublicKey bytes) -> asmName.SetPublicKey bytes + | Some(PublicKeyToken bytes) -> asmName.SetPublicKeyToken bytes match aref.Version with | None -> () @@ -330,12 +326,12 @@ type ILMultiInMemoryAssemblyEmitEnv let convResolveAssemblyRef (asmref: ILAssemblyRef) qualifiedName = let assembly = match resolveAssemblyRef asmref with - | Some (Choice1Of2 path) -> + | Some(Choice1Of2 path) -> // asmRef is a path but the runtime is smarter with assembly names so make one let asmName = AssemblyName.GetAssemblyName(path) asmName.CodeBase <- path FileSystem.AssemblyLoader.AssemblyLoad asmName - | Some (Choice2Of2 assembly) -> assembly + | Some(Choice2Of2 assembly) -> assembly | None -> let asmName = convAssemblyRef asmref FileSystem.AssemblyLoader.AssemblyLoad asmName @@ -393,7 +389,7 @@ type ILMultiInMemoryAssemblyEmitEnv and convTypeAux ty = match ty with | ILType.Void -> Type.GetType("System.Void") - | ILType.Array (shape, eltType) -> + | ILType.Array(shape, eltType) -> let baseT = convTypeAux eltType if shape.Rank = 1 then @@ -409,23 +405,24 @@ type ILMultiInMemoryAssemblyEmitEnv let baseT = convTypeAux eltType baseT.MakeByRefType() | ILType.TypeVar _tv -> failwith "open generic type" - | ILType.Modified (_, _, modifiedTy) -> convTypeAux modifiedTy + | ILType.Modified(_, _, modifiedTy) -> convTypeAux modifiedTy | ILType.FunctionPointer _callsig -> failwith "convType: fptr" /// Map the given ILTypeRef to the appropriate assembly fragment member _.MapTypeRef(tref: ILTypeRef) = - if tref.Scope.IsLocalRef && typeMap.ContainsKey(tref) then - typeMap[tref] |> snd + if tref.Scope.IsLocalRef then + match typeMap.TryGetValue tref with + | true, tmap -> tmap |> snd + | false, _ -> tref else tref /// Map an ILTypeRef built from reflection over loaded assembly fragments back to an ILTypeRef suitable /// to use on the F# compiler logic. member _.ReverseMapTypeRef(tref: ILTypeRef) = - if reverseTypeMap.ContainsKey(tref) then - reverseTypeMap[tref] - else - tref + match reverseTypeMap.TryGetValue tref with + | true, revtype -> revtype + | false, _ -> tref /// Convert an ILTypeRef to a dynamic System.Type given the dynamic emit context member _.LookupTypeRef(tref: ILTypeRef) = convTypeRef tref @@ -599,7 +596,7 @@ type internal FsiValuePrinter(fsi: FsiEvaluationSessionHostConfig, outWriter: Te try let itemLs = unfoldL // the function to layout each object in the unfold - (fun obj -> ienv.GetLayout obj) + ienv.GetLayout // the function to call at each step of the unfold (fun () -> if it.MoveNext() then Some((it.Key, it.Value), ()) else None) () @@ -609,7 +606,7 @@ type internal FsiValuePrinter(fsi: FsiEvaluationSessionHostConfig, outWriter: Te let makeListL itemLs = (leftL (TaggedText.tagText "[")) ^^ sepListL (rightL (TaggedText.tagText ";")) itemLs - ^^ (rightL (TaggedText.tagText "]")) + ^^ (rightL (TaggedText.tagText "]")) Some(wordL (TaggedText.tagText "dict") --- makeListL itemLs) finally @@ -630,7 +627,7 @@ type internal FsiValuePrinter(fsi: FsiEvaluationSessionHostConfig, outWriter: Te [ for x in fsi.AddedPrinters do match x with - | Choice1Of2 (aty: Type, printer) -> + | Choice1Of2(aty: Type, printer) -> yield (fun _ienv (obj: obj) -> match obj with @@ -643,7 +640,7 @@ type internal FsiValuePrinter(fsi: FsiEvaluationSessionHostConfig, outWriter: Te | _ -> Some(wordL (TaggedText.tagText text)) | _ -> None) - | Choice2Of2 (aty: Type, converter) -> + | Choice2Of2(aty: Type, converter) -> yield (fun ienv (obj: obj) -> match obj with @@ -667,7 +664,7 @@ type internal FsiValuePrinter(fsi: FsiEvaluationSessionHostConfig, outWriter: Te /// Get the evaluation context used when inverting the storage mapping of the ILDynamicAssemblyWriter. member _.GetEvaluationContext(emEnv: ILAssemblyEmitEnv) = match emEnv with - | SingleRefEmitAssembly (cenv, emEnv) -> + | SingleRefEmitAssembly(cenv, emEnv) -> { LookupTypeRef = LookupTypeRef cenv emEnv LookupType = LookupType cenv emEnv @@ -749,7 +746,7 @@ type internal FsiValuePrinter(fsi: FsiEvaluationSessionHostConfig, outWriter: Te match res with | None -> None - | Some (obj, objTy) -> + | Some(obj, objTy) -> let lay = valuePrinter.PrintValue(FsiValuePrinterMode.PrintDecl, opts, obj, objTy) if isEmptyL lay then None else Some lay // suppress empty layout @@ -772,7 +769,7 @@ type internal FsiValuePrinter(fsi: FsiEvaluationSessionHostConfig, outWriter: Te let rhsL = match res with | None -> None - | Some (obj, objTy) -> + | Some(obj, objTy) -> let lay = valuePrinter.PrintValue(FsiValuePrinterMode.PrintExpr, opts, obj, objTy) if isEmptyL lay then None else Some lay // suppress empty layout @@ -889,11 +886,7 @@ type internal FsiConsoleOutput(tcConfigB, outWriter: TextWriter, errorWriter: Te /// This DiagnosticsLogger reports all warnings, but raises StopProcessing on first error or early exit type internal DiagnosticsLoggerThatStopsOnFirstError - ( - tcConfigB: TcConfigBuilder, - fsiStdinSyphon: FsiStdinSyphon, - fsiConsoleOutput: FsiConsoleOutput - ) = + (tcConfigB: TcConfigBuilder, fsiStdinSyphon: FsiStdinSyphon, fsiConsoleOutput: FsiConsoleOutput) = inherit DiagnosticsLogger("DiagnosticsLoggerThatStopsOnFirstError") let mutable errorCount = 0 @@ -1079,7 +1072,7 @@ type internal FsiCommandLineOptions(fsi: FsiEvaluationSessionHostConfig, argv: s interact <- false (* --exec, exit after eval *) [] (* no arguments passed on, all consumed here *) - ) + ) ), None, None @@ -1189,7 +1182,8 @@ type internal FsiCommandLineOptions(fsi: FsiEvaluationSessionHostConfig, argv: s try let fsiCompilerOptions = fsiUsagePrefix tcConfigB - @ GetCoreFsiCompilerOptions tcConfigB @ fsiUsageSuffix tcConfigB + @ GetCoreFsiCompilerOptions tcConfigB + @ fsiUsageSuffix tcConfigB let abbrevArgs = GetAbbrevFlagSet tcConfigB false ParseCompilerOptions(collect, fsiCompilerOptions, List.tail (PostProcessCompilerArgs abbrevArgs argv)) @@ -1344,7 +1338,7 @@ let internal SetServerCodePages (fsiOptions: FsiCommandLineOptions) = do match inputCodePageOpt with | None -> () - | Some (n: int) -> + | Some(n: int) -> let encoding = Encoding.GetEncoding(n) // Note this modifies the real honest-to-goodness settings for the current shell. // and the modifications hang around even after the process has exited. @@ -1353,7 +1347,7 @@ let internal SetServerCodePages (fsiOptions: FsiCommandLineOptions) = do match outputCodePageOpt with | None -> () - | Some (n: int) -> + | Some(n: int) -> let encoding = Encoding.GetEncoding n // Note this modifies the real honest-to-goodness settings for the current shell. // and the modifications hang around even after the process has exited. @@ -1420,12 +1414,7 @@ type internal FsiConsolePrompt(fsiOptions: FsiCommandLineOptions, fsiConsoleOutp // Startup processing //---------------------------------------------------------------------------- type internal FsiConsoleInput - ( - fsi: FsiEvaluationSessionHostConfig, - fsiOptions: FsiCommandLineOptions, - inReader: TextReader, - outWriter: TextWriter - ) = + (fsi: FsiEvaluationSessionHostConfig, fsiOptions: FsiCommandLineOptions, inReader: TextReader, outWriter: TextWriter) = let consoleOpt = // The "console.fs" code does a limited form of "TAB-completion". @@ -1545,7 +1534,7 @@ let ConvReflectionTypeToILTypeRef (reflectionTy: Type) = else fullName.Substring(0, index) - let isTop = reflectionTy.DeclaringType = null + let isTop = isNull reflectionTy.DeclaringType if isTop then ILTypeRef.Create(scoref, [], fullName) @@ -1570,7 +1559,7 @@ let rec ConvReflectionTypeToILType (reflectionTy: Type) = if ctors.Length = 1 - && ctors[ 0 ].GetCustomAttribute() <> null + && (not (isNull (ctors[0].GetCustomAttribute()))) && not ctors[0].IsPublic && IsCompilerGeneratedName reflectionTy.Name then @@ -1595,8 +1584,7 @@ let rec ConvReflectionTypeToILType (reflectionTy: Type) = let genericArgs = reflectionTy.GenericTypeArguments - |> Seq.map ConvReflectionTypeToILType - |> Seq.map List.head + |> Seq.map (ConvReflectionTypeToILType >> List.head) |> List.ofSeq let boxity = @@ -1622,7 +1610,13 @@ let internal mkBoundValueTypedImpl tcGlobals m moduleName name ty = let mutable mty = Unchecked.defaultof<_> let entity = - Construct.NewModuleOrNamespace (Some compPath) vis (Ident(moduleName, m)) XmlDoc.Empty [] (MaybeLazy.Lazy(lazy mty)) + Construct.NewModuleOrNamespace + (Some compPath) + vis + (Ident(moduleName, m)) + XmlDoc.Empty + [] + (MaybeLazy.Lazy(InterruptibleLazy(fun _ -> mty))) let v = Construct.NewVal( @@ -1982,7 +1976,7 @@ type internal FsiDynamicCompiler let emEnv, execs = match emEnv with - | SingleRefEmitAssembly (cenv, emEnv) -> + | SingleRefEmitAssembly(cenv, emEnv) -> let assemblyBuilder, moduleBuilder = builders.Value @@ -2011,7 +2005,7 @@ type internal FsiDynamicCompiler // Explicitly register the resources with the QuotationPickler module match emEnv with - | SingleRefEmitAssembly (cenv, emEnv) -> + | SingleRefEmitAssembly(cenv, emEnv) -> let assemblyBuilder, _moduleBuilder = builders.Value @@ -2079,7 +2073,7 @@ type internal FsiDynamicCompiler // 'Open' the path for the fragment we just compiled for any future printing. let denv = denv.AddOpenPath(pathOfLid prefixPath) - for CheckedImplFile (contents = mexpr) in declaredImpls do + for CheckedImplFile(contents = mexpr) in declaredImpls do let responseL = NicePrint.layoutImpliedSignatureOfModuleOrNamespace false denv infoReader AccessibleFromSomewhere m mexpr @@ -2150,21 +2144,21 @@ type internal FsiDynamicCompiler /// Check FSI entries for the presence of EntryPointAttribute and issue a warning if it's found let CheckEntryPoint (tcGlobals: TcGlobals) (declaredImpls: CheckedImplFile list) = - let tryGetEntryPoint (TBind (var = value)) = + let tryGetEntryPoint (TBind(var = value)) = TryFindFSharpAttribute tcGlobals tcGlobals.attrib_EntryPointAttribute value.Attribs |> Option.map (fun attrib -> value.DisplayName, attrib) let rec findEntryPointInContents = function - | TMDefLet (binding = binding) -> tryGetEntryPoint binding + | TMDefLet(binding = binding) -> tryGetEntryPoint binding | TMDefs defs -> defs |> List.tryPick findEntryPointInContents - | TMDefRec (bindings = bindings) -> bindings |> List.tryPick findEntryPointInBinding + | TMDefRec(bindings = bindings) -> bindings |> List.tryPick findEntryPointInBinding | _ -> None and findEntryPointInBinding = function | ModuleOrNamespaceBinding.Binding binding -> tryGetEntryPoint binding - | ModuleOrNamespaceBinding.Module (moduleOrNamespaceContents = contents) -> findEntryPointInContents contents + | ModuleOrNamespaceBinding.Module(moduleOrNamespaceContents = contents) -> findEntryPointInContents contents let entryPointBindings = declaredImpls @@ -2247,7 +2241,7 @@ type internal FsiDynamicCompiler let tryGetGeneratedValue istate cenv v = match istate.ilxGenerator.LookupGeneratedValue(valuePrinter.GetEvaluationContext(istate.emEnv), v) with - | Some (res, ty) -> Some(FsiValue(res, ty, FSharpType(cenv, v.Type))) + | Some(res, ty) -> Some(FsiValue(res, ty, FSharpType(cenv, v.Type))) | _ -> None let nextFragmentId () = @@ -2271,13 +2265,13 @@ type internal FsiDynamicCompiler // Skip the "FSI_NNNN" match contentFile.Declarations with - | [ FSharpImplementationFileDeclaration.Entity (_eFakeModule, modDecls) ] -> + | [ FSharpImplementationFileDeclaration.Entity(_eFakeModule, modDecls) ] -> let cenv = SymbolEnv(istate.tcGlobals, istate.tcState.Ccu, Some istate.tcState.CcuSig, istate.tcImports) for decl in modDecls do match decl with - | FSharpImplementationFileDeclaration.MemberOrFunctionOrValue (v, _, _) -> + | FSharpImplementationFileDeclaration.MemberOrFunctionOrValue(v, _, _) -> // Report a top-level function or value definition if v.IsModuleValueOrMember && not v.IsMember then let fsiValueOpt = @@ -2311,7 +2305,7 @@ type internal FsiDynamicCompiler fsi.TriggerEvaluation(fsiValueOpt, symbolUse, decl) - | FSharpImplementationFileDeclaration.Entity (e, _) -> + | FSharpImplementationFileDeclaration.Entity(e, _) -> // Report a top-level module or namespace definition let symbol = FSharpSymbol.Create(cenv, e.Item) @@ -2541,7 +2535,7 @@ type internal FsiDynamicCompiler let fsiValue = match optValue with - | Some (res, ty) -> + | Some(res, ty) -> Some(FsiValue(res, ty, FSharpType(tcGlobals, istate.tcState.Ccu, istate.tcState.CcuSig, istate.tcImports, vref.Type))) | _ -> None @@ -2689,7 +2683,7 @@ type internal FsiDynamicCompiler (istate, tcConfigB.packageManagerLines) ||> Seq.fold (fun istate kv -> - let (KeyValue (packageManagerKey, packageManagerLines)) = kv + let (KeyValue(packageManagerKey, packageManagerLines)) = kv match packageManagerLines with | [] -> istate @@ -3108,11 +3102,7 @@ type internal FsiInterruptControllerKillerThreadRequest = | PrintInterruptRequest type internal FsiInterruptController - ( - fsiOptions: FsiCommandLineOptions, - controlledExecution: ControlledExecution, - fsiConsoleOutput: FsiConsoleOutput - ) = + (fsiOptions: FsiCommandLineOptions, controlledExecution: ControlledExecution, fsiConsoleOutput: FsiConsoleOutput) = let mutable stdinInterruptState = StdinNormal let CTRL_C = 0 @@ -3333,7 +3323,7 @@ type internal MagicAssemblyResolution() = ) match searchResult with - | OkResult (warns, [ r ]) -> OkResult(warns, Choice1Of2 r.resolvedPath) + | OkResult(warns, [ r ]) -> OkResult(warns, Choice1Of2 r.resolvedPath) | _ -> // OK, try to resolve as a .exe @@ -3345,7 +3335,7 @@ type internal MagicAssemblyResolution() = ) match searchResult with - | OkResult (warns, [ r ]) -> OkResult(warns, Choice1Of2 r.resolvedPath) + | OkResult(warns, [ r ]) -> OkResult(warns, Choice1Of2 r.resolvedPath) | _ -> if progress then @@ -3383,7 +3373,7 @@ type internal MagicAssemblyResolution() = None) match searchResult with - | Some (OkResult (warns, [ r ])) -> OkResult(warns, Choice1Of2 r.resolvedPath) + | Some(OkResult(warns, [ r ])) -> OkResult(warns, Choice1Of2 r.resolvedPath) | _ -> #if !NO_TYPEPROVIDERS @@ -3535,7 +3525,7 @@ type FsiStdinLexerProvider fprintfn fsiConsoleOutput.Out "End of file from TextReader.ReadLine" 0 - | Some (input: string) -> + | Some(input: string) -> let input = input + "\n" if input.Length > len then @@ -3734,34 +3724,34 @@ type FsiInteractionProcessor /// Partially process a hash directive, leaving state in packageManagerLines and required assemblies let PartiallyProcessHashDirective (ctok, istate, hash, diagnosticsLogger: DiagnosticsLogger) = match hash with - | ParsedHashDirective ("load", ParsedHashDirectiveArguments sourceFiles, m) -> + | ParsedHashDirective("load", ParsedHashDirectiveArguments sourceFiles, m) -> let istate = fsiDynamicCompiler.EvalSourceFiles(ctok, istate, m, sourceFiles, lexResourceManager, diagnosticsLogger) istate, Completed None - | ParsedHashDirective (("reference" | "r"), ParsedHashDirectiveArguments [ path ], m) -> + | ParsedHashDirective(("reference" | "r"), ParsedHashDirectiveArguments [ path ], m) -> fsiDynamicCompiler.PartiallyProcessReferenceOrPackageIncudePathDirective(ctok, istate, Directive.Resolution, path, true, m) - | ParsedHashDirective ("i", ParsedHashDirectiveArguments [ path ], m) -> + | ParsedHashDirective("i", ParsedHashDirectiveArguments [ path ], m) -> fsiDynamicCompiler.PartiallyProcessReferenceOrPackageIncudePathDirective(ctok, istate, Directive.Include, path, true, m) - | ParsedHashDirective ("I", ParsedHashDirectiveArguments [ path ], m) -> + | ParsedHashDirective("I", ParsedHashDirectiveArguments [ path ], m) -> tcConfigB.AddIncludePath(m, path, tcConfigB.implicitIncludeDir) let tcConfig = TcConfig.Create(tcConfigB, validate = false) fsiConsoleOutput.uprintnfnn "%s" (FSIstrings.SR.fsiDidAHashI (tcConfig.MakePathAbsolute path)) istate, Completed None - | ParsedHashDirective ("cd", ParsedHashDirectiveArguments [ path ], m) -> + | ParsedHashDirective("cd", ParsedHashDirectiveArguments [ path ], m) -> ChangeDirectory path m istate, Completed None - | ParsedHashDirective ("silentCd", ParsedHashDirectiveArguments [ path ], m) -> + | ParsedHashDirective("silentCd", ParsedHashDirectiveArguments [ path ], m) -> ChangeDirectory path m fsiConsolePrompt.SkipNext() (* "silent" directive *) istate, Completed None - | ParsedHashDirective ("interactiveprompt", ParsedHashDirectiveArguments [ "show" | "hide" | "skip" as showPrompt ], m) -> + | ParsedHashDirective("interactiveprompt", ParsedHashDirectiveArguments [ "show" | "hide" | "skip" as showPrompt ], m) -> match showPrompt with | "show" -> fsiConsolePrompt.ShowPrompt <- true | "hide" -> fsiConsolePrompt.ShowPrompt <- false @@ -3770,11 +3760,11 @@ type FsiInteractionProcessor istate, Completed None - | ParsedHashDirective ("dbgbreak", [], _) -> + | ParsedHashDirective("dbgbreak", [], _) -> let istate = { istate with debugBreak = true } istate, Completed None - | ParsedHashDirective ("time", [], _) -> + | ParsedHashDirective("time", [], _) -> if istate.timing then fsiConsoleOutput.uprintnfnn "%s" (FSIstrings.SR.fsiTurnedTimingOff ()) else @@ -3787,7 +3777,7 @@ type FsiInteractionProcessor istate, Completed None - | ParsedHashDirective ("time", ParsedHashDirectiveArguments [ "on" | "off" as v ], _) -> + | ParsedHashDirective("time", ParsedHashDirectiveArguments [ "on" | "off" as v ], _) -> if v <> "on" then fsiConsoleOutput.uprintnfnn "%s" (FSIstrings.SR.fsiTurnedTimingOff ()) else @@ -3796,38 +3786,38 @@ type FsiInteractionProcessor let istate = { istate with timing = (v = "on") } istate, Completed None - | ParsedHashDirective ("nowarn", ParsedHashDirectiveArguments numbers, m) -> + | ParsedHashDirective("nowarn", ParsedHashDirectiveArguments numbers, m) -> List.iter (fun (d: string) -> tcConfigB.TurnWarningOff(m, d)) numbers istate, Completed None - | ParsedHashDirective ("terms", [], _) -> + | ParsedHashDirective("terms", [], _) -> tcConfigB.showTerms <- not tcConfigB.showTerms istate, Completed None - | ParsedHashDirective ("types", [], _) -> + | ParsedHashDirective("types", [], _) -> fsiOptions.ShowTypes <- not fsiOptions.ShowTypes istate, Completed None #if DEBUG - | ParsedHashDirective ("ilcode", [], _m) -> + | ParsedHashDirective("ilcode", [], _m) -> fsiOptions.ShowILCode <- not fsiOptions.ShowILCode istate, Completed None - | ParsedHashDirective ("info", [], _m) -> + | ParsedHashDirective("info", [], _m) -> PrintOptionInfo tcConfigB istate, Completed None #endif - | ParsedHashDirective (("clear"), [], _) -> + | ParsedHashDirective(("clear"), [], _) -> fsiOptions.ClearScreen() istate, Completed None - | ParsedHashDirective (("q" | "quit"), [], _) -> fsiInterruptController.Exit() + | ParsedHashDirective(("q" | "quit"), [], _) -> fsiInterruptController.Exit() - | ParsedHashDirective ("help", [], m) -> + | ParsedHashDirective("help", [], m) -> fsiOptions.ShowHelp(m) istate, Completed None - | ParsedHashDirective (c, ParsedHashDirectiveArguments arg, m) -> + | ParsedHashDirective(c, ParsedHashDirectiveArguments arg, m) -> warning (Error((FSComp.SR.fsiInvalidDirective (c, String.concat " " arg)), m)) istate, Completed None @@ -3858,7 +3848,7 @@ type FsiInteractionProcessor match action with | InteractionGroup.Definitions _ | InteractionGroup.HashDirectives [] - | InteractionGroup.HashDirectives (ParsedHashDirective ("load", _, _) :: _) -> + | InteractionGroup.HashDirectives(ParsedHashDirective("load", _, _) :: _) -> if fsiDynamicCompiler.HasDelayedDependencyManagerText then let istate = fsiDynamicCompiler.ProcessDelayedDependencyManagerText(ctok, istate, lexResourceManager, diagnosticsLogger) @@ -3869,21 +3859,21 @@ type FsiInteractionProcessor loop istate action else match action with - | InteractionGroup.Definitions ([], _) + | InteractionGroup.Definitions([], _) | InteractionGroup.HashDirectives [] -> istate, Completed None - | InteractionGroup.Definitions ([ SynModuleDecl.Expr (expr, _) ], _) -> + | InteractionGroup.Definitions([ SynModuleDecl.Expr(expr, _) ], _) -> fsiDynamicCompiler.EvalParsedExpression(ctok, diagnosticsLogger, istate, expr) - | InteractionGroup.Definitions (defs, _) -> + | InteractionGroup.Definitions(defs, _) -> fsiDynamicCompiler.EvalParsedDefinitions(ctok, diagnosticsLogger, istate, true, false, defs) - | InteractionGroup.HashDirectives (hash :: rest) -> + | InteractionGroup.HashDirectives(hash :: rest) -> let status = PartiallyProcessHashDirective(ctok, istate, hash, diagnosticsLogger) ProcessStepStatus status None (fun _ istate -> loop istate (InteractionGroup.HashDirectives rest)) // Other hash directives do not terminate a dependency manager and/or references group - | InteractionGroup.HashDirectives (hash :: rest) -> + | InteractionGroup.HashDirectives(hash :: rest) -> let status = PartiallyProcessHashDirective(ctok, istate, hash, diagnosticsLogger) ProcessStepStatus status None (fun _ istate -> loop istate (InteractionGroup.HashDirectives rest)) @@ -3920,7 +3910,7 @@ type FsiInteractionProcessor match synInteraction with | None -> None, None, istate - | Some (ParsedScriptInteraction.Definitions (defs, m)) -> + | Some(ParsedScriptInteraction.Definitions(defs, m)) -> match defs with | [] -> None, None, istate @@ -3928,7 +3918,7 @@ type FsiInteractionProcessor let hashes = List.takeWhile isDefHash defs |> List.choose (function - | (SynModuleDecl.HashDirective (hash, _)) -> Some(hash) + | (SynModuleDecl.HashDirective(hash, _)) -> Some(hash) | _ -> None) let defsB = List.skipWhile isDefHash defs @@ -3969,7 +3959,7 @@ type FsiInteractionProcessor | [ _ ] -> defsA | _ -> match List.rev defsA with - | SynModuleDecl.Expr (expr, _) :: rest -> (rest |> List.rev) @ (fsiDynamicCompiler.BuildItBinding expr) + | SynModuleDecl.Expr(expr, _) :: rest -> (rest |> List.rev) @ (fsiDynamicCompiler.BuildItBinding expr) | _ -> defsA let group = InteractionGroup.Definitions(defsA, m) @@ -4076,7 +4066,7 @@ type FsiInteractionProcessor | FsiInteractionStepStatus.Completed res -> setCurrState istate Choice1Of2 res - | FsiInteractionStepStatus.CompletedWithReportedError (StopProcessingExn userExnOpt) -> Choice2Of2 userExnOpt + | FsiInteractionStepStatus.CompletedWithReportedError(StopProcessingExn userExnOpt) -> Choice2Of2 userExnOpt | FsiInteractionStepStatus.CompletedWithReportedError _ | FsiInteractionStepStatus.CompletedWithAlreadyReportedError -> Choice2Of2 None @@ -4099,6 +4089,7 @@ type FsiInteractionProcessor ?cancellationToken: CancellationToken ) = let cancellationToken = defaultArg cancellationToken CancellationToken.None + use _ = Cancellable.UsingToken(cancellationToken) if tokenizer.LexBuffer.IsPastEndOfStream then let stepStatus = @@ -4227,6 +4218,7 @@ type FsiInteractionProcessor member _.EvalInteraction(ctok, sourceText, scriptFileName, diagnosticsLogger, ?cancellationToken) = let cancellationToken = defaultArg cancellationToken CancellationToken.None + use _ = Cancellable.UsingToken(cancellationToken) use _ = UseBuildPhase BuildPhase.Interactive use _ = UseDiagnosticsLogger diagnosticsLogger use _scope = SetCurrentUICultureForThread fsiOptions.FsiLCID @@ -4697,7 +4689,7 @@ type FsiEvaluationSession match res with | Choice1Of2 r -> r | Choice2Of2 None -> raise (FsiCompilationException(FSIstrings.SR.fsiOperationFailed (), None)) - | Choice2Of2 (Some userExn) -> raise (makeNestedException userExn) + | Choice2Of2(Some userExn) -> raise (makeNestedException userExn) let commitResultNonThrowing errorOptions scriptFile (diagnosticsLogger: CompilationDiagnosticLogger) res = let errs = diagnosticsLogger.GetDiagnostics() @@ -4710,7 +4702,7 @@ type FsiEvaluationSession | Choice1Of2 r -> Choice1Of2 r | Choice2Of2 None -> Choice2Of2(FsiCompilationException(FSIstrings.SR.fsiOperationCouldNotBeCompleted (), Some errorInfos) :> exn) - | Choice2Of2 (Some userExn) -> Choice2Of2 userExn + | Choice2Of2(Some userExn) -> Choice2Of2 userExn // 'true' is passed for "suggestNames" because we want the FSI session to suggest names for misspellings and it won't affect IDE perf much userRes, errorInfos @@ -4903,6 +4895,7 @@ type FsiEvaluationSession SpawnInteractiveServer(fsi, fsiOptions, fsiConsoleOutput) use _ = UseBuildPhase BuildPhase.Interactive + use _ = Cancellable.UsingToken(CancellationToken.None) if fsiOptions.Interact then // page in the type check env diff --git a/src/fcs-fable/src/Compiler/Legacy/LegacyHostedCompilerForTesting.fs b/src/fcs-fable/src/Compiler/Legacy/LegacyHostedCompilerForTesting.fs index 3ca231cdbc..eb7928b5fd 100644 --- a/src/fcs-fable/src/Compiler/Legacy/LegacyHostedCompilerForTesting.fs +++ b/src/fcs-fable/src/Compiler/Legacy/LegacyHostedCompilerForTesting.fs @@ -116,7 +116,7 @@ type internal InProcCompiler(legacyReferenceResolver) = with | StopProcessing -> () | ReportedError _ - | WrappedError (ReportedError _, _) -> + | WrappedError(ReportedError _, _) -> exiter.ExitCode <- 1 () @@ -143,7 +143,7 @@ type internal FscCompiler(legacyReferenceResolver) = /// Converts short and long issue types to the same CompilationIssue representation let convert issue = match issue with - | FormattedDiagnostic.Short (severity, text) -> + | FormattedDiagnostic.Short(severity, text) -> { Location = emptyLocation Code = "" @@ -156,7 +156,7 @@ type internal FscCompiler(legacyReferenceResolver) = else CompilationIssueType.Warning } - | FormattedDiagnostic.Long (severity, details) -> + | FormattedDiagnostic.Long(severity, details) -> let loc, file = match details.Location with | Some l when not l.IsEmpty -> diff --git a/src/fcs-fable/src/Compiler/Optimize/InnerLambdasToTopLevelFuncs.fs b/src/fcs-fable/src/Compiler/Optimize/InnerLambdasToTopLevelFuncs.fs index ed2097236f..37b3f26c42 100644 --- a/src/fcs-fable/src/Compiler/Optimize/InnerLambdasToTopLevelFuncs.fs +++ b/src/fcs-fable/src/Compiler/Optimize/InnerLambdasToTopLevelFuncs.fs @@ -81,7 +81,7 @@ let showTyparSet tps = showL (commaListL (List.map typarL (Zset.elements tps))) // should never be needed let isDelayedRepr (f: Val) e = let _tps, vss, _b, _rty = stripTopLambda (e, f.Type) - List.length vss>0 + not(List.isEmpty vss) // REVIEW: these should just be replaced by direct calls to mkLocal, mkCompGenLocal etc. @@ -520,7 +520,7 @@ module Pass2_DetermineReqdItems = // occurrences contribute to env let reqdVals0 = frees.FreeLocals |> Zset.elements // tlrBs are not reqdVals0 for themselves - let reqdVals0 = reqdVals0 |> List.filter (fun gv -> not (fclass.Contains gv)) + let reqdVals0 = reqdVals0 |> List.filter (fclass.Contains >> not) let reqdVals0 = reqdVals0 |> Zset.ofList valOrder // collect into env over bodies let z = PushFrame fclass (reqdTypars0, reqdVals0,m) z @@ -817,7 +817,7 @@ let MakeSimpleArityInfo tps n = ValReprInfo (ValReprInfo.InferTyparInfo tps, Lis let CreateNewValuesForTLR g tlrS arityM fclassM envPackM = let createFHat (f: Val) = - let wf = Zmap.force f arityM ("createFHat - wf", (fun v -> showL (valL v))) + let wf = Zmap.force f arityM ("createFHat - wf", (valL >> showL)) let fc = Zmap.force f fclassM ("createFHat - fc", nameOfVal) let envp = Zmap.force fc envPackM ("CreateNewValuesForTLR - envp", string) let name = f.LogicalName (* + "_TLR_" + string wf *) @@ -1096,7 +1096,7 @@ module Pass4_RewriteAssembly = | Expr.Let _ | Expr.DebugPoint _ | Expr.Sequential _ -> - TransLinearExpr penv z expr (fun res -> res) + TransLinearExpr penv z expr id // app - call sites may require z. // - match the app (collapsing reclinks and type instances). diff --git a/src/fcs-fable/src/Compiler/Optimize/LowerStateMachines.fs b/src/fcs-fable/src/Compiler/Optimize/LowerStateMachines.fs index 5a6fadcfd6..7c4835b346 100644 --- a/src/fcs-fable/src/Compiler/Optimize/LowerStateMachines.fs +++ b/src/fcs-fable/src/Compiler/Optimize/LowerStateMachines.fs @@ -39,7 +39,7 @@ type StateMachineConversionFirstPhaseResult = } #if DEBUG -let sm_verbose = try System.Environment.GetEnvironmentVariable("FSharp_StateMachineVerbose") <> null with _ -> false +let sm_verbose = try not (isNull(System.Environment.GetEnvironmentVariable "FSharp_StateMachineVerbose")) with _ -> false #else let sm_verbose = false #endif diff --git a/src/fcs-fable/src/Compiler/Optimize/Optimizer.fs b/src/fcs-fable/src/Compiler/Optimize/Optimizer.fs index 1286d8ae6d..e164e1dcd9 100644 --- a/src/fcs-fable/src/Compiler/Optimize/Optimizer.fs +++ b/src/fcs-fable/src/Compiler/Optimize/Optimizer.fs @@ -176,7 +176,7 @@ type ModuleInfo = { ValInfos: ValInfos ModuleOrNamespaceInfos: NameMap } -and LazyModuleInfo = Lazy +and LazyModuleInfo = InterruptibleLazy type ImplFileOptimizationInfo = LazyModuleInfo @@ -1402,10 +1402,10 @@ let AbstractLazyModulInfoByHiding isAssemblyBoundary mhi = let AbstractOptimizationInfoToEssentials = let rec abstractModulInfo (ss: ModuleInfo) = - { ModuleOrNamespaceInfos = NameMap.map (Lazy.force >> abstractModulInfo >> notlazy) ss.ModuleOrNamespaceInfos + { ModuleOrNamespaceInfos = NameMap.map (InterruptibleLazy.force >> abstractModulInfo >> notlazy) ss.ModuleOrNamespaceInfos ValInfos = ss.ValInfos.Filter (fun (v, _) -> v.MustInline) } - and abstractLazyModulInfo ss = ss |> Lazy.force |> abstractModulInfo |> notlazy + and abstractLazyModulInfo ss = ss |> InterruptibleLazy.force |> abstractModulInfo |> notlazy abstractLazyModulInfo @@ -1468,7 +1468,7 @@ let AbstractExprInfoByVars (boundVars: Val list, boundTyVars) ivalue = ValMakesNoCriticalTailcalls=v.ValMakesNoCriticalTailcalls } and abstractModulInfo ss = - { ModuleOrNamespaceInfos = ss.ModuleOrNamespaceInfos |> NameMap.map (Lazy.force >> abstractModulInfo >> notlazy) + { ModuleOrNamespaceInfos = ss.ModuleOrNamespaceInfos |> NameMap.map (InterruptibleLazy.force >> abstractModulInfo >> notlazy) ValInfos = ss.ValInfos.Map (fun (vref, e) -> check vref (abstractValInfo e) ) } @@ -1505,7 +1505,7 @@ let RemapOptimizationInfo g tmenv = (vrefR, vinfo)) } and remapLazyModulInfo ss = - ss |> Lazy.force |> remapModulInfo |> notlazy + ss |> InterruptibleLazy.force |> remapModulInfo |> notlazy remapLazyModulInfo @@ -2489,7 +2489,7 @@ and MakeOptimizedSystemStringConcatCall cenv env m args = and optimizeArgs args accArgs = (args, accArgs) - ||> List.foldBack (fun arg accArgs -> optimizeArg arg accArgs) + ||> List.foldBack (optimizeArg) let args = optimizeArgs args [] @@ -3370,10 +3370,10 @@ and TryInlineApplication cenv env finfo (tyargs: TType list, args: Expr list, m) not (Zset.contains lambdaId env.dontInline) && (// Check the number of argument groups is enough to saturate the lambdas of the target. (if tyargs |> List.exists (fun t -> match t with TType_measure _ -> false | _ -> true) then 1 else 0) + args.Length = arities && - (if size > cenv.settings.lambdaInlineThreshold + args.Length then - // Not inlining lambda near, size too big - false - else true))) -> + if size <= cenv.settings.lambdaInlineThreshold + args.Length then true + // Not inlining lambda near, size too big: + else false + )) -> let isBaseCall = not (List.isEmpty args) && match args[0] with @@ -4144,7 +4144,7 @@ and OptimizeBinding cenv isRec env (TBind(vref, expr, spBind)) = let env = BindInternalLocalVal cenv vref (mkValInfo einfo vref) env (TBind(vref, exprOptimized, spBind), einfo), env - with exn -> + with RecoverableException exn -> errorRecovery exn vref.Range raise (ReportedError (Some exn)) @@ -4398,14 +4398,14 @@ let rec u_ExprInfo st = let rec loop st = let tag = u_byte st match tag with - | 0 -> u_tup2 u_const u_ty st |> (fun (c, ty) -> ConstValue(c, ty)) + | 0 -> u_tup2 u_const u_ty st |> ConstValue | 1 -> UnknownValue - | 2 -> u_tup2 u_vref loop st |> (fun (a, b) -> ValValue (a, b)) - | 3 -> u_array loop st |> (fun a -> TupleValue a) - | 4 -> u_tup2 u_ucref (u_array loop) st |> (fun (a, b) -> UnionCaseValue (a, b)) + | 2 -> u_tup2 u_vref loop st |> ValValue + | 3 -> u_array loop st |> TupleValue + | 4 -> u_tup2 u_ucref (u_array loop) st |> UnionCaseValue | 5 -> u_tup4 u_int u_int u_expr u_ty st |> (fun (b, c, d, e) -> CurriedLambdaValue (newUnique(), b, c, d, e)) - | 6 -> u_tup2 u_int u_expr st |> (fun (a, b) -> ConstExprValue (a, b)) - | 7 -> u_tup2 u_tcref (u_array loop) st |> (fun (a, b) -> RecdValue (a, b)) + | 6 -> u_tup2 u_int u_expr st |> ConstExprValue + | 7 -> u_tup2 u_tcref (u_array loop) st |> RecdValue | _ -> failwith "loop" // calc size of unpicked ExprValueInfo MakeSizedValueInfo (loop st) diff --git a/src/fcs-fable/src/Compiler/Optimize/Optimizer.fsi b/src/fcs-fable/src/Compiler/Optimize/Optimizer.fsi index cb4f71247e..aa205b8622 100644 --- a/src/fcs-fable/src/Compiler/Optimize/Optimizer.fsi +++ b/src/fcs-fable/src/Compiler/Optimize/Optimizer.fsi @@ -8,6 +8,7 @@ open FSharp.Compiler.Text open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeOps open FSharp.Compiler.TypedTreePickle +open Internal.Utilities.Library [] type OptimizationProcessingMode = @@ -61,7 +62,7 @@ type OptimizationSettings = /// Optimization information type ModuleInfo -type LazyModuleInfo = Lazy +type LazyModuleInfo = InterruptibleLazy type ImplFileOptimizationInfo = LazyModuleInfo diff --git a/src/fcs-fable/src/Compiler/Service/ExternalSymbol.fs b/src/fcs-fable/src/Compiler/Service/ExternalSymbol.fs index 0111eb5731..0be071f4fe 100644 --- a/src/fcs-fable/src/Compiler/Service/ExternalSymbol.fs +++ b/src/fcs-fable/src/Compiler/Service/ExternalSymbol.fs @@ -33,7 +33,7 @@ type FindDeclExternalType = override this.ToString() = match this with - | Type (name, genericArgs) -> + | Type(name, genericArgs) -> match genericArgs with | [] -> "" | args -> args |> List.map (sprintf "%O") |> String.concat ", " |> sprintf "<%s>" @@ -46,7 +46,7 @@ module FindDeclExternalType = let rec tryOfILType (typeVarNames: string array) (ilType: ILType) = match ilType with - | ILType.Array (_, inner) -> tryOfILType typeVarNames inner |> Option.map FindDeclExternalType.Array + | ILType.Array(_, inner) -> tryOfILType typeVarNames inner |> Option.map FindDeclExternalType.Array | ILType.Boxed tyspec | ILType.Value tyspec -> tyspec.GenericArgs @@ -57,7 +57,7 @@ module FindDeclExternalType = | ILType.TypeVar ordinal -> typeVarNames |> Array.tryItem (int ordinal) - |> Option.map (fun typeVarName -> FindDeclExternalType.TypeVar typeVarName) + |> Option.map FindDeclExternalType.TypeVar | _ -> None [] @@ -111,21 +111,21 @@ type FindDeclExternalSymbol = override this.ToString() = match this with | Type fullName -> fullName - | Constructor (typeName, args) -> + | Constructor(typeName, args) -> args |> List.map (sprintf "%O") |> String.concat ", " |> sprintf "%s..ctor(%s)" typeName - | Method (typeName, name, args, genericArity) -> + | Method(typeName, name, args, genericArity) -> let genericAritySuffix = if genericArity > 0 then sprintf "`%d" genericArity else "" args |> List.map (sprintf "%O") |> String.concat ", " |> sprintf "%s.%s%s(%s)" typeName name genericAritySuffix - | Field (typeName, name) - | Event (typeName, name) - | Property (typeName, name) -> sprintf "%s.%s" typeName name + | Field(typeName, name) + | Event(typeName, name) + | Property(typeName, name) -> sprintf "%s.%s" typeName name member this.ToDebuggerDisplay() = let caseInfo, _ = FSharpValue.GetUnionFields(this, typeof) diff --git a/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fs b/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fs index 70ff652481..ec618440a7 100644 --- a/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fs +++ b/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fs @@ -122,19 +122,20 @@ type FSharpReferencedProject = member this.OutputFile = match this with - | FSharpReference (projectOutputFile = projectOutputFile) - | ILModuleReference (projectOutputFile = projectOutputFile) -> projectOutputFile - | PEReference (delayedReader = reader) -> reader.OutputFile + | FSharpReference(projectOutputFile = projectOutputFile) + | ILModuleReference(projectOutputFile = projectOutputFile) -> projectOutputFile + | PEReference(delayedReader = reader) -> reader.OutputFile override this.Equals(o) = match o with | :? FSharpReferencedProject as o -> match this, o with - | FSharpReference (projectOutputFile1, options1), FSharpReference (projectOutputFile2, options2) -> - projectOutputFile1 = projectOutputFile2 && options1 = options2 - | PEReference (getStamp1, reader1), PEReference (getStamp2, reader2) -> + | FSharpReference(projectOutputFile1, options1), FSharpReference(projectOutputFile2, options2) -> + projectOutputFile1 = projectOutputFile2 + && FSharpProjectOptions.AreSameForChecking(options1, options2) + | PEReference(getStamp1, reader1), PEReference(getStamp2, reader2) -> reader1.OutputFile = reader2.OutputFile && (getStamp1 ()) = (getStamp2 ()) - | ILModuleReference (projectOutputFile1, getStamp1, _), ILModuleReference (projectOutputFile2, getStamp2, _) -> + | ILModuleReference(projectOutputFile1, getStamp1, _), ILModuleReference(projectOutputFile2, getStamp2, _) -> projectOutputFile1 = projectOutputFile2 && (getStamp1 ()) = (getStamp2 ()) | _ -> false | _ -> false @@ -159,7 +160,7 @@ and FSharpProjectOptions = static member UseSameProject(options1, options2) = match options1.ProjectId, options2.ProjectId with - | Some (projectId1), Some (projectId2) when + | Some(projectId1), Some(projectId2) when not (String.IsNullOrWhiteSpace(projectId1)) && not (String.IsNullOrWhiteSpace(projectId2)) -> @@ -178,14 +179,7 @@ and FSharpProjectOptions = && options1.UnresolvedReferences = options2.UnresolvedReferences && options1.OriginalLoadReferences = options2.OriginalLoadReferences && options1.ReferencedProjects.Length = options2.ReferencedProjects.Length - && (options1.ReferencedProjects, options2.ReferencedProjects) - ||> Array.forall2 (fun r1 r2 -> - match r1, r2 with - | FSharpReferencedProject.FSharpReference (n1, a), FSharpReferencedProject.FSharpReference (n2, b) -> - n1 = n2 && FSharpProjectOptions.AreSameForChecking(a, b) - | FSharpReferencedProject.PEReference (getStamp1, reader1), FSharpReferencedProject.PEReference (getStamp2, reader2) -> - reader1.OutputFile = reader2.OutputFile && (getStamp1 ()) = (getStamp2 ()) - | _ -> false) + && options1.ReferencedProjects = options2.ReferencedProjects && options1.LoadTime = options2.LoadTime member po.ProjectDirectory = Path.GetDirectoryName(po.ProjectFileName) @@ -207,9 +201,7 @@ module internal FSharpCheckerResultsSettings = #else let defaultFSharpBinariesDir = FSharpEnvironment - .BinFolderOfDefaultFSharpCompiler( - Some(Path.GetDirectoryName(typeof.Assembly.Location)) - ) + .BinFolderOfDefaultFSharpCompiler(Some(Path.GetDirectoryName(typeof.Assembly.Location))) .Value #endif @@ -386,7 +378,7 @@ type internal TypeCheckInfo |> ResizeArray.iter (fun (mPossible, env, ad) -> if rangeContainsPos mPossible cursorPos then match bestSoFar with - | Some (bestm, _, _) -> + | Some(bestm, _, _) -> if rangeContainsRange bestm mPossible then bestSoFar <- Some(mPossible, env, ad) | None -> bestSoFar <- Some(mPossible, env, ad)) @@ -407,12 +399,12 @@ type internal TypeCheckInfo if rangeBeforePos mPossible cursorPos && not (posEq mPossible.End cursorPos) then let contained = match mostDeeplyNestedEnclosingScope with - | Some (bestm, _, _) -> rangeContainsRange bestm mPossible + | Some(bestm, _, _) -> rangeContainsRange bestm mPossible | None -> true if contained then match bestAlmostIncludedSoFar with - | Some (mRight: range, _, _) -> + | Some(mRight: range, _, _) -> if posGt mPossible.End mRight.End || (posEq mPossible.End mRight.End && posGt mPossible.Start mRight.Start) @@ -422,14 +414,14 @@ type internal TypeCheckInfo let resEnv = match bestAlmostIncludedSoFar, mostDeeplyNestedEnclosingScope with - | Some (_, env, ad), None -> env, ad - | Some (_, almostIncludedEnv, ad), Some (_, mostDeeplyNestedEnv, _) when + | Some(_, env, ad), None -> env, ad + | Some(_, almostIncludedEnv, ad), Some(_, mostDeeplyNestedEnv, _) when almostIncludedEnv.eFieldLabels.Count >= mostDeeplyNestedEnv.eFieldLabels.Count -> almostIncludedEnv, ad | _ -> match mostDeeplyNestedEnclosingScope with - | Some (_, env, ad) -> env, ad + | Some(_, env, ad) -> env, ad | None -> sFallback, AccessibleFromSomeFSharpCode let pm = mkRange mainInputFileName cursorPos cursorPos @@ -499,7 +491,7 @@ type internal TypeCheckInfo // // If we're looking for members using a residue, we'd expect only // a single item (pick the first one) and we need the residue (which may be "") - | CNR (Item.Types (_, ty :: _), _, denv, nenv, ad, m) :: _, Some _ -> + | CNR(Item.Types(_, ty :: _), _, denv, nenv, ad, m) :: _, Some _ -> let targets = ResolveCompletionTargets.All(ConstraintSolver.IsApplicableMethApprox g amap m) @@ -508,7 +500,7 @@ type internal TypeCheckInfo ReturnItemsOfType items g denv m filterCtors // Exact resolution via 'T.$ - | CNR (Item.TypeVar (_, tp), _, denv, nenv, ad, m) :: _, Some _ -> + | CNR(Item.TypeVar(_, tp), _, denv, nenv, ad, m) :: _, Some _ -> let targets = ResolveCompletionTargets.All(ConstraintSolver.IsApplicableMethApprox g amap m) @@ -523,7 +515,7 @@ type internal TypeCheckInfo // let varA = if b then 0 else varA. // then the expression typings get confused (thinking 'varA:int'), so we use name resolution even for usual values. - | CNR (Item.Value (vref), occurence, denv, nenv, ad, m) :: _, Some _ -> + | CNR(Item.Value(vref), occurence, denv, nenv, ad, m) :: _, Some _ -> if occurence = ItemOccurence.Binding || occurence = ItemOccurence.Pattern then // Return empty list to stop further lookup - for value declarations NameResResult.Cancel(denv, m) @@ -534,7 +526,7 @@ type internal TypeCheckInfo // patch accessibility domain to remove protected members if accessing NormalVal let ad = match vref.BaseOrThisInfo, ad with - | ValBaseOrThisInfo.NormalVal, AccessibleFrom (paths, Some tcref) -> + | ValBaseOrThisInfo.NormalVal, AccessibleFrom(paths, Some tcref) -> let thisTy = generalizedTyconRef g tcref // check that type of value is the same or subtype of tcref // yes - allow access to protected members @@ -553,7 +545,7 @@ type internal TypeCheckInfo ReturnItemsOfType items g denv m filterCtors // No residue, so the items are the full resolution of the name - | CNR (_, _, denv, _, _, m) :: _, None -> + | CNR(_, _, denv, _, _, m) :: _, None -> let items = cnrs |> List.map (fun cnr -> cnr.ItemWithInst) @@ -561,7 +553,7 @@ type internal TypeCheckInfo // implementation detail of syntax coloring, but we should not report name resolution results for it, to prevent spurious QuickInfo. |> List.filter (fun item -> match item.Item with - | Item.CustomOperation (CustomOperations.Into, _, _) -> false + | Item.CustomOperation(CustomOperations.Into, _, _) -> false | _ -> true) ReturnItemsOfType items g denv m filterCtors @@ -576,8 +568,8 @@ type internal TypeCheckInfo |> List.rev match items, membersByResidue with - | CNR (Item.Types (_, ty :: _), _, _, _, _, _) :: _, Some _ -> Some ty - | CNR (Item.Value (vref), occurence, _, _, _, _) :: _, Some _ -> + | CNR(Item.Types(_, ty :: _), _, _, _, _, _) :: _, Some _ -> Some ty + | CNR(Item.Value(vref), occurence, _, _, _, _) :: _, Some _ -> if (occurence = ItemOccurence.Binding || occurence = ItemOccurence.Pattern) then None else @@ -590,7 +582,7 @@ type internal TypeCheckInfo match meth.GetParamDatas(amap, m, meth.FormalMethodInst) with | x :: _ -> x - |> List.choose (fun (ParamData (_isParamArray, _isInArg, _isOutArg, _optArgInfo, _callerInfo, name, _, ty), _) -> + |> List.choose (fun (ParamData(_isParamArray, _isInArg, _isOutArg, _optArgInfo, _callerInfo, name, _, ty), _) -> match name with | Some id -> Some(Item.OtherName(Some id, ty, None, Some(ArgumentContainer.Method meth), id.idRange)) | None -> None) @@ -604,7 +596,7 @@ type internal TypeCheckInfo let result = match cnrs with - | CNR (Item.CtorGroup (_, (ctor :: _ as ctors)), _, denv, nenv, ad, m) :: _ -> + | CNR(Item.CtorGroup(_, (ctor :: _ as ctors)), _, denv, nenv, ad, m) :: _ -> let props = ResolveCompletionsInType ncenv @@ -618,7 +610,7 @@ type internal TypeCheckInfo let parameters = CollectParameters ctors amap m let items = props @ parameters Some(denv, m, items) - | CNR (Item.MethodGroup (_, methods, _), _, denv, nenv, ad, m) :: _ -> + | CNR(Item.MethodGroup(_, methods, _), _, denv, nenv, ad, m) :: _ -> let props = methods |> List.collect (fun meth -> @@ -632,7 +624,7 @@ type internal TypeCheckInfo match result with | None -> NameResResult.Empty - | Some (denv, m, items) -> + | Some(denv, m, items) -> let items = List.map ItemWithNoInst items ReturnItemsOfType items g denv m TypeNameResolutionFlag.ResolveTypeNamesToTypeRefs @@ -688,7 +680,7 @@ type internal TypeCheckInfo dive ty denv ad m rest false wasPathEmpty else match tryDestAnonRecdTy denv.g ty with - | ValueSome (anonInfo, tys) -> + | ValueSome(anonInfo, tys) -> match plid with | [] -> let items = @@ -709,7 +701,7 @@ type internal TypeCheckInfo |> snd |> Array.tryFind (fun (_, _, _, rq) -> posEq identRange.Start rq.Start) with - | Some (ty, nenv, ad, m) -> dive ty nenv.DisplayEnv ad m plid false plid.IsEmpty + | Some(ty, nenv, ad, m) -> dive ty nenv.DisplayEnv ad m plid false plid.IsEmpty | _ -> None /// Looks at the exact expression types at the position to the left of the @@ -729,7 +721,7 @@ type internal TypeCheckInfo let input = parseResults.ParseTree match ParsedInput.GetRangeOfExprLeftOfDot(endOfExprPos, input) with // TODO we say "colAtEndOfNames" everywhere, but that's not really a good name ("foo . $" hit Ctrl-Space at $) - | Some (exprRange) -> + | Some(exprRange) -> // We have an up-to-date sync parse, and know the exact range of the prior expression. // The quals all already have the same ending position, so find one with a matching starting position, if it exists. // If not, then the stale typecheck info does not have a capturedExpressionTyping for this exact expression, and the @@ -798,14 +790,14 @@ type internal TypeCheckInfo let IsInheritsCompletionCandidate item = match item with | Item.ModuleOrNamespaces _ -> true - | Item.Types (_, ty :: _) when isClassTy g ty && not (isSealedTy g ty) -> true + | Item.Types(_, ty :: _) when isClassTy g ty && not (isSealedTy g ty) -> true | _ -> false /// Is the item suitable for completion at "interface $" let IsInterfaceCompletionCandidate item = match item with | Item.ModuleOrNamespaces _ -> true - | Item.Types (_, ty :: _) when isInterfaceTy g ty -> true + | Item.Types(_, ty :: _) when isInterfaceTy g ty -> true | _ -> false /// Is the item suitable for completion in a pattern @@ -844,7 +836,7 @@ type internal TypeCheckInfo match item with | Item.Types _ -> nameMatchesResidue n1 - | Item.CtorGroup (_, meths) -> + | Item.CtorGroup(_, meths) -> nameMatchesResidue n1 || meths |> List.exists (fun meth -> @@ -910,7 +902,7 @@ type internal TypeCheckInfo | Item.FakeInterfaceCtor _ | Item.DelegateCtor _ | Item.CtorGroup _ -> CompletionItemKind.Method false - | Item.MethodGroup (_, minfos, _) -> + | Item.MethodGroup(_, minfos, _) -> match minfos with | [] -> CompletionItemKind.Method false | minfo :: _ -> CompletionItemKind.Method minfo.IsExtensionMember @@ -996,7 +988,7 @@ type internal TypeCheckInfo /// Suggest name based on type let SuggestNameBasedOnType (g: TcGlobals) pos ty = match stripTyparEqns ty with - | TType_app (tyconRef = tcref) when tcref.IsTypeAbbrev && (tcref.IsLocalRef || not (ccuEq g.fslibCcu tcref.nlr.Ccu)) -> + | TType_app(tyconRef = tcref) when tcref.IsTypeAbbrev && (tcref.IsLocalRef || not (ccuEq g.fslibCcu tcref.nlr.Ccu)) -> // Respect user-defined aliases CreateCompletionItemForSuggestedPatternName pos tcref.DisplayName | ty -> @@ -1064,7 +1056,7 @@ type internal TypeCheckInfo sResolutions.CapturedNameResolutions |> ResizeArray.tryPick (fun r -> match r.Item with - | Item.Types (_, ty :: _) when equals r.Range typeNameRange && isAppTy g ty -> + | Item.Types(_, ty :: _) when equals r.Range typeNameRange && isAppTy g ty -> let superTy = (tcrefOfAppTy g ty).TypeContents.tcaug_super |> Option.defaultValue g.obj_ty @@ -1096,7 +1088,7 @@ type internal TypeCheckInfo sResolutions.CapturedNameResolutions |> ResizeArray.tryPick (fun r -> match r.Item with - | Item.UnionCase (uci, _) when equals r.Range caseIdRange -> + | Item.UnionCase(uci, _) when equals r.Range caseIdRange -> uci.UnionCase.RecdFields |> List.indexed |> List.choose (fun (index, field) -> @@ -1119,7 +1111,7 @@ type internal TypeCheckInfo // so let's show options for both. let fields indexOrName isTheOnlyField (uci: UnionCaseInfo) = match indexOrName, isTheOnlyField with - | Choice1Of2 (Some 0), true -> + | Choice1Of2(Some 0), true -> uci.UnionCase.RecdFields |> List.mapi (fun index _ -> Item.UnionCaseField(uci, index) |> ItemWithNoInst |> DefaultCompletionItem) | _ -> [] @@ -1127,7 +1119,7 @@ type internal TypeCheckInfo sResolutions.CapturedNameResolutions |> ResizeArray.tryPick (fun r -> match r.Item with - | Item.UnionCase (uci, _) when equals r.Range caseIdRange -> + | Item.UnionCase(uci, _) when equals r.Range caseIdRange -> let list = declaredItems |> Option.map p13 @@ -1171,7 +1163,7 @@ type internal TypeCheckInfo |> List.filter (fun item -> match item.Item with | Item.ModuleOrNamespaces _ -> true - | Item.Types (_, ty :: _) -> isRecdTy g ty + | Item.Types(_, ty :: _) -> isRecdTy g ty | _ -> false) |> List.append fields @@ -1231,8 +1223,8 @@ type internal TypeCheckInfo let plid, exactMatchResidueOpt = match origLongIdentOpt, residueOpt with | None, _ -> [], None - | Some (origLongIdent), Some _ -> origLongIdent, None - | Some (origLongIdent), None -> + | Some(origLongIdent), Some _ -> origLongIdent, None + | Some(origLongIdent), None -> Debug.Assert(not (isNil origLongIdent), "origLongIdent is empty") // note: as above, this happens when we are called for "precise" resolution - (F1 keyword, data tip etc..) let plid, residue = List.frontAndBack origLongIdent @@ -1261,8 +1253,8 @@ type internal TypeCheckInfo | _ -> ValueNone match nameResItems with - | NameResResult.Cancel (denv, m) -> Some([], denv, m) - | NameResResult.Members (FilterRelevantItems getItem exactMatchResidueOpt (items, denv, m)) -> + | NameResResult.Cancel(denv, m) -> Some([], denv, m) + | NameResResult.Members(FilterRelevantItems getItem exactMatchResidueOpt (items, denv, m)) -> // lookup based on name resolution results successful Some(items |> List.map (CompletionItem (getType ()) ValueNone), denv, m) | _ -> @@ -1289,7 +1281,7 @@ type internal TypeCheckInfo ) match leftOfDot with - | Some (pos, _) -> GetPreciseCompletionListFromExprTypings(parseResults, pos, filterCtors), true + | Some(pos, _) -> GetPreciseCompletionListFromExprTypings(parseResults, pos, filterCtors), true | None -> // Can get here in a case like: if "f xxx yyy" is legal, and we do "f xxx y" // We have no interest in expression typings, those are only useful for dot-completion. We want to fallback @@ -1297,7 +1289,7 @@ type internal TypeCheckInfo ExprTypingsResult.None, false match qualItems, thereIsADotInvolved with - | ExprTypingsResult.Some (FilterRelevantItems getItem exactMatchResidueOpt (items, denv, m), ty), _ when + | ExprTypingsResult.Some(FilterRelevantItems getItem exactMatchResidueOpt (items, denv, m), ty), _ when // Initially we only use the expression typings when looking up, e.g. (expr).Nam or (expr).Name1.Nam // These come through as an empty plid and residue "". Otherwise we try an environment lookup // and then return to the qualItems. This is because the expression typings are a little inaccurate, primarily because @@ -1327,7 +1319,7 @@ type internal TypeCheckInfo match nameResItems, (envItems, denv, m), qualItems with // First, use unfiltered name resolution items, if they're not empty - | NameResResult.Members (items, denv, m), _, _ when not (isNil items) -> + | NameResResult.Members(items, denv, m), _, _ when not (isNil items) -> // lookup based on name resolution results successful ValueSome(items |> List.map (CompletionItem (getType ()) ValueNone), denv, m) @@ -1338,7 +1330,7 @@ type internal TypeCheckInfo ValueSome(items |> List.map (CompletionItem (getType ()) ValueNone), denv, m) // Try again with the qualItems - | _, _, ExprTypingsResult.Some (FilterRelevantItems getItem exactMatchResidueOpt (items, denv, m), ty) -> + | _, _, ExprTypingsResult.Some(FilterRelevantItems getItem exactMatchResidueOpt (items, denv, m), ty) -> ValueSome(items |> List.map (CompletionItem (tryTcrefOfAppTy g ty) ValueNone), denv, m) | _ -> ValueNone @@ -1374,7 +1366,7 @@ type internal TypeCheckInfo | _ -> ValueNone // do not return unresolved items after dot match envResult, globalResult with - | ValueSome (items, denv, m), ValueSome (gItems, _, _) -> Some(items @ gItems, denv, m) + | ValueSome(items, denv, m), ValueSome(gItems, _, _) -> Some(items @ gItems, denv, m) | ValueSome x, ValueNone -> Some x | ValueNone, ValueSome y -> Some y | ValueNone, ValueNone -> None @@ -1397,7 +1389,7 @@ type internal TypeCheckInfo (fieldItems, nenv.DisplayEnv, m) |> toCompletionItems match envItems with - | Some (items, denv, m) -> Some(fieldCompletionItems @ items, denv, m) + | Some(items, denv, m) -> Some(fieldCompletionItems @ items, denv, m) | _ -> Some(fieldsResult) /// Get the auto-complete items at a particular location. @@ -1446,7 +1438,7 @@ type internal TypeCheckInfo // If the completion context we have computed higher up the stack is for the same position, // reuse it, otherwise recompute match completionContextAtPos with - | Some (contextForPos, context) when contextForPos = pos -> context + | Some(contextForPos, context) when contextForPos = pos -> context | _ -> parseResultsOpt |> Option.map (fun x -> x.ParseTree) @@ -1458,19 +1450,19 @@ type internal TypeCheckInfo | Some CompletionContext.Invalid -> None // Completion at 'inherit C(...)" - | Some (CompletionContext.Inherit (InheritanceContext.Class, (plid, _))) -> + | Some(CompletionContext.Inherit(InheritanceContext.Class, (plid, _))) -> GetEnvironmentLookupResolutionsAtPosition(mkPos line loc, plid, filterCtors, false) |> FilterRelevantItemsBy getItem None (getItem >> IsInheritsCompletionCandidate) |> Option.map toCompletionItems // Completion at 'interface ..." - | Some (CompletionContext.Inherit (InheritanceContext.Interface, (plid, _))) -> + | Some(CompletionContext.Inherit(InheritanceContext.Interface, (plid, _))) -> GetEnvironmentLookupResolutionsAtPosition(mkPos line loc, plid, filterCtors, false) |> FilterRelevantItemsBy getItem None (getItem >> IsInterfaceCompletionCandidate) |> Option.map toCompletionItems // Completion at 'implement ..." - | Some (CompletionContext.Inherit (InheritanceContext.Unknown, (plid, _))) -> + | Some(CompletionContext.Inherit(InheritanceContext.Unknown, (plid, _))) -> GetEnvironmentLookupResolutionsAtPosition(mkPos line loc, plid, filterCtors, false) |> FilterRelevantItemsBy getItem @@ -1480,7 +1472,7 @@ type internal TypeCheckInfo |> Option.map toCompletionItems // Completion at ' { XXX = ... } " - | Some (CompletionContext.RecordField (RecordContext.New ((plid, _), isFirstField))) -> + | Some(CompletionContext.RecordField(RecordContext.New((plid, _), isFirstField))) -> if isFirstField then let cursorPos = mkPos line loc @@ -1526,7 +1518,7 @@ type internal TypeCheckInfo | result -> Some(result) // Completion at '{ ... }' - | Some (CompletionContext.RecordField RecordContext.Empty) -> + | Some(CompletionContext.RecordField RecordContext.Empty) -> let cursorPos = mkPos line loc let envItems = @@ -1548,30 +1540,30 @@ type internal TypeCheckInfo GetEnvironmentLookupResolutionsIncludingRecordFieldsAtPosition cursorPos [] envItems // Completion at ' { XXX = ... with ... } " - | Some (CompletionContext.RecordField (RecordContext.CopyOnUpdate (identRange, (plid, _)))) -> + | Some(CompletionContext.RecordField(RecordContext.CopyOnUpdate(identRange, (plid, _)))) -> match GetRecdFieldsForCopyAndUpdateExpr(identRange, plid) with | None -> Some(GetClassOrRecordFieldsEnvironmentLookupResolutions(mkPos line loc, plid, false)) |> Option.map toCompletionItems - | Some (items, denv, m) -> Some(List.map ItemWithNoInst items, denv, m) |> Option.map toCompletionItems + | Some(items, denv, m) -> Some(List.map ItemWithNoInst items, denv, m) |> Option.map toCompletionItems // Completion at ' { XXX = ... with ... } " - | Some (CompletionContext.RecordField (RecordContext.Constructor (typeName))) -> + | Some(CompletionContext.RecordField(RecordContext.Constructor(typeName))) -> GetClassOrRecordFieldsEnvironmentLookupResolutions(mkPos line loc, [ typeName ], false) |> toCompletionItems |> Some // No completion at '...: string' - | Some (CompletionContext.RecordField (RecordContext.Declaration true)) -> None + | Some(CompletionContext.RecordField(RecordContext.Declaration true)) -> None // Completion at ' SomeMethod( ... ) ' or ' [] ' with named arguments - | Some (CompletionContext.ParameterList (endPos, fields)) -> + | Some(CompletionContext.ParameterList(endPos, fields)) -> let results = GetNamedParametersAndSettableFields endPos let declaredItems = getDeclaredItemsNotInRangeOpWithAllSymbols () match results with - | NameResResult.Members (items, denv, m) -> + | NameResResult.Members(items, denv, m) -> let filtered = items |> RemoveDuplicateItems g @@ -1589,10 +1581,10 @@ type internal TypeCheckInfo match declaredItems with | None -> Some(toCompletionItems (items, denv, m)) - | Some (declItems, declaredDisplayEnv, declaredRange) -> Some(filtered @ declItems, declaredDisplayEnv, declaredRange) + | Some(declItems, declaredDisplayEnv, declaredRange) -> Some(filtered @ declItems, declaredDisplayEnv, declaredRange) | _ -> declaredItems - | Some (CompletionContext.AttributeApplication) -> + | Some(CompletionContext.AttributeApplication) -> getDeclaredItemsNotInRangeOpWithAllSymbols () |> Option.map (fun (items, denv, m) -> items @@ -1604,7 +1596,7 @@ type internal TypeCheckInfo denv, m) - | Some (CompletionContext.OpenDeclaration isOpenType) -> + | Some(CompletionContext.OpenDeclaration isOpenType) -> getDeclaredItemsNotInRangeOpWithAllSymbols () |> Option.map (fun (items, denv, m) -> items @@ -1623,21 +1615,21 @@ type internal TypeCheckInfo // Completion at 'type Long = int6...' or 'type SomeUnion = Abc...' | Some CompletionContext.TypeAbbreviationOrSingleCaseUnion // Completion at 'Field1: ...' - | Some (CompletionContext.RecordField (RecordContext.Declaration false)) -> + | Some(CompletionContext.RecordField(RecordContext.Declaration false)) -> getDeclaredItemsNotInRangeOpWithAllSymbols () |> Option.bind (FilterRelevantItemsBy getItem2 None IsTypeCandidate) - | Some (CompletionContext.Pattern patternContext) -> + | Some(CompletionContext.Pattern patternContext) -> match patternContext with - | PatternContext.UnionCaseFieldIdentifier (referencedFields, caseIdRange) -> + | PatternContext.UnionCaseFieldIdentifier(referencedFields, caseIdRange) -> GetUnionCaseFields caseIdRange referencedFields |> Option.map (fun completions -> let (nenv, _ad), m = GetBestEnvForPos pos completions, nenv.DisplayEnv, m) - | PatternContext.PositionalUnionCaseField (fieldIndex, isTheOnlyField, caseIdRange) -> + | PatternContext.PositionalUnionCaseField(fieldIndex, isTheOnlyField, caseIdRange) -> getDeclaredItemsNotInRangeOpWithAllSymbols () |> GetCompletionsForUnionCaseField pos (Choice1Of2 fieldIndex) caseIdRange isTheOnlyField - | PatternContext.NamedUnionCaseField (fieldName, caseIdRange) -> + | PatternContext.NamedUnionCaseField(fieldName, caseIdRange) -> getDeclaredItemsNotInRangeOpWithAllSymbols () |> GetCompletionsForUnionCaseField pos (Choice2Of2 fieldName) caseIdRange false | PatternContext.RecordFieldIdentifier referencedFields -> @@ -1647,7 +1639,7 @@ type internal TypeCheckInfo getDeclaredItemsNotInRangeOpWithAllSymbols () |> Option.bind (FilterRelevantItemsBy getItem2 None IsPatternCandidate) - | Some (CompletionContext.MethodOverride enclosingTypeNameRange) -> GetOverridableMethods pos enclosingTypeNameRange + | Some(CompletionContext.MethodOverride enclosingTypeNameRange) -> GetOverridableMethods pos enclosingTypeNameRange // Other completions | cc -> @@ -1738,7 +1730,7 @@ type internal TypeCheckInfo match declItemsOpt with | None -> DeclarationListInfo.Empty - | Some (items, denv, ctx, m) -> + | Some(items, denv, ctx, m) -> let items = if isSigFile then items |> List.filter (fun x -> IsValidSignatureFileItem x.Item) @@ -1798,7 +1790,7 @@ type internal TypeCheckInfo match declItemsOpt with | None -> List.Empty - | Some (items, denv, _, m) -> + | Some(items, denv, _, m) -> let items = if isSigFile then items |> List.filter (fun x -> IsValidSignatureFileItem x.Item) @@ -1816,12 +1808,12 @@ type internal TypeCheckInfo |> List.sortBy (fun d -> let n = match d.Item with - | Item.Types (_, AbbrevOrAppTy tcref :: _) -> 1 + tcref.TyparsNoRange.Length + | Item.Types(_, AbbrevOrAppTy tcref :: _) -> 1 + tcref.TyparsNoRange.Length // Put delegate ctors after types, sorted by #typars. RemoveDuplicateItems will remove FakeInterfaceCtor and DelegateCtor if an earlier type is also reported with this name - | Item.FakeInterfaceCtor (AbbrevOrAppTy tcref) - | Item.DelegateCtor (AbbrevOrAppTy tcref) -> 1000 + tcref.TyparsNoRange.Length + | Item.FakeInterfaceCtor(AbbrevOrAppTy tcref) + | Item.DelegateCtor(AbbrevOrAppTy tcref) -> 1000 + tcref.TyparsNoRange.Length // Put type ctors after types, sorted by #typars. RemoveDuplicateItems will remove DefaultStructCtors if a type is also reported with this name - | Item.CtorGroup (_, cinfo :: _) -> 1000 + 10 * cinfo.DeclaringTyconRef.TyparsNoRange.Length + | Item.CtorGroup(_, cinfo :: _) -> 1000 + 10 * cinfo.DeclaringTyconRef.TyparsNoRange.Length | _ -> 0 (d.Item.DisplayName, n)) @@ -1835,12 +1827,12 @@ type internal TypeCheckInfo items |> List.groupBy (fun d -> match d.Item with - | Item.Types (_, AbbrevOrAppTy tcref :: _) + | Item.Types(_, AbbrevOrAppTy tcref :: _) | Item.ExnCase tcref -> tcref.LogicalName - | Item.UnqualifiedType (tcref :: _) - | Item.FakeInterfaceCtor (AbbrevOrAppTy tcref) - | Item.DelegateCtor (AbbrevOrAppTy tcref) -> tcref.CompiledName - | Item.CtorGroup (_, cinfo :: _) -> cinfo.ApparentEnclosingTyconRef.CompiledName + | Item.UnqualifiedType(tcref :: _) + | Item.FakeInterfaceCtor(AbbrevOrAppTy tcref) + | Item.DelegateCtor(AbbrevOrAppTy tcref) -> tcref.CompiledName + | Item.CtorGroup(_, cinfo :: _) -> cinfo.ApparentEnclosingTyconRef.CompiledName | _ -> d.Item.DisplayName) // Filter out operators (and list) @@ -1849,7 +1841,7 @@ type internal TypeCheckInfo let isOpItem (nm, item: CompletionItem list) = match item |> List.map (fun x -> x.Item) with | [ Item.Value _ ] - | [ Item.MethodGroup (_, [ _ ], _) ] -> IsOperatorDisplayName nm + | [ Item.MethodGroup(_, [ _ ], _) ] -> IsOperatorDisplayName nm | [ Item.UnionCase _ ] -> IsOperatorDisplayName nm | _ -> false @@ -1896,7 +1888,7 @@ type internal TypeCheckInfo let matches = match loadClosure with | None -> [] - | Some (loadClosure) -> + | Some(loadClosure) -> loadClosure.References |> List.collect snd |> List.filter (fun ar -> isPosMatch (pos, ar.originalReference)) @@ -1916,13 +1908,13 @@ type internal TypeCheckInfo let matches = match loadClosure with | None -> None - | Some (loadClosure) -> + | Some(loadClosure) -> loadClosure.PackageReferences |> Array.tryFind (fun (m, _) -> rangeContainsPos m pos) match matches with | None -> emptyToolTip - | Some (_, lines) -> + | Some(_, lines) -> let lines = lines |> List.filter (fun line -> not (line.StartsWith("//")) && not (String.IsNullOrEmpty line)) @@ -1981,13 +1973,32 @@ type internal TypeCheckInfo match declItemsOpt with | None -> emptyToolTip - | Some (items, denv, _, m) -> - ToolTipText( - items - |> List.map (fun x -> - let symbol = Some(FSharpSymbol.Create(cenv, x.Item)) - FormatStructuredDescriptionOfItem false infoReader tcAccessRights m denv x.ItemWithInst symbol width) - )) + | Some(items, denv, _, m) -> + match items with + | [ { Kind = CompletionItemKind.Property } as prop + { Kind = CompletionItemKind.Field } + { Kind = CompletionItemKind.Field } ] -> + let symbol = FSharpSymbol.Create(cenv, prop.Item) + + let tt = + FormatStructuredDescriptionOfItem + false + infoReader + tcAccessRights + m + denv + prop.ItemWithInst + (Some symbol) + width + + ToolTipText([ tt ]) + | _ -> + ToolTipText( + items + |> List.map (fun x -> + let symbol = Some(FSharpSymbol.Create(cenv, x.Item)) + FormatStructuredDescriptionOfItem false infoReader tcAccessRights m denv x.ItemWithInst symbol width) + )) (fun err -> Trace.TraceInformation(sprintf "FCS: recovering from error in GetStructuredToolTipText: '%s'" err) ToolTipText [ ToolTipElement.CompositionError err ]) @@ -2024,7 +2035,7 @@ type internal TypeCheckInfo match declItemsOpt with | None -> None - | Some (items: CompletionItem list, _, _, _) -> + | Some(items: CompletionItem list, _, _, _) -> match items with | [] -> None | [ item ] -> GetF1Keyword g item.Item @@ -2070,7 +2081,7 @@ type internal TypeCheckInfo match declItemsOpt with | None -> MethodGroup("", [||]) - | Some (items, denv, _, m) -> + | Some(items, denv, _, m) -> // GetDeclItemsForNamesAtPosition returns Items.Types and Item.CtorGroup for `new T(|)`, // the Item.Types is not needed here as it duplicates (at best) parameterless ctor. let ctors = @@ -2111,8 +2122,8 @@ type internal TypeCheckInfo match declItemsOpt with | None - | Some ([], _, _, _) -> None - | Some (items, denv, _, m) -> + | Some([], _, _, _) -> None + | Some(items, denv, _, m) -> let allItems = items |> List.collect (fun item -> SelectMethodGroupItems2 g m item.ItemWithInst) @@ -2147,8 +2158,8 @@ type internal TypeCheckInfo match declItemsOpt with | None - | Some ([], _, _, _) -> FindDeclResult.DeclNotFound(FindDeclFailureReason.Unknown "") - | Some (item :: _, _, _, _) -> + | Some([], _, _, _) -> FindDeclResult.DeclNotFound(FindDeclFailureReason.Unknown "") + | Some(item :: _, _, _, _) -> let getTypeVarNames (ilinfo: ILMethInfo) = let classTypeParams = ilinfo.DeclaringTyconRef.ILTyconRawMetadata.GenericParams @@ -2161,7 +2172,7 @@ type internal TypeCheckInfo // references from nuget packages are not labelled as external. let result = match item.Item with - | Item.CtorGroup (_, ILMeth (_, ilinfo, _) :: _) -> + | Item.CtorGroup(_, ILMeth(_, ilinfo, _) :: _) -> match ilinfo.MetadataScope with | ILScopeRef.Assembly assemblyRef -> let typeVarNames = getTypeVarNames ilinfo @@ -2174,7 +2185,7 @@ type internal TypeCheckInfo FindDeclResult.ExternalDecl(assemblyRef.Name, externalSym)) | _ -> None - | Item.MethodGroup (name, ILMeth (_, ilinfo, _) :: _, _) -> + | Item.MethodGroup(name, ILMeth(_, ilinfo, _) :: _, _) -> match ilinfo.MetadataScope with | ILScopeRef.Assembly assemblyRef -> let typeVarNames = getTypeVarNames ilinfo @@ -2192,7 +2203,7 @@ type internal TypeCheckInfo FindDeclResult.ExternalDecl(assemblyRef.Name, externalSym)) | _ -> None - | Item.Property (name, ILProp propInfo :: _, _) -> + | Item.Property(name, ILProp propInfo :: _, _) -> let methInfo = if propInfo.HasGetter then Some propInfo.GetterMethod elif propInfo.HasSetter then Some propInfo.SetterMethod @@ -2209,7 +2220,7 @@ type internal TypeCheckInfo | _ -> None | None -> None - | Item.ILField (ILFieldInfo (typeInfo, fieldDef)) when not typeInfo.TyconRefOfRawMetadata.IsLocalRef -> + | Item.ILField(ILFieldInfo(typeInfo, fieldDef)) when not typeInfo.TyconRefOfRawMetadata.IsLocalRef -> match typeInfo.ILScopeRef with | ILScopeRef.Assembly assemblyRef -> let externalSym = @@ -2218,7 +2229,7 @@ type internal TypeCheckInfo Some(FindDeclResult.ExternalDecl(assemblyRef.Name, externalSym)) | _ -> None - | Item.Event (ILEvent (ILEventInfo (typeInfo, eventDef))) when not typeInfo.TyconRefOfRawMetadata.IsLocalRef -> + | Item.Event(ILEvent(ILEventInfo(typeInfo, eventDef))) when not typeInfo.TyconRefOfRawMetadata.IsLocalRef -> match typeInfo.ILScopeRef with | ILScopeRef.Assembly assemblyRef -> let externalSym = @@ -2227,14 +2238,14 @@ type internal TypeCheckInfo Some(FindDeclResult.ExternalDecl(assemblyRef.Name, externalSym)) | _ -> None - | Item.Types (_, ty :: _) -> + | Item.Types(_, ty :: _) -> match stripTyparEqns ty with - | TType_app (tr, _, _) -> + | TType_app(tr, _, _) -> if tr.IsLocalRef then None else match tr.TypeReprInfo, tr.PublicPath with - | TILObjectRepr (TILObjectReprData (ILScopeRef.Assembly assemblyRef, _, _)), Some (PubPath parts) -> + | TILObjectRepr(TILObjectReprData(ILScopeRef.Assembly assemblyRef, _, _)), Some(PubPath parts) -> let fullName = parts |> String.concat "." Some(FindDeclResult.ExternalDecl(assemblyRef.Name, FindDeclExternalSymbol.Type fullName)) | _ -> None @@ -2261,11 +2272,11 @@ type internal TypeCheckInfo match item.Item with #if !NO_TYPEPROVIDERS // provided items may have TypeProviderDefinitionLocationAttribute that binds them to some location - | Item.CtorGroup (name, ProvidedMeth _ :: _) - | Item.MethodGroup (name, ProvidedMeth _ :: _, _) - | Item.Property (name, ProvidedProp _ :: _, _) -> FindDeclFailureReason.ProvidedMember name - | Item.Event (ProvidedEvent _ as e) -> FindDeclFailureReason.ProvidedMember e.EventName - | Item.ILField (ProvidedField _ as f) -> FindDeclFailureReason.ProvidedMember f.FieldName + | Item.CtorGroup(name, ProvidedMeth _ :: _) + | Item.MethodGroup(name, ProvidedMeth _ :: _, _) + | Item.Property(name, ProvidedProp _ :: _, _) -> FindDeclFailureReason.ProvidedMember name + | Item.Event(ProvidedEvent _ as e) -> FindDeclFailureReason.ProvidedMember e.EventName + | Item.ILField(ProvidedField _ as f) -> FindDeclFailureReason.ProvidedMember f.FieldName | ItemIsProvidedType g tcref -> FindDeclFailureReason.ProvidedType tcref.DisplayName #endif | _ -> FindDeclFailureReason.Unknown "" @@ -2295,8 +2306,8 @@ type internal TypeCheckInfo match declItemsOpt with | None - | Some ([], _, _, _) -> None - | Some (item :: _, denv, _, m) -> + | Some([], _, _, _) -> None + | Some(item :: _, denv, _, m) -> let symbol = FSharpSymbol.Create(cenv, item.Item) Some(symbol, item.ItemWithInst, denv, m)) (fun msg -> @@ -2324,7 +2335,7 @@ type internal TypeCheckInfo match declItemsOpt with | None -> List.empty - | Some (items, denv, _, m) -> + | Some(items, denv, _, m) -> items |> List.map (fun item -> let symbol = FSharpSymbol.Create(cenv, item.Item) @@ -2464,7 +2475,7 @@ module internal ParseAndCheckFile = // // So we'll create a diagnostic later, but cache the FormatCore message now #if !FABLE_COMPILER - diagnostic.Exception.Data[ "CachedFormatCore" ] <- diagnostic.FormatCore(flatErrors, suggestNamesForErrors) + diagnostic.Exception.Data["CachedFormatCore"] <- diagnostic.FormatCore(flatErrors, suggestNamesForErrors) #endif diagnosticsCollector.Add(struct (diagnostic, severity)) @@ -2675,7 +2686,7 @@ module internal ParseAndCheckFile = | INTERP_STRING_BEGIN_PART _ | INTERP_STRING_PART _ as tok, _ -> let braceOffset = match tok with - | INTERP_STRING_BEGIN_PART (_, SynStringKind.TripleQuote, (LexerContinuation.Token (_, (_, _, dl, _) :: _))) -> + | INTERP_STRING_BEGIN_PART(_, SynStringKind.TripleQuote, (LexerContinuation.Token(_, (_, _, dl, _) :: _))) -> dl - 1 | _ -> 0 @@ -3021,7 +3032,7 @@ type FSharpCheckFileResults member _.TryGetCurrentTcImports() = match details with | None -> None - | Some (scope, _builderOpt) -> Some scope.TcImports + | Some(scope, _builderOpt) -> Some scope.TcImports /// Intellisense autocompletions member _.GetDeclarationListInfo(parsedFileResults, line, lineText, partialName, ?getAllEntities, ?completionContextAtPos) = @@ -3029,7 +3040,7 @@ type FSharpCheckFileResults match details with | None -> DeclarationListInfo.Empty - | Some (scope, _builderOpt) -> + | Some(scope, _builderOpt) -> scope.GetDeclarations(parsedFileResults, line, lineText, partialName, completionContextAtPos, getAllEntities) member _.GetDeclarationListSymbols(parsedFileResults, line, lineText, partialName, ?getAllEntities) = @@ -3037,7 +3048,7 @@ type FSharpCheckFileResults match details with | None -> [] - | Some (scope, _builderOpt) -> scope.GetDeclarationListSymbols(parsedFileResults, line, lineText, partialName, getAllEntities) + | Some(scope, _builderOpt) -> scope.GetDeclarationListSymbols(parsedFileResults, line, lineText, partialName, getAllEntities) member _.GetKeywordTooltip(names: string list) = ToolTipText.ToolTipText @@ -3056,34 +3067,34 @@ type FSharpCheckFileResults | TOKEN_IDENT -> match details with | None -> emptyToolTip - | Some (scope, _builderOpt) -> scope.GetStructuredToolTipText(line, lineText, colAtEndOfNames, names, width) + | Some(scope, _builderOpt) -> scope.GetStructuredToolTipText(line, lineText, colAtEndOfNames, names, width) | TOKEN_STRING | TOKEN_STRING_TEXT -> match details with | None -> emptyToolTip - | Some (scope, _builderOpt) -> scope.GetReferenceResolutionStructuredToolTipText(line, colAtEndOfNames, width) + | Some(scope, _builderOpt) -> scope.GetReferenceResolutionStructuredToolTipText(line, colAtEndOfNames, width) | _ -> emptyToolTip member _.GetDescription(symbol: FSharpSymbol, inst: (FSharpGenericParameter * FSharpType) list, displayFullName, range: range) = match details with | None -> emptyToolTip - | Some (scope, _builderOpt) -> scope.GetDescription(symbol, inst, displayFullName, range) + | Some(scope, _builderOpt) -> scope.GetDescription(symbol, inst, displayFullName, range) member _.GetF1Keyword(line, colAtEndOfNames, lineText, names) = match details with | None -> None - | Some (scope, _builderOpt) -> scope.GetF1Keyword(line, lineText, colAtEndOfNames, names) + | Some(scope, _builderOpt) -> scope.GetF1Keyword(line, lineText, colAtEndOfNames, names) // Resolve the names at the given location to a set of methods member _.GetMethods(line, colAtEndOfNames, lineText, names) = match details with | None -> MethodGroup.Empty - | Some (scope, _builderOpt) -> scope.GetMethods(line, lineText, colAtEndOfNames, names) + | Some(scope, _builderOpt) -> scope.GetMethods(line, lineText, colAtEndOfNames, names) member _.GetDeclarationLocation(line, colAtEndOfNames, lineText, names, ?preferFlag) = match details with | None -> emptyFindDeclResult - | Some (scope, _builderOpt) -> scope.GetDeclarationLocation(line, lineText, colAtEndOfNames, names, preferFlag) + | Some(scope, _builderOpt) -> scope.GetDeclarationLocation(line, lineText, colAtEndOfNames, names, preferFlag) member this.GetSymbolUseAtLocation(line, colAtEndOfNames, lineText, names) = this.GetSymbolUsesAtLocation(line, colAtEndOfNames, lineText, names) @@ -3092,7 +3103,7 @@ type FSharpCheckFileResults member _.GetSymbolUsesAtLocation(line, colAtEndOfNames, lineText, names) = match details with | None -> List.empty - | Some (scope, _builderOpt) -> + | Some(scope, _builderOpt) -> scope.GetSymbolUsesAtLocation(line, lineText, colAtEndOfNames, names) |> List.map (fun (sym, itemWithInst, denv, m) -> FSharpSymbolUse(denv, sym, itemWithInst.TyparInstantiation, ItemOccurence.Use, m)) @@ -3100,7 +3111,7 @@ type FSharpCheckFileResults member _.GetMethodsAsSymbols(line, colAtEndOfNames, lineText, names) = match details with | None -> None - | Some (scope, _builderOpt) -> + | Some(scope, _builderOpt) -> scope.GetMethodsAsSymbols(line, lineText, colAtEndOfNames, names) |> Option.map (fun (symbols, denv, m) -> symbols @@ -3109,7 +3120,7 @@ type FSharpCheckFileResults member _.GetSymbolAtLocation(line, colAtEndOfNames, lineStr, names) = match details with | None -> None - | Some (scope, _builderOpt) -> + | Some(scope, _builderOpt) -> scope.GetSymbolUseAtLocation(line, lineStr, colAtEndOfNames, names) |> Option.map (fun (sym, _, _, _) -> sym) @@ -3119,22 +3130,22 @@ type FSharpCheckFileResults member _.GetFormatSpecifierLocationsAndArity() = match details with | None -> [||] - | Some (scope, _builderOpt) -> scope.GetFormatSpecifierLocationsAndArity() + | Some(scope, _builderOpt) -> scope.GetFormatSpecifierLocationsAndArity() member _.GetSemanticClassification(range: range option) = match details with | None -> [||] - | Some (scope, _builderOpt) -> scope.GetSemanticClassification(range) + | Some(scope, _builderOpt) -> scope.GetSemanticClassification(range) member _.PartialAssemblySignature = match details with | None -> failwith "not available" - | Some (scope, _builderOpt) -> scope.PartialAssemblySignatureForFile + | Some(scope, _builderOpt) -> scope.PartialAssemblySignatureForFile member _.ProjectContext = match details with | None -> failwith "not available" - | Some (scope, _builderOpt) -> + | Some(scope, _builderOpt) -> FSharpProjectContext(scope.ThisCcu, scope.GetReferencedAssemblies(), scope.AccessRights, scope.ProjectOptions) member _.DependencyFiles = dependencyFiles @@ -3142,7 +3153,7 @@ type FSharpCheckFileResults member _.GetAllUsesOfAllSymbolsInFile(?cancellationToken: CancellationToken) = match details with | None -> Seq.empty - | Some (scope, _builderOpt) -> + | Some(scope, _builderOpt) -> let cenv = scope.SymbolEnv seq { @@ -3159,7 +3170,7 @@ type FSharpCheckFileResults member _.GetUsesOfSymbolInFile(symbol: FSharpSymbol, ?cancellationToken: CancellationToken) = match details with | None -> [||] - | Some (scope, _builderOpt) -> + | Some(scope, _builderOpt) -> [| for symbolUse in scope.ScopeSymbolUses.GetUsesOfSymbol(symbol.Item) @@ -3174,34 +3185,34 @@ type FSharpCheckFileResults member _.GetVisibleNamespacesAndModulesAtPoint(pos: pos) = match details with | None -> [||] - | Some (scope, _builderOpt) -> scope.GetVisibleNamespacesAndModulesAtPosition(pos) |> List.toArray + | Some(scope, _builderOpt) -> scope.GetVisibleNamespacesAndModulesAtPosition(pos) |> List.toArray member _.IsRelativeNameResolvable(cursorPos: pos, plid: string list, item: Item) = match details with | None -> true - | Some (scope, _builderOpt) -> scope.IsRelativeNameResolvable(cursorPos, plid, item) + | Some(scope, _builderOpt) -> scope.IsRelativeNameResolvable(cursorPos, plid, item) member _.IsRelativeNameResolvableFromSymbol(cursorPos: pos, plid: string list, symbol: FSharpSymbol) = match details with | None -> true - | Some (scope, _builderOpt) -> scope.IsRelativeNameResolvableFromSymbol(cursorPos, plid, symbol) + | Some(scope, _builderOpt) -> scope.IsRelativeNameResolvableFromSymbol(cursorPos, plid, symbol) member _.GetDisplayContextForPos(cursorPos: pos) = match details with | None -> None - | Some (scope, _builderOpt) -> + | Some(scope, _builderOpt) -> let (nenv, _), _ = scope.GetBestDisplayEnvForPos cursorPos Some(FSharpDisplayContext(fun _ -> nenv.DisplayEnv)) member _.GenerateSignature(?pageWidth: int) = match details with | None -> None - | Some (scope, _builderOpt) -> + | Some(scope, _builderOpt) -> scope.ImplementationFile |> Option.map (fun implFile -> let denv = DisplayEnv.InitialForSigFileGeneration scope.TcGlobals let infoReader = InfoReader(scope.TcGlobals, scope.TcImports.GetImportMap()) - let (CheckedImplFile (contents = mexpr)) = implFile + let (CheckedImplFile(contents = mexpr)) = implFile let ad = match scopeOptX with @@ -3226,7 +3237,7 @@ type FSharpCheckFileResults match details with | None -> failwith "Typechecked details not available for CalculateSignatureHash() operation." - | Some (scope, _builderOpt) -> + | Some(scope, _builderOpt) -> scope.ImplementationFile |> Option.map (fun implFile -> Fsharp.Compiler.SignatureHash.calculateSignatureHashOfFiles [ implFile ] scope.TcGlobals visibility) @@ -3390,7 +3401,19 @@ type FSharpCheckProjectResults tcConfigOption: TcConfig option, keepAssemblyContents: bool, diagnostics: FSharpDiagnostic[], - details: (TcGlobals * TcImports * CcuThunk * ModuleOrNamespaceType * Choice * TopAttribs option * (unit -> IRawFSharpAssemblyData option) * ILAssemblyRef * AccessorDomain * CheckedImplFile list option * string[] * FSharpProjectOptions) option + details: + (TcGlobals * + TcImports * + CcuThunk * + ModuleOrNamespaceType * + Choice * + TopAttribs option * + (unit -> IRawFSharpAssemblyData option) * + ILAssemblyRef * + AccessorDomain * + CheckedImplFile list option * + string[] * + FSharpProjectOptions) option ) = let getDetails () = @@ -3497,7 +3520,7 @@ type FSharpCheckProjectResults match builder.GetCheckResultsForFileInProjectEvenIfStale x with | Some partialCheckResults -> match partialCheckResults.TryPeekTcInfoWithExtras() with - | Some (_, tcInfoExtras) -> tcInfoExtras.TcSymbolUses.GetUsesOfSymbol symbol.Item + | Some(_, tcInfoExtras) -> tcInfoExtras.TcSymbolUses.GetUsesOfSymbol symbol.Item | _ -> [||] | _ -> [||]) #endif //!FABLE_COMPILER @@ -3532,7 +3555,7 @@ type FSharpCheckProjectResults match builder.GetCheckResultsForFileInProjectEvenIfStale x with | Some partialCheckResults -> match partialCheckResults.TryPeekTcInfoWithExtras() with - | Some (_, tcInfoExtras) -> tcInfoExtras.TcSymbolUses + | Some(_, tcInfoExtras) -> tcInfoExtras.TcSymbolUses | _ -> TcSymbolUses.Empty | _ -> TcSymbolUses.Empty) #endif //!FABLE_COMPILER @@ -3579,6 +3602,9 @@ type FsiInteractiveChecker(legacyReferenceResolver, tcConfig: TcConfig, tcGlobal member _.ParseAndCheckInteraction(sourceText: ISourceText, ?userOpName: string) = cancellable { + let! ct = Cancellable.token () + use _ = Cancellable.UsingToken(ct) + let userOpName = defaultArg userOpName "Unknown" let fileName = Path.Combine(tcConfig.implicitIncludeDir, "stdin.fsx") let suggestNamesForErrors = true // Will always be true, this is just for readability diff --git a/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fsi b/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fsi index cfbfd66396..7b44066202 100644 --- a/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fsi +++ b/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fsi @@ -578,7 +578,19 @@ type public FSharpCheckProjectResults = tcConfigOption: TcConfig option * keepAssemblyContents: bool * diagnostics: FSharpDiagnostic[] * - details: (TcGlobals * TcImports * CcuThunk * ModuleOrNamespaceType * Choice * TopAttribs option * (unit -> IRawFSharpAssemblyData option) * ILAssemblyRef * AccessorDomain * CheckedImplFile list option * string[] * FSharpProjectOptions) option -> + details: + (TcGlobals * + TcImports * + CcuThunk * + ModuleOrNamespaceType * + Choice * + TopAttribs option * + (unit -> IRawFSharpAssemblyData option) * + ILAssemblyRef * + AccessorDomain * + CheckedImplFile list option * + string[] * + FSharpProjectOptions) option -> FSharpCheckProjectResults module internal ParseAndCheckFile = diff --git a/src/fcs-fable/src/Compiler/Service/FSharpParseFileResults.fs b/src/fcs-fable/src/Compiler/Service/FSharpParseFileResults.fs index 427a01b3c4..46a5753ba3 100644 --- a/src/fcs-fable/src/Compiler/Service/FSharpParseFileResults.fs +++ b/src/fcs-fable/src/Compiler/Service/FSharpParseFileResults.fs @@ -86,24 +86,24 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, member _.TryRangeOfNameOfNearestOuterBindingContainingPos pos = let tryGetIdentRangeFromBinding binding = match binding with - | SynBinding (headPat = headPat) -> + | SynBinding(headPat = headPat) -> match headPat with - | SynPat.LongIdent (longDotId = longIdentWithDots) -> Some longIdentWithDots.Range - | SynPat.As(rhsPat = SynPat.Named (ident = SynIdent (ident, _); isThisVal = false)) - | SynPat.Named (SynIdent (ident, _), false, _, _) -> Some ident.idRange + | SynPat.LongIdent(longDotId = longIdentWithDots) -> Some longIdentWithDots.Range + | SynPat.As(rhsPat = SynPat.Named(ident = SynIdent(ident, _); isThisVal = false)) + | SynPat.Named(SynIdent(ident, _), false, _, _) -> Some ident.idRange | _ -> None let rec walkBinding expr workingRange = match expr with // This lets us dive into subexpressions that may contain the binding we're after - | SynExpr.Sequential (_, _, expr1, expr2, _) -> + | SynExpr.Sequential(_, _, expr1, expr2, _) -> if rangeContainsPos expr1.Range pos then walkBinding expr1 workingRange else walkBinding expr2 workingRange - | SynExpr.LetOrUse (bindings = bindings; body = bodyExpr) -> + | SynExpr.LetOrUse(bindings = bindings; body = bodyExpr) -> let potentialNestedRange = bindings |> List.tryFind (fun binding -> rangeContainsPos binding.RangeOfBindingWithRhs pos) @@ -121,7 +121,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, override _.VisitBinding(_path, defaultTraverse, binding) = match binding with - | SynBinding (valData = SynValData(memberFlags = None); expr = expr) as b when + | SynBinding(valData = SynValData(memberFlags = None); expr = expr) as b when rangeContainsPos b.RangeOfBindingWithRhs pos -> match tryGetIdentRangeFromBinding b with @@ -137,13 +137,11 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, { new SyntaxVisitorBase<_>() with member _.VisitExpr(_, _, defaultTraverse, expr) = match expr with - | SynExpr.App (_, - _, - SynExpr.App (_, true, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ ident ])), _, _), - argExpr, - _) when rangeContainsPos argExpr.Range pos -> + | SynExpr.App(_, _, SynExpr.App(_, true, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ ident ])), _, _), argExpr, _) when + rangeContainsPos argExpr.Range pos + -> match argExpr with - | SynExpr.App (_, _, _, SynExpr.Paren (expr, _, _, _), _) when rangeContainsPos expr.Range pos -> None + | SynExpr.App(_, _, _, SynExpr.Paren(expr, _, _, _), _) when rangeContainsPos expr.Range pos -> None | _ -> if ident.idText = "op_PipeRight" then Some(ident, 1) elif ident.idText = "op_PipeRight2" then Some(ident, 2) @@ -159,10 +157,10 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, { new SyntaxVisitorBase<_>() with member _.VisitExpr(_, traverseSynExpr, defaultTraverse, expr) = match expr with - | SynExpr.TypeApp (_, _, _, _, _, _, range) when rangeContainsPos range pos -> Some range - | SynExpr.App (_, _, _, SynExpr.ComputationExpr (_, expr, _), range) when rangeContainsPos range pos -> + | SynExpr.TypeApp(_, _, _, _, _, _, range) when rangeContainsPos range pos -> Some range + | SynExpr.App(_, _, _, SynExpr.ComputationExpr(_, expr, _), range) when rangeContainsPos range pos -> traverseSynExpr expr - | SynExpr.App (_, _, _, _, range) when rangeContainsPos range pos -> Some range + | SynExpr.App(_, _, _, _, range) when rangeContainsPos range pos -> Some range | _ -> defaultTraverse expr } @@ -174,9 +172,9 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, { new SyntaxVisitorBase<_>() with member _.VisitModuleDecl(_, _, synModuleDecl) = match synModuleDecl with - | SynModuleDecl.Types (typeDefns, _) -> + | SynModuleDecl.Types(typeDefns, _) -> typeDefns - |> Seq.exists (fun (SynTypeDefn (typeInfo, _, _, _, _, _)) -> typeInfo.Range = range) + |> Seq.exists (fun (SynTypeDefn(typeInfo, _, _, _, _, _)) -> typeInfo.Range = range) |> Some | _ -> None } @@ -189,24 +187,23 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, match expr with | SynExpr.Ident ident -> Some ident.idRange - | SynExpr.LongIdent (_, _, _, range) -> Some range + | SynExpr.LongIdent(_, _, _, range) -> Some range - | SynExpr.Paren (expr, _, _, range) when rangeContainsPos range pos -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos + | SynExpr.Paren(expr, _, _, range) when rangeContainsPos range pos -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos - | SynExpr.TypeApp (expr, _, _, _, _, _, _) -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos + | SynExpr.TypeApp(expr, _, _, _, _, _, _) -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos - | SynExpr.App (_, _, funcExpr, argExpr, _) -> + | SynExpr.App(_, _, funcExpr, argExpr, _) -> match argExpr with - | SynExpr.App (_, _, _, _, range) when rangeContainsPos range pos -> + | SynExpr.App(_, _, _, _, range) when rangeContainsPos range pos -> getIdentRangeForFuncExprInApp traverseSynExpr argExpr pos // Special case: `async { ... }` is actually a ComputationExpr inside of the argExpr of a SynExpr.App - | SynExpr.ComputationExpr (_, expr, range) - | SynExpr.Paren (expr, _, _, range) when rangeContainsPos range pos -> - getIdentRangeForFuncExprInApp traverseSynExpr expr pos + | SynExpr.ComputationExpr(_, expr, range) + | SynExpr.Paren(expr, _, _, range) when rangeContainsPos range pos -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos // Yielding values in an array or list that is used as an argument: List.sum [ getVal a b; getVal b c ] - | SynExpr.ArrayOrListComputed (_, expr, range) when rangeContainsPos range pos -> + | SynExpr.ArrayOrListComputed(_, expr, range) when rangeContainsPos range pos -> if rangeContainsPos expr.Range pos then getIdentRangeForFuncExprInApp traverseSynExpr expr pos else @@ -226,7 +223,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, | _ -> match funcExpr with - | SynExpr.App (_, true, _, _, _) when rangeContainsPos argExpr.Range pos -> + | SynExpr.App(_, true, _, _, _) when rangeContainsPos argExpr.Range pos -> // x |> List.map // Don't dive into the funcExpr (the operator expr) // because we dont want to offer sig help for that! @@ -236,21 +233,21 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, // of the identifier of the function we're after getIdentRangeForFuncExprInApp traverseSynExpr funcExpr pos - | SynExpr.Sequential (_, _, expr1, expr2, range) when rangeContainsPos range pos -> + | SynExpr.Sequential(_, _, expr1, expr2, range) when rangeContainsPos range pos -> if rangeContainsPos expr1.Range pos then getIdentRangeForFuncExprInApp traverseSynExpr expr1 pos else getIdentRangeForFuncExprInApp traverseSynExpr expr2 pos - | SynExpr.LetOrUse (bindings = bindings; body = body; range = range) when rangeContainsPos range pos -> + | SynExpr.LetOrUse(bindings = bindings; body = body; range = range) when rangeContainsPos range pos -> let binding = bindings |> List.tryFind (fun x -> rangeContainsPos x.RangeOfBindingWithRhs pos) match binding with - | Some (SynBinding.SynBinding (expr = expr)) -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos + | Some(SynBinding.SynBinding(expr = expr)) -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos | None -> getIdentRangeForFuncExprInApp traverseSynExpr body pos - | SynExpr.IfThenElse (ifExpr = ifExpr; thenExpr = thenExpr; elseExpr = elseExpr; range = range) when rangeContainsPos range pos -> + | SynExpr.IfThenElse(ifExpr = ifExpr; thenExpr = thenExpr; elseExpr = elseExpr; range = range) when rangeContainsPos range pos -> if rangeContainsPos ifExpr.Range pos then getIdentRangeForFuncExprInApp traverseSynExpr ifExpr pos elif rangeContainsPos thenExpr.Range pos then @@ -260,7 +257,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, | None -> None | Some expr -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos - | SynExpr.Match (expr = expr; clauses = clauses; range = range) when rangeContainsPos range pos -> + | SynExpr.Match(expr = expr; clauses = clauses; range = range) when rangeContainsPos range pos -> if rangeContainsPos expr.Range pos then getIdentRangeForFuncExprInApp traverseSynExpr expr pos else @@ -271,7 +268,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, | None -> None | Some clause -> match clause with - | SynMatchClause.SynMatchClause (whenExpr = whenExprOpt; resultExpr = resultExpr) -> + | SynMatchClause.SynMatchClause(whenExpr = whenExprOpt; resultExpr = resultExpr) -> match whenExprOpt with | None -> getIdentRangeForFuncExprInApp traverseSynExpr resultExpr pos | Some whenExpr -> @@ -281,7 +278,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, getIdentRangeForFuncExprInApp traverseSynExpr resultExpr pos // Ex: C.M(x, y, ...) <--- We want to find where in the tupled application the call is being made - | SynExpr.Tuple (_, exprs, _, tupRange) when rangeContainsPos tupRange pos -> + | SynExpr.Tuple(_, exprs, _, tupRange) when rangeContainsPos tupRange pos -> let expr = exprs |> List.tryFind (fun expr -> rangeContainsPos expr.Range pos) match expr with @@ -289,15 +286,15 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, | Some expr -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos // Capture the body of a lambda, often nested in a call to a collection function - | SynExpr.Lambda (body = body) when rangeContainsPos body.Range pos -> getIdentRangeForFuncExprInApp traverseSynExpr body pos + | SynExpr.Lambda(body = body) when rangeContainsPos body.Range pos -> getIdentRangeForFuncExprInApp traverseSynExpr body pos - | SynExpr.DotLambda (expr = body) when rangeContainsPos body.Range pos -> getIdentRangeForFuncExprInApp traverseSynExpr body pos + | SynExpr.DotLambda(expr = body) when rangeContainsPos body.Range pos -> getIdentRangeForFuncExprInApp traverseSynExpr body pos - | SynExpr.Do (expr, range) when rangeContainsPos range pos -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos + | SynExpr.Do(expr, range) when rangeContainsPos range pos -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos - | SynExpr.Assert (expr, range) when rangeContainsPos range pos -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos + | SynExpr.Assert(expr, range) when rangeContainsPos range pos -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos - | SynExpr.ArbitraryAfterError (_debugStr, range) when rangeContainsPos range pos -> Some range + | SynExpr.ArbitraryAfterError(_debugStr, range) when rangeContainsPos range pos -> Some range | expr -> traverseSynExpr expr @@ -305,9 +302,9 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, { new SyntaxVisitorBase<_>() with member _.VisitExpr(_, traverseSynExpr, defaultTraverse, expr) = match expr with - | SynExpr.TypeApp (expr, _, _, _, _, _, range) when rangeContainsPos range pos -> + | SynExpr.TypeApp(expr, _, _, _, _, _, range) when rangeContainsPos range pos -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos - | SynExpr.App (_, _, _funcExpr, _, range) as app when rangeContainsPos range pos -> + | SynExpr.App(_, _, _funcExpr, _, range) as app when rangeContainsPos range pos -> getIdentRangeForFuncExprInApp traverseSynExpr app pos | _ -> defaultTraverse expr } @@ -325,11 +322,11 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, let (|InfixAppOfOpEqualsGreater|_|) = function - | SynExpr.App (ExprAtomicFlag.NonAtomic, - false, - SynExpr.App (ExprAtomicFlag.NonAtomic, true, Ident "op_EqualsGreater", actualParamListExpr, _), - actualLambdaBodyExpr, - _) -> Some(actualParamListExpr, actualLambdaBodyExpr) + | SynExpr.App(ExprAtomicFlag.NonAtomic, + false, + SynExpr.App(ExprAtomicFlag.NonAtomic, true, Ident "op_EqualsGreater", actualParamListExpr, _), + actualLambdaBodyExpr, + _) -> Some(actualParamListExpr, actualLambdaBodyExpr) | _ -> None SyntaxTraversal.Traverse( @@ -338,13 +335,13 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, { new SyntaxVisitorBase<_>() with member _.VisitExpr(_, _, defaultTraverse, expr) = match expr with - | SynExpr.Paren (InfixAppOfOpEqualsGreater (lambdaArgs, lambdaBody) as app, _, _, _) -> + | SynExpr.Paren(InfixAppOfOpEqualsGreater(lambdaArgs, lambdaBody) as app, _, _, _) -> Some(app.Range, lambdaArgs.Range, lambdaBody.Range) | _ -> defaultTraverse expr member _.VisitBinding(_path, defaultTraverse, binding) = match binding with - | SynBinding (kind = SynBindingKind.Normal; expr = InfixAppOfOpEqualsGreater (lambdaArgs, lambdaBody) as app) -> + | SynBinding(kind = SynBindingKind.Normal; expr = InfixAppOfOpEqualsGreater(lambdaArgs, lambdaBody) as app) -> Some(app.Range, lambdaArgs.Range, lambdaBody.Range) | _ -> defaultTraverse binding } @@ -355,7 +352,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, { new SyntaxVisitorBase<_>() with member _.VisitExpr(_, _, defaultTraverse, expr) = match expr with - | SynExpr.InterpolatedString (range = range) when rangeContainsPos range pos -> Some range + | SynExpr.InterpolatedString(range = range) when rangeContainsPos range pos -> Some range | _ -> defaultTraverse expr } @@ -366,8 +363,8 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, { new SyntaxVisitorBase<_>() with member _.VisitExpr(_path, _, defaultTraverse, expr) = match expr with - | SynExpr.YieldOrReturn (_, expr, range) - | SynExpr.YieldOrReturnFrom (_, expr, range) when rangeContainsPos range pos -> Some expr.Range + | SynExpr.YieldOrReturn(_, expr, range) + | SynExpr.YieldOrReturnFrom(_, expr, range) when rangeContainsPos range pos -> Some expr.Range | _ -> defaultTraverse expr } @@ -378,7 +375,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, { new SyntaxVisitorBase<_>() with member _.VisitExpr(_, _, defaultTraverse, expr) = match expr with - | SynExpr.Record (_, _, _, range) when rangeContainsPos range pos -> Some range + | SynExpr.Record(_, _, _, range) when rangeContainsPos range pos -> Some range | _ -> defaultTraverse expr } @@ -389,7 +386,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, { new SyntaxVisitorBase<_>() with member _.VisitExpr(_, _, defaultTraverse, expr) = match expr with - | SynExpr.App (_, false, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ funcIdent ])), expr, _) -> + | SynExpr.App(_, false, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ funcIdent ])), expr, _) -> if funcIdent.idText = "op_Dereference" && rangeContainsPos expr.Range expressionPos then Some funcIdent.idRange else @@ -404,7 +401,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, { new SyntaxVisitorBase<_>() with member _.VisitExpr(_, _, defaultTraverse, expr) = match expr with - | SynExpr.App (_, false, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ funcIdent ])), expr, _) -> + | SynExpr.App(_, false, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ funcIdent ])), expr, _) -> if funcIdent.idText = "op_Dereference" && rangeContainsPos expr.Range expressionPos then Some expr.Range else @@ -429,15 +426,16 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, | SynBinding(expr = SynExpr.DotLambda _) when skipLambdas -> defaultTraverse binding // Skip manually type-annotated bindings - | SynBinding(returnInfo = Some (SynBindingReturnInfo _)) -> defaultTraverse binding + | SynBinding(returnInfo = Some(SynBindingReturnInfo _)) -> defaultTraverse binding // Let binding - | SynBinding (trivia = { EqualsRange = Some equalsRange }; range = range) when range.Start = symbolUseStart -> + | SynBinding(trivia = { EqualsRange = Some equalsRange }; range = range) when range.Start = symbolUseStart -> Some equalsRange.StartRange // Member binding - | SynBinding (headPat = SynPat.LongIdent(longDotId = SynLongIdent(id = _ :: ident :: _)) - trivia = { EqualsRange = Some equalsRange }) when ident.idRange.Start = symbolUseStart -> + | SynBinding( + headPat = SynPat.LongIdent(longDotId = SynLongIdent(id = _ :: ident :: _)) + trivia = { EqualsRange = Some equalsRange }) when ident.idRange.Start = symbolUseStart -> Some equalsRange.StartRange | _ -> defaultTraverse binding @@ -453,7 +451,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, override _.VisitBinding(_path, _, binding) = match binding with - | SynBinding (valData = valData; range = range) when rangeContainsPos range pos -> + | SynBinding(valData = valData; range = range) when rangeContainsPos range pos -> let info = valData.SynValInfo.CurriedArgInfos let mutable found = false @@ -475,7 +473,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, { new SyntaxVisitorBase<_>() with member _.VisitExpr(_path, _traverseSynExpr, defaultTraverse, expr) = match expr with - | SynExpr.Typed (_expr, _typeExpr, range) when Position.posEq range.Start pos -> Some range + | SynExpr.Typed(_expr, _typeExpr, range) when Position.posEq range.Start pos -> Some range | _ -> defaultTraverse expr override _.VisitSimplePats(_path, pats) = @@ -485,7 +483,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, let exprFunc pat = match pat with // (s: string) - | SynSimplePat.Typed (_pat, _targetExpr, range) when Position.posEq range.Start pos -> Some range + | SynSimplePat.Typed(_pat, _targetExpr, range) when Position.posEq range.Start pos -> Some range | _ -> None pats |> List.tryPick exprFunc @@ -493,14 +491,15 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, override _.VisitPat(_path, defaultTraverse, pat) = // (s: string) match pat with - | SynPat.Typed (_pat, _targetType, range) when Position.posEq range.Start pos -> Some range + | SynPat.Typed(_pat, _targetType, range) when Position.posEq range.Start pos -> Some range | _ -> defaultTraverse pat override _.VisitBinding(_path, defaultTraverse, binding) = // let x : int = 12 match binding with - | SynBinding (headPat = SynPat.Named (range = patRange) - returnInfo = Some (SynBindingReturnInfo(typeName = SynType.LongIdent _))) -> Some patRange + | SynBinding( + headPat = SynPat.Named(range = patRange); returnInfo = Some(SynBindingReturnInfo(typeName = SynType.LongIdent _))) -> + Some patRange | _ -> defaultTraverse binding } @@ -514,7 +513,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, let typeDefs = path |> List.filter (function - | SyntaxNode.SynModule (SynModuleDecl.Types _) -> true + | SyntaxNode.SynModule(SynModuleDecl.Types _) -> true | _ -> false) match typeDefs with @@ -532,7 +531,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, override _.VisitBinding(_path, defaultTraverse, binding) = match binding with - | SynBinding.SynBinding (expr = expr; range = range) when Position.posEq range.Start pos -> + | SynBinding.SynBinding(expr = expr; range = range) when Position.posEq range.Start pos -> match expr with | SynExpr.Lambda _ -> Some range | SynExpr.DotLambda _ -> Some range @@ -637,7 +636,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, | _ -> () ] - let rec walkBind (SynBinding (kind = kind; expr = synExpr; debugPoint = spInfo; range = m)) = + let rec walkBind (SynBinding(kind = kind; expr = synExpr; debugPoint = spInfo; range = m)) = [ yield! walkBindSeqPt spInfo let extendDebugPointForDo = @@ -663,7 +662,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, and walkMatchClauses clauses = [ - for SynMatchClause (whenExpr = whenExprOpt; resultExpr = tgtExpr) in clauses do + for SynMatchClause(whenExpr = whenExprOpt; resultExpr = tgtExpr) in clauses do match whenExprOpt with | Some whenExpr -> yield! walkExpr false whenExpr | _ -> () @@ -701,55 +700,55 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, | SynExpr.Const _ | SynExpr.Dynamic _ -> () - | SynExpr.Quote (_, _, e, _, _) - | SynExpr.TypeTest (e, _, _) - | SynExpr.Upcast (e, _, _) - | SynExpr.AddressOf (_, e, _, _) - | SynExpr.ComputationExpr (_, e, _) - | SynExpr.ArrayOrListComputed (_, e, _) - | SynExpr.Typed (e, _, _) - | SynExpr.FromParseError (e, _) - | SynExpr.DiscardAfterMissingQualificationAfterDot (e, _, _) - | SynExpr.Do (e, _) - | SynExpr.Assert (e, _) - | SynExpr.Fixed (e, _) - | SynExpr.DotGet (e, _, _, _) - | SynExpr.LongIdentSet (_, e, _) - | SynExpr.New (_, _, e, _) - | SynExpr.TypeApp (e, _, _, _, _, _, _) - | SynExpr.LibraryOnlyUnionCaseFieldGet (e, _, _, _) - | SynExpr.Downcast (e, _, _) - | SynExpr.InferredUpcast (e, _) - | SynExpr.InferredDowncast (e, _) - | SynExpr.Lazy (e, _) - | SynExpr.TraitCall (_, _, e, _) - | SynExpr.Paren (e, _, _, _) -> yield! walkExpr false e - - | SynExpr.InterpolatedString (parts, _, _) -> + | SynExpr.Quote(_, _, e, _, _) + | SynExpr.TypeTest(e, _, _) + | SynExpr.Upcast(e, _, _) + | SynExpr.AddressOf(_, e, _, _) + | SynExpr.ComputationExpr(_, e, _) + | SynExpr.ArrayOrListComputed(_, e, _) + | SynExpr.Typed(e, _, _) + | SynExpr.FromParseError(e, _) + | SynExpr.DiscardAfterMissingQualificationAfterDot(e, _, _) + | SynExpr.Do(e, _) + | SynExpr.Assert(e, _) + | SynExpr.Fixed(e, _) + | SynExpr.DotGet(e, _, _, _) + | SynExpr.LongIdentSet(_, e, _) + | SynExpr.New(_, _, e, _) + | SynExpr.TypeApp(e, _, _, _, _, _, _) + | SynExpr.LibraryOnlyUnionCaseFieldGet(e, _, _, _) + | SynExpr.Downcast(e, _, _) + | SynExpr.InferredUpcast(e, _) + | SynExpr.InferredDowncast(e, _) + | SynExpr.Lazy(e, _) + | SynExpr.TraitCall(_, _, e, _) + | SynExpr.Paren(e, _, _, _) -> yield! walkExpr false e + + | SynExpr.InterpolatedString(parts, _, _) -> yield! walkExprs [ for part in parts do match part with | SynInterpolatedStringPart.String _ -> () - | SynInterpolatedStringPart.FillExpr (fillExpr, _) -> yield fillExpr + | SynInterpolatedStringPart.FillExpr(fillExpr, _) -> yield fillExpr ] - | SynExpr.DebugPoint (DebugPointAtLeafExpr.Yes m, isControlFlow, innerExpr) -> + | SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes m, isControlFlow, innerExpr) -> yield! checkRange m yield! walkExpr isControlFlow innerExpr - | SynExpr.YieldOrReturn (_, e, m) -> + | SynExpr.YieldOrReturn(_, e, m) -> yield! checkRange m yield! walkExpr false e - | SynExpr.YieldOrReturnFrom (_, e, _) - | SynExpr.DoBang (e, _) -> + | SynExpr.YieldOrReturnFrom(_, e, _) + | SynExpr.DoBang(e, _) -> yield! checkRange e.Range yield! walkExpr false e - | SynOrElse (e1, e2) - | SynAndAlso (e1, e2) -> + | SynOrElse(e1, e2) + | SynAndAlso(e1, e2) -> yield! walkExpr true e1 yield! walkExpr true e2 @@ -758,18 +757,18 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, let rec loop e = seq { match e with - | SynPipeRight (xExpr, fExpr) -> + | SynPipeRight(xExpr, fExpr) -> yield! checkRange fExpr.Range yield! walkExpr false fExpr yield! loop xExpr - | SynPipeRight2 (xExpr1, xExpr2, fExpr) -> + | SynPipeRight2(xExpr1, xExpr2, fExpr) -> yield! checkRange fExpr.Range yield! checkRange xExpr1.Range yield! checkRange xExpr2.Range yield! walkExpr false xExpr1 yield! walkExpr false xExpr2 yield! walkExpr false fExpr - | SynPipeRight3 (xExpr1, xExpr2, xExpr3, fExpr) -> + | SynPipeRight3(xExpr1, xExpr2, xExpr3, fExpr) -> yield! checkRange fExpr.Range yield! checkRange xExpr1.Range yield! checkRange xExpr2.Range @@ -784,103 +783,103 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, } yield! loop expr - | SynExpr.NamedIndexedPropertySet (_, e1, e2, _) - | SynExpr.DotSet (e1, _, e2, _) - | SynExpr.Set (e1, e2, _) - | SynExpr.LibraryOnlyUnionCaseFieldSet (e1, _, _, e2, _) - | SynExpr.App (_, _, e1, e2, _) -> + | SynExpr.NamedIndexedPropertySet(_, e1, e2, _) + | SynExpr.DotSet(e1, _, e2, _) + | SynExpr.Set(e1, e2, _) + | SynExpr.LibraryOnlyUnionCaseFieldSet(e1, _, _, e2, _) + | SynExpr.App(_, _, e1, e2, _) -> yield! walkExpr false e1 yield! walkExpr false e2 - | SynExpr.ArrayOrList (_, exprs, _) - | SynExpr.Tuple (_, exprs, _, _) -> yield! walkExprs exprs + | SynExpr.ArrayOrList(_, exprs, _) + | SynExpr.Tuple(_, exprs, _, _) -> yield! walkExprs exprs - | SynExpr.Record (_, copyExprOpt, fs, _) -> + | SynExpr.Record(_, copyExprOpt, fs, _) -> match copyExprOpt with - | Some (e, _) -> yield! walkExpr true e + | Some(e, _) -> yield! walkExpr true e | None -> () - yield! walkExprs (fs |> List.choose (fun (SynExprRecordField (expr = e)) -> e)) + yield! walkExprs (fs |> List.choose (fun (SynExprRecordField(expr = e)) -> e)) - | SynExpr.AnonRecd (copyInfo = copyExprOpt; recordFields = fs) -> + | SynExpr.AnonRecd(copyInfo = copyExprOpt; recordFields = fs) -> match copyExprOpt with - | Some (e, _) -> yield! walkExpr true e + | Some(e, _) -> yield! walkExpr true e | None -> () yield! walkExprs (fs |> List.map (fun (_, _, e) -> e)) - | SynExpr.ObjExpr (argOptions = args; bindings = bs; members = ms; extraImpls = is) -> + | SynExpr.ObjExpr(argOptions = args; bindings = bs; members = ms; extraImpls = is) -> let bs = unionBindingAndMembers bs ms match args with | None -> () - | Some (arg, _) -> yield! walkExpr false arg + | Some(arg, _) -> yield! walkExpr false arg yield! walkBinds bs - for SynInterfaceImpl (bindings = bs) in is do + for SynInterfaceImpl(bindings = bs) in is do yield! walkBinds bs - | SynExpr.While (spWhile, e1, e2, _) - | SynExpr.WhileBang (spWhile, e1, e2, _) -> + | SynExpr.While(spWhile, e1, e2, _) + | SynExpr.WhileBang(spWhile, e1, e2, _) -> yield! walkWhileSeqPt spWhile yield! walkExpr false e1 yield! walkExpr true e2 - | SynExpr.JoinIn (e1, _range, e2, _range2) -> + | SynExpr.JoinIn(e1, _range, e2, _range2) -> yield! walkExpr false e1 yield! walkExpr false e2 - | SynExpr.For (forDebugPoint = spFor; toDebugPoint = spTo; identBody = e1; toBody = e2; doBody = e3) -> + | SynExpr.For(forDebugPoint = spFor; toDebugPoint = spTo; identBody = e1; toBody = e2; doBody = e3) -> yield! walkForSeqPt spFor yield! walkInOrToSeqPt spTo yield! walkExpr false e1 yield! walkExpr true e2 yield! walkExpr true e3 - | SynExpr.ForEach (spFor, spIn, _, _, _, e1, e2, _) -> + | SynExpr.ForEach(spFor, spIn, _, _, _, e1, e2, _) -> yield! walkForSeqPt spFor yield! walkInOrToSeqPt spIn yield! walkBindSeqPt (DebugPointAtBinding.Yes e1.Range) yield! walkExpr false e1 yield! walkExpr true e2 - | SynExpr.MatchLambda (_isExnMatch, _argm, cl, spBind, _wholem) -> + | SynExpr.MatchLambda(_isExnMatch, _argm, cl, spBind, _wholem) -> yield! walkBindSeqPt spBind - for SynMatchClause (whenExpr = whenExpr; resultExpr = resultExpr) in cl do + for SynMatchClause(whenExpr = whenExpr; resultExpr = resultExpr) in cl do yield! walkExprOpt true whenExpr yield! walkExpr true resultExpr - | SynExpr.Lambda (body = bodyExpr) -> yield! walkExpr true bodyExpr + | SynExpr.Lambda(body = bodyExpr) -> yield! walkExpr true bodyExpr - | SynExpr.Match (matchDebugPoint = spBind; expr = inpExpr; clauses = cl) - | SynExpr.MatchBang (matchDebugPoint = spBind; expr = inpExpr; clauses = cl) -> + | SynExpr.Match(matchDebugPoint = spBind; expr = inpExpr; clauses = cl) + | SynExpr.MatchBang(matchDebugPoint = spBind; expr = inpExpr; clauses = cl) -> yield! walkBindSeqPt spBind yield! walkExpr false inpExpr - for SynMatchClause (whenExpr = whenExpr; resultExpr = tgtExpr) in cl do + for SynMatchClause(whenExpr = whenExpr; resultExpr = tgtExpr) in cl do yield! walkExprOpt true whenExpr yield! walkExpr true tgtExpr - | SynExpr.LetOrUse (bindings = binds; body = bodyExpr) -> + | SynExpr.LetOrUse(bindings = binds; body = bodyExpr) -> yield! walkBinds binds yield! walkExpr true bodyExpr - | SynExpr.TryWith (tryExpr = tryExpr; withCases = cl; tryDebugPoint = spTry; withDebugPoint = spWith) -> + | SynExpr.TryWith(tryExpr = tryExpr; withCases = cl; tryDebugPoint = spTry; withDebugPoint = spWith) -> yield! walkTrySeqPt spTry yield! walkWithSeqPt spWith yield! walkExpr true tryExpr yield! walkMatchClauses cl - | SynExpr.TryFinally (tryExpr = e1; finallyExpr = e2; tryDebugPoint = spTry; finallyDebugPoint = spFinally) -> + | SynExpr.TryFinally(tryExpr = e1; finallyExpr = e2; tryDebugPoint = spTry; finallyDebugPoint = spFinally) -> yield! walkExpr true e1 yield! walkExpr true e2 yield! walkTrySeqPt spTry yield! walkFinallySeqPt spFinally - | SynExpr.SequentialOrImplicitYield (spSeq, e1, e2, _, _) - | SynExpr.Sequential (spSeq, _, e1, e2, _) -> + | SynExpr.SequentialOrImplicitYield(spSeq, e1, e2, _, _) + | SynExpr.Sequential(spSeq, _, e1, e2, _) -> let implicit1 = match spSeq with | DebugPointAtSequential.SuppressExpr @@ -897,17 +896,17 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, yield! walkExpr implicit2 e2 - | SynExpr.IfThenElse (ifExpr = e1; thenExpr = e2; elseExpr = e3opt; spIfToThen = spBind) -> + | SynExpr.IfThenElse(ifExpr = e1; thenExpr = e2; elseExpr = e3opt; spIfToThen = spBind) -> yield! walkBindSeqPt spBind yield! walkExpr false e1 yield! walkExpr true e2 yield! walkExprOpt true e3opt - | SynExpr.DotIndexedGet (e1, es, _, _) -> + | SynExpr.DotIndexedGet(e1, es, _, _) -> yield! walkExpr false e1 yield! walkExpr false es - | SynExpr.IndexRange (expr1, _, expr2, _, _, _) -> + | SynExpr.IndexRange(expr1, _, expr2, _, _, _) -> match expr1 with | Some e -> yield! walkExpr false e | None -> () @@ -916,23 +915,23 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, | Some e -> yield! walkExpr false e | None -> () - | SynExpr.IndexFromEnd (e, _) -> yield! walkExpr false e + | SynExpr.IndexFromEnd(e, _) -> yield! walkExpr false e - | SynExpr.DotIndexedSet (e1, es, e2, _, _, _) -> + | SynExpr.DotIndexedSet(e1, es, e2, _, _, _) -> yield! walkExpr false e1 yield! walkExpr false es yield! walkExpr false e2 - | SynExpr.DotNamedIndexedPropertySet (e1, _, e2, e3, _) -> + | SynExpr.DotNamedIndexedPropertySet(e1, _, e2, e3, _) -> yield! walkExpr false e1 yield! walkExpr false e2 yield! walkExpr false e3 - | SynExpr.LetOrUseBang (spBind, _, _, _, rhsExpr, andBangs, bodyExpr, _, _) -> + | SynExpr.LetOrUseBang(spBind, _, _, _, rhsExpr, andBangs, bodyExpr, _, _) -> yield! walkBindSeqPt spBind yield! walkExpr true rhsExpr - for SynExprAndBang (debugPoint = andBangSpBind; body = eAndBang) in andBangs do + for SynExprAndBang(debugPoint = andBangSpBind; body = eAndBang) in andBangs do yield! walkBindSeqPt andBangSpBind yield! walkExpr true eAndBang @@ -940,7 +939,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, ] // Process a class declaration or F# type declaration - let rec walkTycon (SynTypeDefn (typeRepr = repr; members = membDefns; implicitConstructor = implicitCtor; range = m)) = + let rec walkTycon (SynTypeDefn(typeRepr = repr; members = membDefns; implicitConstructor = implicitCtor; range = m)) = if not (isMatchRange m) then [] else @@ -948,7 +947,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, for memb in membDefns do yield! walkMember memb match repr with - | SynTypeDefnRepr.ObjectModel (_, membDefns, _) -> + | SynTypeDefnRepr.ObjectModel(_, membDefns, _) -> for memb in membDefns do yield! walkMember memb | _ -> () @@ -965,11 +964,11 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, else [ match memb with - | SynMemberDefn.LetBindings (binds, _, _, _) -> yield! walkBinds binds - | SynMemberDefn.AutoProperty (synExpr = synExpr) -> yield! walkExpr true synExpr - | SynMemberDefn.ImplicitCtor (range = m) -> yield! checkRange m - | SynMemberDefn.Member (bind, _) -> yield! walkBind bind - | SynMemberDefn.GetSetMember (getBinding, setBinding, _, _) -> + | SynMemberDefn.LetBindings(binds, _, _, _) -> yield! walkBinds binds + | SynMemberDefn.AutoProperty(synExpr = synExpr) -> yield! walkExpr true synExpr + | SynMemberDefn.ImplicitCtor(range = m) -> yield! checkRange m + | SynMemberDefn.Member(bind, _) -> yield! walkBind bind + | SynMemberDefn.GetSetMember(getBinding, setBinding, _, _) -> match getBinding, setBinding with | None, None -> () | None, Some binding @@ -980,10 +979,10 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, | SynMemberDefn.Interface(members = Some membs) -> for m in membs do yield! walkMember m - | SynMemberDefn.Inherit (_, _, m) -> + | SynMemberDefn.Inherit(_, _, m) -> // can break on the "inherit" clause yield! checkRange m - | SynMemberDefn.ImplicitInherit (_, arg, _, m) -> + | SynMemberDefn.ImplicitInherit(_, arg, _, m) -> // can break on the "inherit" clause yield! checkRange m yield! walkExpr true arg @@ -995,23 +994,23 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, let rec walkDecl decl = [ match decl with - | SynModuleDecl.Let (_, binds, m) when isMatchRange m -> yield! walkBinds binds - | SynModuleDecl.Expr (expr, m) when isMatchRange m -> yield! walkExpr true expr + | SynModuleDecl.Let(_, binds, m) when isMatchRange m -> yield! walkBinds binds + | SynModuleDecl.Expr(expr, m) when isMatchRange m -> yield! walkExpr true expr | SynModuleDecl.ModuleAbbrev _ -> () - | SynModuleDecl.NestedModule (decls = decls; range = m) when isMatchRange m -> + | SynModuleDecl.NestedModule(decls = decls; range = m) when isMatchRange m -> for d in decls do yield! walkDecl d - | SynModuleDecl.Types (tydefs, m) when isMatchRange m -> + | SynModuleDecl.Types(tydefs, m) when isMatchRange m -> for d in tydefs do yield! walkTycon d - | SynModuleDecl.Exception (SynExceptionDefn (SynExceptionDefnRepr _, _, membDefns, _), m) when isMatchRange m -> + | SynModuleDecl.Exception(SynExceptionDefn(SynExceptionDefnRepr _, _, membDefns, _), m) when isMatchRange m -> for m in membDefns do yield! walkMember m | _ -> () ] // Collect all the items in a module - let walkModule (SynModuleOrNamespace (decls = decls; range = m)) = + let walkModule (SynModuleOrNamespace(decls = decls; range = m)) = if isMatchRange m then List.collect walkDecl decls else [] /// Get information for implementation file diff --git a/src/fcs-fable/src/Compiler/Service/IncrementalBuild.fs b/src/fcs-fable/src/Compiler/Service/IncrementalBuild.fs index c296e1f6a5..4f63d5be23 100644 --- a/src/fcs-fable/src/Compiler/Service/IncrementalBuild.fs +++ b/src/fcs-fable/src/Compiler/Service/IncrementalBuild.fs @@ -741,7 +741,7 @@ module IncrementalBuilderHelpers = } /// Finish up the typechecking to produce outputs for the rest of the compilation process - let FinalizeTypeCheckTask (tcConfig: TcConfig) tcGlobals partialCheck assemblyName outfile (initialErrors: SingleFileDiagnostics) (boundModels: GraphNode seq) = + let FinalizeTypeCheckTask (tcConfig: TcConfig) tcGlobals partialCheck assemblyName outfile (boundModels: GraphNode seq) = node { let diagnosticsLogger = CompilationDiagnosticLogger("FinalizeTypeCheckTask", tcConfig.diagnosticsOptions) use _ = new CompilationGlobalsScope(diagnosticsLogger, BuildPhase.TypeCheck) @@ -836,7 +836,6 @@ module IncrementalBuilderHelpers = let diagnostics = [ diagnosticsLogger.GetDiagnostics() yield! partialDiagnostics |> Seq.rev - initialErrors ] let! finalBoundModelWithErrors = finalBoundModel.Finish(diagnostics, Some topAttrs) @@ -943,7 +942,6 @@ type IncrementalBuilderState = { slots: Slot list stampedReferencedAssemblies: ImmutableArray - initialBoundModel: GraphNode finalizedBoundModel: GraphNode<(ILAssemblyRef * ProjectAssemblyDataResult * CheckedImplFile list option * BoundModel) * DateTime> } member this.stampedFileNames = this.slots |> List.map (fun s -> s.Stamp) @@ -965,7 +963,6 @@ module IncrementalBuilderStateHelpers = let createFinalizeBoundModelGraphNode (initialState: IncrementalBuilderInitialState) (boundModels: GraphNode seq) = GraphNode(node { use _ = Activity.start "GetCheckResultsAndImplementationsForProject" [|Activity.Tags.project, initialState.outfile|] - let! initialErrors = initialState.initialBoundModel.Diagnostics.GetOrComputeValue() let! result = FinalizeTypeCheckTask initialState.tcConfig @@ -973,7 +970,6 @@ module IncrementalBuilderStateHelpers = initialState.enablePartialTypeChecking initialState.assemblyName initialState.outfile - initialErrors boundModels return result, DateTime.UtcNow }) @@ -1076,11 +1072,10 @@ type IncrementalBuilderState with let boundModels = syntaxTrees |> Seq.scan createBoundModelGraphNode initialBoundModel - |> Seq.skip 1 let slots = [ - for model, syntaxTree, hasSignature in Seq.zip3 boundModels syntaxTrees hasSignature do + for model, syntaxTree, hasSignature in Seq.zip3 (boundModels |> Seq.skip 1) syntaxTrees hasSignature do { HasSignature = hasSignature Stamp = DateTime.MinValue @@ -1095,7 +1090,6 @@ type IncrementalBuilderState with { slots = slots stampedReferencedAssemblies = ImmutableArray.init referencedAssemblies.Length (fun _ -> DateTime.MinValue) - initialBoundModel = initialBoundModel finalizedBoundModel = createFinalizeBoundModelGraphNode initialState boundModels } let state = computeStampedReferencedAssemblies initialState state false cache diff --git a/src/fcs-fable/src/Compiler/Service/ItemKey.fs b/src/fcs-fable/src/Compiler/Service/ItemKey.fs index c44fc6401d..daf6a28f54 100644 --- a/src/fcs-fable/src/Compiler/Service/ItemKey.fs +++ b/src/fcs-fable/src/Compiler/Service/ItemKey.fs @@ -216,7 +216,7 @@ type ItemKeyStore(mmf: MemoryMappedFile, length, tcGlobals, debugStore) = match builder.TryBuildAndReset() with | None -> Seq.empty - | Some (singleStore: ItemKeyStore) -> + | Some(singleStore: ItemKeyStore) -> let keyString1 = singleStore.ReadFirstKeyString() (singleStore :> IDisposable).Dispose() @@ -271,7 +271,7 @@ and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = debug.WriteEntityRef eref writeString ItemKeyTags.entityRef writeString eref.CompiledName - eref.CompilationPath.MangledPath |> List.iter (fun str -> writeString str) + eref.CompilationPath.MangledPath |> List.iter writeString let rec writeILType (ilTy: ILType) = debug.WriteILType ilTy @@ -281,9 +281,9 @@ and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = writeString "!" writeUInt16 n - | ILType.Modified (_, _, ty2) -> writeILType ty2 + | ILType.Modified(_, _, ty2) -> writeILType ty2 - | ILType.Array (ILArrayShape s, ty) -> + | ILType.Array(ILArrayShape s, ty) -> writeILType ty writeString "[" writeInt32 (s.Length - 1) @@ -312,30 +312,30 @@ and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = writeChar '>' | ILType.FunctionPointer mref -> - mref.ArgTypes |> List.iter (fun x -> writeILType x) + mref.ArgTypes |> List.iter writeILType writeILType mref.ReturnType let rec writeType isStandalone (ty: TType) = debug.WriteType isStandalone ty match stripTyparEqns ty with - | TType_forall (_, ty) -> writeType false ty + | TType_forall(_, ty) -> writeType false ty - | TType_app (tcref, _, _) -> + | TType_app(tcref, _, _) -> match isStandalone, tcref.TypeAbbrev with | false, Some ty -> writeType false ty | _ -> writeEntityRef tcref - | TType_tuple (_, tinst) -> + | TType_tuple(_, tinst) -> writeString ItemKeyTags.typeTuple tinst |> List.iter (writeType false) - | TType_anon (anonInfo, tinst) -> + | TType_anon(anonInfo, tinst) -> writeString ItemKeyTags.typeAnonymousRecord writeString anonInfo.ILTypeRef.BasicQualifiedName tinst |> List.iter (writeType false) - | TType_fun (domainTy, rangeTy, _) -> + | TType_fun(domainTy, rangeTy, _) -> writeString ItemKeyTags.typeFunction writeType false domainTy writeType false rangeTy @@ -345,11 +345,11 @@ and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = writeString ItemKeyTags.typeMeasure writeMeasure isStandalone ms - | TType_var (tp, _) -> writeTypar isStandalone tp + | TType_var(tp, _) -> writeTypar isStandalone tp - | TType_ucase (uc, _) -> + | TType_ucase(uc, _) -> match uc with - | UnionCaseRef.UnionCaseRef (tcref, nm) -> + | UnionCaseRef.UnionCaseRef(tcref, nm) -> writeString ItemKeyTags.typeUnionCase writeEntityRef tcref writeString nm @@ -395,7 +395,7 @@ and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = match vref.IsInstanceMember, tryDestFunTy tcGlobals vref.Type with // In case of an instance member, we will skip the type of "this" because it will differ // between the definition and overrides. Also it's not needed to uniquely identify the reference. - | true, ValueSome (_thisTy, funTy) -> funTy + | true, ValueSome(_thisTy, funTy) -> funTy | _ -> vref.Type |> writeType false @@ -406,7 +406,7 @@ and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = writeType false vref.Type match vref.Deref.ArgReprInfoForDisplay with - | Some ({ OtherRange = Some (r) }) -> writeRange r + | Some({ OtherRange = Some(r) }) -> writeRange r | _ -> () match vref.TryDeclaringEntity with @@ -455,12 +455,12 @@ and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = match item with | Item.Value vref -> writeValue vref - | Item.UnionCase (info, _) -> + | Item.UnionCase(info, _) -> writeString ItemKeyTags.typeUnionCase writeEntityRef info.TyconRef writeString info.LogicalName - | Item.ActivePatternResult (info, _, index, _) -> writeActivePatternCase info index + | Item.ActivePatternResult(info, _, index, _) -> writeActivePatternCase info index | Item.ActivePatternCase elemRef -> writeActivePatternCase elemRef.ActivePatternInfo elemRef.CaseIndex @@ -474,13 +474,13 @@ and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = writeString info.LogicalName writeType false info.FieldType - | Item.UnionCaseField (info, fieldIndex) -> + | Item.UnionCaseField(info, fieldIndex) -> writeString ItemKeyTags.typeUnionCase writeEntityRef info.TyconRef writeString info.LogicalName writeInt32 fieldIndex - | Item.AnonRecdField (info, tys, i, _) -> + | Item.AnonRecdField(info, tys, i, _) -> writeString ItemKeyTags.itemAnonymousRecordField writeString info.ILTypeRef.BasicQualifiedName tys |> List.iter (writeType false) @@ -500,7 +500,7 @@ and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = writeString info.EventName writeEntityRef info.DeclaringTyconRef - | Item.Property (nm, infos, _) -> + | Item.Property(nm, infos, _) -> writeString ItemKeyTags.itemProperty writeString nm @@ -508,26 +508,26 @@ and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = | Some info -> writeEntityRef info.DeclaringTyconRef | _ -> () - | Item.Trait (info) -> + | Item.Trait(info) -> writeString ItemKeyTags.itemTrait writeString info.MemberLogicalName info.SupportTypes |> List.iter (writeType false) info.CompiledObjectAndArgumentTypes |> List.iter (writeType false) info.CompiledReturnType |> Option.iter (writeType false) - | Item.TypeVar (_, typar) -> writeTypar true typar + | Item.TypeVar(_, typar) -> writeTypar true typar - | Item.Types (_, [ ty ]) -> writeType true ty + | Item.Types(_, [ ty ]) -> writeType true ty | Item.UnqualifiedType [ tcref ] -> writeEntityRef tcref - | Item.MethodGroup (_, [ info ], _) - | Item.CtorGroup (_, [ info ]) -> + | Item.MethodGroup(_, [ info ], _) + | Item.CtorGroup(_, [ info ]) -> match info with - | FSMeth (_, ty, vref, _) when vref.IsConstructor -> writeType true ty - | FSMeth (_, _, vref, _) -> writeValue vref - | ILMeth (_, ilMethInfo, _) when info.IsConstructor -> writeType true ilMethInfo.ApparentEnclosingType - | ILMeth (_, ilMethInfo, _) -> + | FSMeth(_, ty, vref, _) when vref.IsConstructor -> writeType true ty + | FSMeth(_, _, vref, _) -> writeValue vref + | ILMeth(_, ilMethInfo, _) when info.IsConstructor -> writeType true ilMethInfo.ApparentEnclosingType + | ILMeth(_, ilMethInfo, _) -> ilMethInfo.ILMethodRef.ArgTypes |> List.iter writeILType writeILType ilMethInfo.ILMethodRef.ReturnType writeString ilMethInfo.ILName @@ -552,7 +552,7 @@ and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = writeType false ty // Named argument in a signature - | Item.OtherName (ident = Some (ident); argType = ty; argInfo = Some _) -> + | Item.OtherName(ident = Some(ident); argType = ty; argInfo = Some _) -> writeString ItemKeyTags.itemValue writeString ident.idText writeString ItemKeyTags.parameters @@ -569,18 +569,18 @@ and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = | Item.SetterArg _ -> () // Empty lists do not occur - | Item.Types (_, []) -> () + | Item.Types(_, []) -> () | Item.UnqualifiedType [] -> () - | Item.MethodGroup (_, [], _) -> () - | Item.CtorGroup (_, []) -> () + | Item.MethodGroup(_, [], _) -> () + | Item.CtorGroup(_, []) -> () | Item.ModuleOrNamespaces [] -> () // Items are flattened so multiples are not expected - | Item.Types (_, _ :: _ :: _) -> () - | Item.UnqualifiedType (_ :: _ :: _) -> () - | Item.MethodGroup (_, (_ :: _ :: _), _) -> () - | Item.CtorGroup (_, (_ :: _ :: _)) -> () - | Item.ModuleOrNamespaces (_ :: _ :: _) -> () + | Item.Types(_, _ :: _ :: _) -> () + | Item.UnqualifiedType(_ :: _ :: _) -> () + | Item.MethodGroup(_, (_ :: _ :: _), _) -> () + | Item.CtorGroup(_, (_ :: _ :: _)) -> () + | Item.ModuleOrNamespaces(_ :: _ :: _) -> () let postCount = b.Count diff --git a/src/fcs-fable/src/Compiler/Service/QuickParse.fs b/src/fcs-fable/src/Compiler/Service/QuickParse.fs index 50b3fabed0..cf5acbef6d 100644 --- a/src/fcs-fable/src/Compiler/Service/QuickParse.fs +++ b/src/fcs-fable/src/Compiler/Service/QuickParse.fs @@ -163,7 +163,7 @@ module QuickParse = walkOutsideBackticks 0 match tickColsOpt with - | Some (prevTickTick, idxTickTick) -> + | Some(prevTickTick, idxTickTick) -> // inside ``identifier`` (which can contain any characters!) so we try returning its location let pos = idxTickTick + 1 + MagicalAdjustmentConstant let ident = lineStr.Substring(prevTickTick, idxTickTick - prevTickTick + 2) @@ -328,9 +328,9 @@ module QuickParse = if nesting = 1 then // all right, we are at the end of comment, jump outside match callContext with - | EatCommentCallContext.SkipWhiteSpaces (ident, current, throwAway) -> + | EatCommentCallContext.SkipWhiteSpaces(ident, current, throwAway) -> SkipWhitespaceBeforeDotIdentifier(pos + 2, ident, current, throwAway, lastDotPos) - | EatCommentCallContext.StartIdentifier (current, throwAway) -> + | EatCommentCallContext.StartIdentifier(current, throwAway) -> AtStartOfIdentifier(pos + 2, current, throwAway, lastDotPos) else // reduce level of nesting and continue diff --git a/src/fcs-fable/src/Compiler/Service/SemanticClassification.fs b/src/fcs-fable/src/Compiler/Service/SemanticClassification.fs index c221d175c7..d78d0579b7 100644 --- a/src/fcs-fable/src/Compiler/Service/SemanticClassification.fs +++ b/src/fcs-fable/src/Compiler/Service/SemanticClassification.fs @@ -114,7 +114,7 @@ module TcResolutionsExtensions = | TFSharpStruct -> SemanticClassificationType.ValueType | TFSharpDelegate _ -> SemanticClassificationType.Delegate | TFSharpEnum -> SemanticClassificationType.Enumeration - | TILObjectRepr (TILObjectReprData (_, _, td)) -> + | TILObjectRepr(TILObjectReprData(_, _, td)) -> if td.IsClass then SemanticClassificationType.ReferenceType elif td.IsStruct then @@ -197,8 +197,7 @@ module TcResolutionsExtensions = sResolutions.CapturedNameResolutions.ToArray() |> Array.filter (fun cnr -> rangeContainsPos range cnr.Range.Start || rangeContainsPos range cnr.Range.End) |> Array.groupBy (fun cnr -> cnr.Range) - |> Array.map (fun (_, cnrs) -> takeCustomBuilder cnrs) - |> Array.concat + |> Array.collect (fun (_, cnrs) -> takeCustomBuilder cnrs) | None -> sResolutions.CapturedNameResolutions.ToArray() let duplicates = HashSet(comparer) @@ -257,7 +256,7 @@ module TcResolutionsExtensions = else add m SemanticClassificationType.RecordField - | Item.AnonRecdField (_, tys, idx, m), _, _ -> + | Item.AnonRecdField(_, tys, idx, m), _, _ -> let ty = tys[idx] // It's not currently possible for anon record fields to be mutable, but they can be ref cells @@ -272,7 +271,7 @@ module TcResolutionsExtensions = if not pinfo.IsIndexer then add m SemanticClassificationType.Property - | Item.CtorGroup (_, minfos), _, m -> + | Item.CtorGroup(_, minfos), _, m -> match minfos with | [] -> add m SemanticClassificationType.ConstructorForReferenceType | _ -> @@ -290,7 +289,7 @@ module TcResolutionsExtensions = | Item.FakeInterfaceCtor _, _, m -> add m SemanticClassificationType.ConstructorForReferenceType - | Item.MethodGroup (_, minfos, _), _, m -> + | Item.MethodGroup(_, minfos, _), _, m -> match minfos with | [] -> add m SemanticClassificationType.Method | _ -> @@ -303,12 +302,12 @@ module TcResolutionsExtensions = add m SemanticClassificationType.Method // Special case measures for struct types - | Item.Types (_, AppTy g (tyconRef, TType_measure _ :: _) :: _), LegitTypeOccurence, m when + | Item.Types(_, AppTy g (tyconRef, TType_measure _ :: _) :: _), LegitTypeOccurence, m when isStructTyconRef g tyconRef -> add m SemanticClassificationType.ValueType - | Item.Types (_, ty :: _), LegitTypeOccurence, m -> + | Item.Types(_, ty :: _), LegitTypeOccurence, m -> let ty = stripTyEqns g ty if isDisposableTy g amap ty then @@ -332,7 +331,7 @@ module TcResolutionsExtensions = | Item.ExnCase _, LegitTypeOccurence, m -> add m SemanticClassificationType.Exception - | Item.ModuleOrNamespaces (modref :: _), LegitTypeOccurence, m -> + | Item.ModuleOrNamespaces(modref :: _), LegitTypeOccurence, m -> if modref.IsNamespace then add m SemanticClassificationType.Namespace else @@ -356,7 +355,7 @@ module TcResolutionsExtensions = | Item.SetterArg _, _, m -> add m SemanticClassificationType.NamedArgument - | Item.UnqualifiedType (tcref :: _), LegitTypeOccurence, m -> + | Item.UnqualifiedType(tcref :: _), LegitTypeOccurence, m -> if tcref.IsEnumTycon || tcref.IsILEnumTycon then add m SemanticClassificationType.Enumeration elif tcref.IsFSharpException then @@ -377,7 +376,7 @@ module TcResolutionsExtensions = else add m SemanticClassificationType.UnionCase elif tcref.IsILTycon then - let (TILObjectReprData (_, _, tydef)) = tcref.ILTyconInfo + let (TILObjectReprData(_, _, tydef)) = tcref.ILTyconInfo if tydef.IsInterface then add m SemanticClassificationType.Interface diff --git a/src/fcs-fable/src/Compiler/Service/ServiceAnalysis.fs b/src/fcs-fable/src/Compiler/Service/ServiceAnalysis.fs index 9d639bfc0a..777a967876 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceAnalysis.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceAnalysis.fs @@ -7,6 +7,7 @@ open System.Runtime.CompilerServices open Internal.Utilities.Library open FSharp.Compiler.CodeAnalysis open FSharp.Compiler.Symbols +open FSharp.Compiler.Syntax open FSharp.Compiler.Syntax.PrettyNaming open FSharp.Compiler.Text open FSharp.Compiler.Text.Range @@ -451,3 +452,1273 @@ module UnusedDeclarations = let unusedRanges = getUnusedDeclarationRanges allSymbolUsesInFile isScriptFile return unusedRanges } + +module UnnecessaryParentheses = + open System + + let (|Ident|) (ident: Ident) = ident.idText + + /// Represents an expression's precedence, or, + /// for a few few types of expression whose exact + /// kind can be significant, the expression's exact kind. + /// + /// Use Precedence.sameKind to determine whether two expressions + /// have the same kind. Use Precedence.compare to compare two + /// expressions' precedence. Avoid using relational operators or the + /// built-in compare function on this type. + type Precedence = + /// yield, yield!, return, return! + | Low + + /// <- + | Set + + /// := + | ColonEquals + + /// , + | Comma + + /// or, || + /// + /// Refers to the exact operators or and ||. + /// Instances with leading dots or question marks or trailing characters are parsed as Bar instead. + | BarBar + + /// &, && + /// + /// Refers to the exact operators & and &&. + /// Instances with leading dots or question marks or trailing characters are parsed as Amp instead. + | AmpAmp + + /// :?> + | Downcast + + /// :> + | Upcast + + /// =… + | Eq + + /// |… + | Bar + + /// &… + | Amp + + /// $… + | Dollar + + /// >… + | Greater + + /// <… + | Less + + /// !=… + | BangEq + + /// ^… + | Hat + + /// @… + | At + + /// :: + | Cons + + /// :? + | TypeTest + + /// -… + | Sub + + /// +… + | Add + + /// %… + | Mod + + /// /… + | Div + + /// *… + | Mul + + /// **… + | Exp + + /// - x + | UnaryPrefix + + /// f x + | Apply + + /// -x, !… x, ~~… x + | High + + // x.y + | Dot + + module Precedence = + /// Returns true only if the two expressions are of the + /// exact same kind. E.g., Add = Add and Sub = Sub, + /// but Add <> Sub, even though their precedence compares equally. + let sameKind prec1 prec2 = prec1 = prec2 + + /// Compares two expressions' precedence. + let compare prec1 prec2 = + match prec1, prec2 with + | Dot, Dot -> 0 + | Dot, _ -> 1 + | _, Dot -> -1 + + | High, High -> 0 + | High, _ -> 1 + | _, High -> -1 + + | Apply, Apply -> 0 + | Apply, _ -> 1 + | _, Apply -> -1 + + | UnaryPrefix, UnaryPrefix -> 0 + | UnaryPrefix, _ -> 1 + | _, UnaryPrefix -> -1 + + | Exp, Exp -> 0 + | Exp, _ -> 1 + | _, Exp -> -1 + + | (Mod | Div | Mul), (Mod | Div | Mul) -> 0 + | (Mod | Div | Mul), _ -> 1 + | _, (Mod | Div | Mul) -> -1 + + | (Sub | Add), (Sub | Add) -> 0 + | (Sub | Add), _ -> 1 + | _, (Sub | Add) -> -1 + + | TypeTest, TypeTest -> 0 + | TypeTest, _ -> 1 + | _, TypeTest -> -1 + + | Cons, Cons -> 0 + | Cons, _ -> 1 + | _, Cons -> -1 + + | (Hat | At), (Hat | At) -> 0 + | (Hat | At), _ -> 1 + | _, (Hat | At) -> -1 + + | (Eq | Bar | Amp | Dollar | Greater | Less | BangEq), (Eq | Bar | Amp | Dollar | Greater | Less | BangEq) -> 0 + | (Eq | Bar | Amp | Dollar | Greater | Less | BangEq), _ -> 1 + | _, (Eq | Bar | Amp | Dollar | Greater | Less | BangEq) -> -1 + + | (Downcast | Upcast), (Downcast | Upcast) -> 0 + | (Downcast | Upcast), _ -> 1 + | _, (Downcast | Upcast) -> -1 + + | AmpAmp, AmpAmp -> 0 + | AmpAmp, _ -> 1 + | _, AmpAmp -> -1 + + | BarBar, BarBar -> 0 + | BarBar, _ -> 1 + | _, BarBar -> -1 + + | Comma, Comma -> 0 + | Comma, _ -> 1 + | _, Comma -> -1 + + | ColonEquals, ColonEquals -> 0 + | ColonEquals, _ -> 1 + | _, ColonEquals -> -1 + + | Set, Set -> 0 + | Set, _ -> 1 + | _, Set -> -1 + + | Low, Low -> 0 + + /// Associativity/association. + type Assoc = + /// Non-associative or no association. + | Non + + /// Left-associative or left-hand association. + | Left + + /// Right-associative or right-hand association. + | Right + + module Assoc = + let ofPrecedence precedence = + match precedence with + | Low -> Non + | Set -> Non + | ColonEquals -> Right + | Comma -> Non + | BarBar -> Left + | AmpAmp -> Left + | Upcast + | Downcast -> Right + | Eq + | Bar + | Amp + | Dollar + | Greater + | Less + | BangEq -> Left + | At + | Hat -> Right + | Cons -> Right + | TypeTest -> Non + | Add + | Sub -> Left + | Mul + | Div + | Mod -> Left + | Exp -> Right + | UnaryPrefix -> Left + | Apply -> Left + | High -> Left + | Dot -> Left + + /// Matches if the two expressions or patterns refer to the same object. + [] + let inline (|Is|_|) (inner1: 'a) (inner2: 'a) = + if obj.ReferenceEquals(inner1, inner2) then + ValueSome Is + else + ValueNone + + module SynExpr = + open FSharp.Compiler.SyntaxTrivia + + /// See atomicExprAfterType in pars.fsy. + [] + let (|AtomicExprAfterType|_|) expr = + match expr with + | SynExpr.Paren _ + | SynExpr.Quote _ + | SynExpr.Const _ + | SynExpr.Tuple(isStruct = true) + | SynExpr.Record _ + | SynExpr.AnonRecd _ + | SynExpr.InterpolatedString _ + | SynExpr.Null _ + | SynExpr.ArrayOrList(isArray = true) + | SynExpr.ArrayOrListComputed(isArray = true) -> ValueSome AtomicExprAfterType + | _ -> ValueNone + + /// Matches if the given expression represents a high-precedence + /// function application, e.g., + /// + /// f x + /// + /// (+) x y + [] + let (|HighPrecedenceApp|_|) expr = + match expr with + | SynExpr.App(isInfix = false; funcExpr = SynExpr.Ident _) + | SynExpr.App(isInfix = false; funcExpr = SynExpr.LongIdent _) + | SynExpr.App(isInfix = false; funcExpr = SynExpr.App(isInfix = false)) -> ValueSome HighPrecedenceApp + | _ -> ValueNone + + module FuncExpr = + /// Matches when the given funcExpr is a direct application + /// of a symbolic operator, e.g., -, _not_ (~-). + [] + let (|SymbolicOperator|_|) funcExpr = + match funcExpr with + | SynExpr.LongIdent(longDotId = SynLongIdent(trivia = trivia)) -> + let rec tryPick = + function + | [] -> ValueNone + | Some(IdentTrivia.OriginalNotation op) :: _ -> ValueSome op + | _ :: rest -> tryPick rest + + tryPick trivia + | _ -> ValueNone + + /// Matches when the given expression is a prefix operator application, e.g., + /// + /// -x + /// + /// ~~~x + [] + let (|PrefixApp|_|) expr : Precedence voption = + match expr with + | SynExpr.App(isInfix = false; funcExpr = funcExpr & FuncExpr.SymbolicOperator op; argExpr = argExpr) -> + if funcExpr.Range.IsAdjacentTo argExpr.Range then + ValueSome High + else + assert (op.Length > 0) + + match op[0] with + | '!' + | '~' -> ValueSome High + | _ -> ValueSome UnaryPrefix + + | SynExpr.AddressOf(expr = expr; opRange = opRange) -> + if opRange.IsAdjacentTo expr.Range then + ValueSome High + else + ValueSome UnaryPrefix + + | _ -> ValueNone + + /// Tries to parse the given original notation as a symbolic infix operator. + [] + let (|SymbolPrec|_|) (originalNotation: string) = + // Trim any leading dots or question marks from the given symbolic operator. + // Leading dots or question marks have no effect on operator precedence or associativity + // with the exception of &, &&, and ||. + let ignoredLeadingChars = ".?".AsSpan() + let trimmed = originalNotation.AsSpan().TrimStart ignoredLeadingChars + assert (trimmed.Length > 0) + + match trimmed[0], originalNotation with + | _, ":=" -> ValueSome ColonEquals + | _, ("||" | "or") -> ValueSome BarBar + | _, ("&" | "&&") -> ValueSome AmpAmp + | '|', _ -> ValueSome Bar + | '&', _ -> ValueSome Amp + | '<', _ -> ValueSome Less + | '>', _ -> ValueSome Greater + | '=', _ -> ValueSome Eq + | '$', _ -> ValueSome Dollar + | '!', _ when trimmed.Length > 1 && trimmed[1] = '=' -> ValueSome BangEq + | '^', _ -> ValueSome Hat + | '@', _ -> ValueSome At + | _, "::" -> ValueSome Cons + | '+', _ -> ValueSome Add + | '-', _ -> ValueSome Sub + | '/', _ -> ValueSome Div + | '%', _ -> ValueSome Mod + | '*', _ when trimmed.Length > 1 && trimmed[1] = '*' -> ValueSome Exp + | '*', _ -> ValueSome Mul + | _ -> ValueNone + + /// Any expressions in which the removal of parens would + /// lead to something like the following that would be + /// confused by the parser with a type parameter application: + /// + /// xz + /// + /// xz + [] + let rec (|ConfusableWithTypeApp|_|) synExpr = + match synExpr with + | SynExpr.Paren(expr = ConfusableWithTypeApp) + | SynExpr.App(funcExpr = ConfusableWithTypeApp) + | SynExpr.App(isInfix = true; funcExpr = FuncExpr.SymbolicOperator(SymbolPrec Greater); argExpr = ConfusableWithTypeApp) -> + ValueSome ConfusableWithTypeApp + | SynExpr.App(isInfix = true; funcExpr = funcExpr & FuncExpr.SymbolicOperator(SymbolPrec Less); argExpr = argExpr) when + argExpr.Range.IsAdjacentTo funcExpr.Range + -> + ValueSome ConfusableWithTypeApp + | SynExpr.Tuple(exprs = exprs) -> + let rec anyButLast = + function + | _ :: [] + | [] -> ValueNone + | ConfusableWithTypeApp :: _ -> ValueSome ConfusableWithTypeApp + | _ :: tail -> anyButLast tail + + anyButLast exprs + | _ -> ValueNone + + /// Matches when the expression represents the infix application of a symbolic operator. + /// + /// (x λ y) ρ z + /// + /// x λ (y ρ z) + [] + let (|InfixApp|_|) synExpr : struct (Precedence * Assoc) voption = + match synExpr with + | SynExpr.App(funcExpr = SynExpr.App(isInfix = true; funcExpr = FuncExpr.SymbolicOperator(SymbolPrec prec))) -> + ValueSome(prec, Right) + | SynExpr.App(isInfix = true; funcExpr = FuncExpr.SymbolicOperator(SymbolPrec prec)) -> ValueSome(prec, Left) + | SynExpr.Upcast _ -> ValueSome(Upcast, Left) + | SynExpr.Downcast _ -> ValueSome(Downcast, Left) + | SynExpr.TypeTest _ -> ValueSome(TypeTest, Left) + | _ -> ValueNone + + /// Returns the given expression's precedence and the side of the inner expression, + /// if applicable. + [] + let (|OuterBinaryExpr|_|) inner outer : struct (Precedence * Assoc) voption = + match outer with + | SynExpr.YieldOrReturn _ + | SynExpr.YieldOrReturnFrom _ -> ValueSome(Low, Right) + | SynExpr.Tuple(exprs = SynExpr.Paren(expr = Is inner) :: _) -> ValueSome(Comma, Left) + | SynExpr.Tuple _ -> ValueSome(Comma, Right) + | InfixApp(Cons, side) -> ValueSome(Cons, side) + | SynExpr.Assert _ + | SynExpr.Lazy _ + | SynExpr.InferredUpcast _ + | SynExpr.InferredDowncast _ -> ValueSome(Apply, Non) + | PrefixApp prec -> ValueSome(prec, Non) + | InfixApp(prec, side) -> ValueSome(prec, side) + | SynExpr.App(argExpr = SynExpr.ComputationExpr _) -> ValueSome(UnaryPrefix, Left) + | SynExpr.App(funcExpr = SynExpr.Paren(expr = SynExpr.App _)) -> ValueSome(Apply, Left) + | SynExpr.App _ -> ValueSome(Apply, Non) + | SynExpr.DotSet(targetExpr = SynExpr.Paren(expr = Is inner)) -> ValueSome(Dot, Left) + | SynExpr.DotSet(rhsExpr = SynExpr.Paren(expr = Is inner)) -> ValueSome(Set, Right) + | SynExpr.DotIndexedSet(objectExpr = SynExpr.Paren(expr = Is inner)) + | SynExpr.DotNamedIndexedPropertySet(targetExpr = SynExpr.Paren(expr = Is inner)) -> ValueSome(Dot, Left) + | SynExpr.DotIndexedSet(valueExpr = SynExpr.Paren(expr = Is inner)) + | SynExpr.DotNamedIndexedPropertySet(rhsExpr = SynExpr.Paren(expr = Is inner)) -> ValueSome(Set, Right) + | SynExpr.LongIdentSet(expr = SynExpr.Paren(expr = Is inner)) -> ValueSome(Set, Right) + | SynExpr.Set _ -> ValueSome(Set, Non) + | SynExpr.DotGet _ -> ValueSome(Dot, Left) + | SynExpr.DotIndexedGet(objectExpr = SynExpr.Paren(expr = Is inner)) -> ValueSome(Dot, Left) + | _ -> ValueNone + + /// Matches a SynExpr.App nested in a sequence of dot-gets. + /// + /// x.M.N().O + [] + let (|NestedApp|_|) expr = + let rec loop = + function + | SynExpr.DotGet(expr = expr) + | SynExpr.DotIndexedGet(objectExpr = expr) -> loop expr + | SynExpr.App _ -> ValueSome NestedApp + | _ -> ValueNone + + loop expr + + /// Returns the given expression's precedence, if applicable. + [] + let (|InnerBinaryExpr|_|) expr : Precedence voption = + match expr with + | SynExpr.Tuple(isStruct = false) -> ValueSome Comma + | SynExpr.DotGet(expr = NestedApp) + | SynExpr.DotIndexedGet(objectExpr = NestedApp) -> ValueSome Apply + | SynExpr.DotGet _ + | SynExpr.DotIndexedGet _ -> ValueSome Dot + | PrefixApp prec -> ValueSome prec + | InfixApp(prec, _) -> ValueSome prec + | SynExpr.App _ + | SynExpr.Assert _ + | SynExpr.Lazy _ + | SynExpr.For _ + | SynExpr.ForEach _ + | SynExpr.While _ + | SynExpr.Do _ + | SynExpr.New _ + | SynExpr.InferredUpcast _ + | SynExpr.InferredDowncast _ -> ValueSome Apply + | SynExpr.DotIndexedSet _ + | SynExpr.DotNamedIndexedPropertySet _ + | SynExpr.DotSet _ -> ValueSome Set + | _ -> ValueNone + + module Dangling = + /// Returns the first matching nested right-hand target expression, if any. + let private dangling (target: SynExpr -> SynExpr option) = + let (|Target|_|) = target + let (|Last|) = List.last + + let rec loop expr = + match expr with + | Target expr -> ValueSome expr + | SynExpr.Tuple(isStruct = false; exprs = Last expr) + | SynExpr.App(argExpr = expr) + | SynExpr.IfThenElse(elseExpr = Some expr) + | SynExpr.IfThenElse(ifExpr = expr) + | SynExpr.Sequential(expr2 = expr) + | SynExpr.YieldOrReturn(expr = expr) + | SynExpr.YieldOrReturnFrom(expr = expr) + | SynExpr.Set(rhsExpr = expr) + | SynExpr.DotSet(rhsExpr = expr) + | SynExpr.DotNamedIndexedPropertySet(rhsExpr = expr) + | SynExpr.DotIndexedSet(valueExpr = expr) + | SynExpr.LongIdentSet(expr = expr) + | SynExpr.LetOrUse(body = expr) + | SynExpr.Lambda(body = expr) + | SynExpr.Match(clauses = Last(SynMatchClause(resultExpr = expr))) + | SynExpr.MatchLambda(matchClauses = Last(SynMatchClause(resultExpr = expr))) + | SynExpr.MatchBang(clauses = Last(SynMatchClause(resultExpr = expr))) + | SynExpr.TryWith(withCases = Last(SynMatchClause(resultExpr = expr))) + | SynExpr.TryFinally(finallyExpr = expr) -> loop expr + | _ -> ValueNone + + loop + + /// Matches a dangling if-then construct. + [] + let (|IfThen|_|) = + dangling (function + | SynExpr.IfThenElse _ as expr -> Some expr + | _ -> None) + + /// Matches a dangling sequential expression. + [] + let (|Sequential|_|) = + dangling (function + | SynExpr.Sequential _ as expr -> Some expr + | _ -> None) + + /// Matches a dangling try-with or try-finally construct. + [] + let (|Try|_|) = + dangling (function + | SynExpr.TryWith _ + | SynExpr.TryFinally _ as expr -> Some expr + | _ -> None) + + /// Matches a dangling match-like construct. + [] + let (|Match|_|) = + dangling (function + | SynExpr.Match _ + | SynExpr.MatchBang _ + | SynExpr.MatchLambda _ + | SynExpr.TryWith _ + | SynExpr.Lambda _ as expr -> Some expr + | _ -> None) + + /// Matches a nested dangling construct that could become problematic + /// if the surrounding parens were removed. + [] + let (|Problematic|_|) = + dangling (function + | SynExpr.Lambda _ + | SynExpr.MatchLambda _ + | SynExpr.Match _ + | SynExpr.MatchBang _ + | SynExpr.TryWith _ + | SynExpr.TryFinally _ + | SynExpr.IfThenElse _ + | SynExpr.Sequential _ + | SynExpr.LetOrUse _ + | SynExpr.Set _ + | SynExpr.LongIdentSet _ + | SynExpr.DotIndexedSet _ + | SynExpr.DotNamedIndexedPropertySet _ + | SynExpr.DotSet _ + | SynExpr.NamedIndexedPropertySet _ as expr -> Some expr + | _ -> None) + + /// If the given expression is a parenthesized expression and the parentheses + /// are unnecessary in the given context, returns the unnecessary parentheses' range. + let rec unnecessaryParentheses (getSourceLineStr: int -> string) expr path = + let unnecessaryParentheses = unnecessaryParentheses getSourceLineStr + + // Indicates whether the parentheses with the given range + // enclose an expression whose indentation would be invalid + // in context if it were not surrounded by parentheses. + let containsSensitiveIndentation outerOffsides (parenRange: range) = + let startLine = parenRange.StartLine + let endLine = parenRange.EndLine + + if startLine = endLine then + false + else + let rec loop offsides lineNo startCol = + if lineNo <= endLine then + let line = getSourceLineStr lineNo + + match offsides with + | ValueNone -> + let i = line.AsSpan(startCol).IndexOfAnyExcept(' ', ')') + + if i >= 0 then + let newOffsides = i + startCol + newOffsides <= outerOffsides || loop (ValueSome newOffsides) (lineNo + 1) 0 + else + loop offsides (lineNo + 1) 0 + + | ValueSome offsidesCol -> + let i = line.AsSpan(0, min offsidesCol line.Length).IndexOfAnyExcept(' ', ')') + + if i >= 0 && i < offsidesCol then + let slice = line.AsSpan(i, min (offsidesCol - i) (line.Length - i)) + let j = slice.IndexOfAnyExcept("*/%-+:^@><=!|0$.?".AsSpan()) + + let lo = i + (if j >= 0 && slice[j] = ' ' then j else 0) + lo < offsidesCol - 1 || lo <= outerOffsides || loop offsides (lineNo + 1) 0 + else + loop offsides (lineNo + 1) 0 + else + false + + loop ValueNone startLine (parenRange.StartColumn + 1) + + // Matches if the given expression starts with a symbol, e.g., <@ … @>, $"…", @"…", +1, -1… + let (|StartsWithSymbol|_|) = + let (|TextStartsWith|) (m: range) = + let line = getSourceLineStr m.StartLine + line[m.StartColumn] + + let (|StartsWith|) (s: string) = s[0] + + function + | SynExpr.Quote _ + | SynExpr.InterpolatedString _ + | SynExpr.Const(SynConst.String(synStringKind = SynStringKind.Verbatim), _) + | SynExpr.Const(SynConst.Byte _, TextStartsWith '+') + | SynExpr.Const(SynConst.UInt16 _, TextStartsWith '+') + | SynExpr.Const(SynConst.UInt32 _, TextStartsWith '+') + | SynExpr.Const(SynConst.UInt64 _, TextStartsWith '+') + | SynExpr.Const(SynConst.UIntPtr _, TextStartsWith '+') + | SynExpr.Const(SynConst.SByte _, TextStartsWith('-' | '+')) + | SynExpr.Const(SynConst.Int16 _, TextStartsWith('-' | '+')) + | SynExpr.Const(SynConst.Int32 _, TextStartsWith('-' | '+')) + | SynExpr.Const(SynConst.Int64 _, TextStartsWith('-' | '+')) + | SynExpr.Const(SynConst.IntPtr _, TextStartsWith('-' | '+')) + | SynExpr.Const(SynConst.Decimal _, TextStartsWith('-' | '+')) + | SynExpr.Const(SynConst.Double _, TextStartsWith('-' | '+')) + | SynExpr.Const(SynConst.Single _, TextStartsWith('-' | '+')) + | SynExpr.Const(SynConst.Measure(_, TextStartsWith('-' | '+'), _, _), _) + | SynExpr.Const(SynConst.UserNum(StartsWith('-' | '+'), _), _) -> Some StartsWithSymbol + | _ -> None + + // Matches if the given expression is a numeric literal + // that it is safe to "dot into," e.g., 1l, 0b1, 1e10, 1d, 1.0… + let (|DotSafeNumericLiteral|_|) = + /// 1l, 1d, 0b1, 0x1, 0o1, 1e10… + let (|TextContainsLetter|_|) (m: range) = + let line = getSourceLineStr m.StartLine + let span = line.AsSpan(m.StartColumn, m.EndColumn - m.StartColumn) + + if span.LastIndexOfAnyInRange('A', 'z') >= 0 then + Some TextContainsLetter + else + None + + // 1.0… + let (|TextEndsWithNumber|_|) (m: range) = + let line = getSourceLineStr m.StartLine + let span = line.AsSpan(m.StartColumn, m.EndColumn - m.StartColumn) + + if Char.IsDigit span[span.Length - 1] then + Some TextEndsWithNumber + else + None + + function + | SynExpr.Const(SynConst.Byte _, _) + | SynExpr.Const(SynConst.UInt16 _, _) + | SynExpr.Const(SynConst.UInt32 _, _) + | SynExpr.Const(SynConst.UInt64 _, _) + | SynExpr.Const(SynConst.UIntPtr _, _) + | SynExpr.Const(SynConst.SByte _, _) + | SynExpr.Const(SynConst.Int16 _, _) + | SynExpr.Const(SynConst.Int32 _, TextContainsLetter) + | SynExpr.Const(SynConst.Int64 _, _) + | SynExpr.Const(SynConst.IntPtr _, _) + | SynExpr.Const(SynConst.Decimal _, _) + | SynExpr.Const(SynConst.Double _, (TextEndsWithNumber | TextContainsLetter)) + | SynExpr.Const(SynConst.Single _, _) + | SynExpr.Const(SynConst.Measure _, _) + | SynExpr.Const(SynConst.UserNum _, _) -> Some DotSafeNumericLiteral + | _ -> None + + match expr, path with + // Check for nested matches, e.g., + // + // match … with … -> (…, match … with … -> … | … -> …) | … -> … + | SynExpr.Paren _, SyntaxNode.SynMatchClause _ :: path -> unnecessaryParentheses expr path + + // We always need parens for trait calls, e.g., + // + // let inline f x = (^a : (static member Parse : string -> ^a) x) + | SynExpr.Paren(expr = SynExpr.TraitCall _), _ -> ValueNone + + // Don't touch library-only stuff: + // + // (# "ldlen.multi 2 0" array : int #) + | SynExpr.Paren(expr = SynExpr.LibraryOnlyILAssembly _), _ + | SynExpr.Paren(expr = SynExpr.LibraryOnlyStaticOptimization _), _ + | SynExpr.Paren(expr = SynExpr.LibraryOnlyUnionCaseFieldGet _), _ + | SynExpr.Paren(expr = SynExpr.LibraryOnlyUnionCaseFieldSet _), _ -> ValueNone + + // Parens are required around the body expresion of a binding + // if the parenthesized expression would be invalid without its parentheses, e.g., + // + // let x = (x + // + y) + | SynExpr.Paren(rightParenRange = Some _; range = parenRange), + SyntaxNode.SynBinding(SynBinding(trivia = { LeadingKeyword = leadingKeyword })) :: _ when + containsSensitiveIndentation leadingKeyword.Range.StartColumn parenRange + -> + ValueNone + + // Parens are otherwise never required for binding bodies or for top-level expressions, e.g., + // + // let x = (…) + // _.member X = (…) + // (printfn "Hello, world.") + | SynExpr.Paren(rightParenRange = Some _; range = range), SyntaxNode.SynBinding _ :: _ + | SynExpr.Paren(rightParenRange = Some _; range = range), SyntaxNode.SynModule _ :: _ -> ValueSome range + + // Parens must be kept when there is a high-precedence function application + // before a prefix operator application before another expression that starts with a symbol, e.g., + // + // id -(-x) + // id -(-1y) + // id -($"") + // id -(@"") + // id -(<@ ValueNone @>) + // let (~+) _ = true in assert +($"{true}") + | SynExpr.Paren(expr = PrefixApp _ | StartsWithSymbol), + SyntaxNode.SynExpr(SynExpr.App _) :: SyntaxNode.SynExpr(HighPrecedenceApp | SynExpr.Assert _ | SynExpr.InferredUpcast _ | SynExpr.InferredDowncast _) :: _ -> + ValueNone + + // Parens are never required around suffixed or infixed numeric literals, e.g., + // + // (1l).ToString() + // (1uy).ToString() + // (0b1).ToString() + // (1e10).ToString() + // (1.0).ToString() + | SynExpr.Paren(expr = DotSafeNumericLiteral; rightParenRange = Some _; range = range), _ -> ValueSome range + + // Parens are required around bare decimal ints or doubles ending + // in dots when being dotted into, e.g., + // + // (1).ToString() + // (1.).ToString() + | SynExpr.Paren(expr = SynExpr.Const(constant = SynConst.Int32 _ | SynConst.Double _)), + SyntaxNode.SynExpr(SynExpr.DotGet _) :: _ -> ValueNone + + // Parens are required around join conditions: + // + // join … on (… = …) + | SynExpr.Paren(expr = SynExpr.App _), SyntaxNode.SynExpr(SynExpr.App _) :: SyntaxNode.SynExpr(SynExpr.JoinIn _) :: _ -> + ValueNone + + // Parens are not required around a few anointed expressions after inherit: + // + // inherit T(3) + // inherit T(null) + // inherit T("") + // … + | SynExpr.Paren(expr = AtomicExprAfterType; range = range), SyntaxNode.SynMemberDefn(SynMemberDefn.ImplicitInherit _) :: _ -> + ValueSome range + + // Parens are otherwise required in inherit T(x), etc. + | SynExpr.Paren _, SyntaxNode.SynMemberDefn(SynMemberDefn.ImplicitInherit _) :: _ -> ValueNone + + // We can't remove parens when they're required for fluent calls: + // + // x.M(y).N z + // x.M(y).[z] + // (f x)[z] + // (f(x))[z] + // x.M(y)[z] + | SynExpr.Paren _, SyntaxNode.SynExpr(SynExpr.App _) :: SyntaxNode.SynExpr(SynExpr.DotGet _ | SynExpr.DotIndexedGet _) :: _ + | SynExpr.Paren(expr = SynExpr.App _), + SyntaxNode.SynExpr(SynExpr.App(argExpr = SynExpr.ArrayOrListComputed(isArray = false))) :: _ + | SynExpr.Paren _, + SyntaxNode.SynExpr(SynExpr.App _) :: SyntaxNode.SynExpr(SynExpr.App(argExpr = SynExpr.ArrayOrListComputed(isArray = false))) :: _ -> + ValueNone + + // Parens must stay around binary equals expressions in argument + // position lest they be interpreted as named argument assignments: + // + // o.M((x = y)) + // o.N((x = y), z) + | SynExpr.Paren(expr = SynExpr.Paren(expr = InfixApp(Eq, _))), + SyntaxNode.SynExpr(SynExpr.App(funcExpr = SynExpr.LongIdent _)) :: _ + | SynExpr.Paren(expr = InfixApp(Eq, _)), + SyntaxNode.SynExpr(SynExpr.Paren _) :: SyntaxNode.SynExpr(SynExpr.App(funcExpr = SynExpr.LongIdent _)) :: _ + | SynExpr.Paren(expr = InfixApp(Eq, _)), + SyntaxNode.SynExpr(SynExpr.Tuple(isStruct = false)) :: SyntaxNode.SynExpr(SynExpr.Paren _) :: SyntaxNode.SynExpr(SynExpr.App( + funcExpr = SynExpr.LongIdent _)) :: _ -> ValueNone + + // The :: operator is parsed differently from other symbolic infix operators, + // so we need to give it special treatment. + + // Outer right: + // + // (x) :: xs + // (x * y) :: zs + // … + | SynExpr.Paren(rightParenRange = Some _), + SyntaxNode.SynExpr(SynExpr.Tuple(isStruct = false; exprs = [ SynExpr.Paren _; _ ])) :: (SyntaxNode.SynExpr(SynExpr.App( + isInfix = true)) :: _ as path) -> unnecessaryParentheses expr path + + // Outer left: + // + // x :: (xs) + // x :: (ys @ zs) + // … + | SynExpr.Paren(rightParenRange = Some _) as argExpr, + SyntaxNode.SynExpr(SynExpr.Tuple(isStruct = false; exprs = [ _; SynExpr.Paren _ ])) :: SyntaxNode.SynExpr(SynExpr.App( + isInfix = true) as outer) :: path -> + unnecessaryParentheses + expr + (SyntaxNode.SynExpr(SynExpr.App(ExprAtomicFlag.NonAtomic, false, outer, argExpr, outer.Range)) + :: path) + + // Ordinary nested expressions. + | SynExpr.Paren(expr = inner; leftParenRange = leftParenRange; rightParenRange = Some _ as rightParenRange; range = range), + SyntaxNode.SynExpr outer :: outerPath when not (containsSensitiveIndentation outer.Range.StartColumn range) -> + let dangling expr = + match expr with + | Dangling.Problematic subExpr -> + let parenzedSubExpr = SynExpr.Paren(subExpr, leftParenRange, rightParenRange, range) + + match outer with + | SynExpr.Tuple(exprs = exprs) -> not (obj.ReferenceEquals(subExpr, List.last exprs)) + | InfixApp(_, Left) -> true + | _ -> unnecessaryParentheses parenzedSubExpr outerPath |> ValueOption.isNone + + | _ -> false + + let problematic (exprRange: range) (delimiterRange: range) = + exprRange.EndLine = delimiterRange.EndLine + && exprRange.EndColumn < delimiterRange.StartColumn + + let anyProblematic matchOrTryRange clauses = + let rec loop = + function + | [] -> false + | SynMatchClause(trivia = trivia) :: clauses -> + trivia.BarRange |> Option.exists (problematic matchOrTryRange) + || trivia.ArrowRange |> Option.exists (problematic matchOrTryRange) + || loop clauses + + loop clauses + + match outer, inner with + | ConfusableWithTypeApp, _ -> ValueNone + + | SynExpr.IfThenElse _, Dangling.Sequential _ -> ValueNone + + | SynExpr.IfThenElse(trivia = trivia), Dangling.IfThen ifThenElse when + problematic ifThenElse.Range trivia.ThenKeyword + || trivia.ElseKeyword |> Option.exists (problematic ifThenElse.Range) + -> + ValueNone + + | SynExpr.TryFinally(trivia = trivia), Dangling.Try tryExpr when problematic tryExpr.Range trivia.FinallyKeyword -> + ValueNone + + | SynExpr.Match(clauses = clauses; trivia = { WithKeyword = withKeyword }), Dangling.Match matchOrTry when + problematic matchOrTry.Range withKeyword + || anyProblematic matchOrTry.Range clauses + -> + ValueNone + + | SynExpr.MatchBang(clauses = clauses; trivia = { WithKeyword = withKeyword }), Dangling.Match matchOrTry when + problematic matchOrTry.Range withKeyword + || anyProblematic matchOrTry.Range clauses + -> + ValueNone + + | SynExpr.MatchLambda(matchClauses = clauses), Dangling.Match matchOrTry when anyProblematic matchOrTry.Range clauses -> + ValueNone + + | SynExpr.TryWith(withCases = clauses; trivia = trivia), Dangling.Match matchOrTry when + problematic matchOrTry.Range trivia.WithKeyword + || anyProblematic matchOrTry.Range clauses + -> + ValueNone + + | SynExpr.Sequential(expr1 = SynExpr.Paren(expr = Is inner); expr2 = expr2), Dangling.Problematic _ when + problematic inner.Range expr2.Range + -> + ValueNone + + | SynExpr.Record(copyInfo = Some(SynExpr.Paren(expr = Is inner), _)), Dangling.Problematic _ + | SynExpr.AnonRecd(copyInfo = Some(SynExpr.Paren(expr = Is inner), _)), Dangling.Problematic _ -> ValueNone + + | SynExpr.Record(recordFields = recordFields), Dangling.Problematic _ -> + let rec loop recordFields = + match recordFields with + | [] -> ValueSome range + | SynExprRecordField(expr = Some(SynExpr.Paren(expr = Is inner)); blockSeparator = Some _) :: SynExprRecordField( + fieldName = SynLongIdent(id = id :: _), _) :: _ -> + if problematic inner.Range id.idRange then + ValueNone + else + ValueSome range + | _ :: recordFields -> loop recordFields + + loop recordFields + + | SynExpr.AnonRecd(recordFields = recordFields), Dangling.Problematic _ -> + let rec loop recordFields = + match recordFields with + | [] -> ValueSome range + | (_, Some _blockSeparator, SynExpr.Paren(expr = Is inner)) :: (SynLongIdent(id = id :: _), _, _) :: _ -> + if problematic inner.Range id.idRange then + ValueNone + else + ValueSome range + | _ :: recordFields -> loop recordFields + + loop recordFields + + | SynExpr.Paren _, SynExpr.Typed _ + | SynExpr.Quote _, SynExpr.Typed _ + | SynExpr.AnonRecd _, SynExpr.Typed _ + | SynExpr.Record _, SynExpr.Typed _ + | SynExpr.While(doExpr = SynExpr.Paren(expr = Is inner)), SynExpr.Typed _ + | SynExpr.WhileBang(doExpr = SynExpr.Paren(expr = Is inner)), SynExpr.Typed _ + | SynExpr.For(doBody = Is inner), SynExpr.Typed _ + | SynExpr.ForEach(bodyExpr = Is inner), SynExpr.Typed _ + | SynExpr.Match _, SynExpr.Typed _ + | SynExpr.Do _, SynExpr.Typed _ + | SynExpr.LetOrUse(body = Is inner), SynExpr.Typed _ + | SynExpr.TryWith _, SynExpr.Typed _ + | SynExpr.TryFinally _, SynExpr.Typed _ -> ValueSome range + | _, SynExpr.Typed _ -> ValueNone + + | OuterBinaryExpr inner (outerPrecedence, side), InnerBinaryExpr innerPrecedence -> + let ambiguous = + match Precedence.compare outerPrecedence innerPrecedence with + | 0 -> + match side, Assoc.ofPrecedence innerPrecedence with + | Non, _ + | _, Non + | Left, Right -> true + | Right, Right + | Left, Left -> false + | Right, Left -> + not (Precedence.sameKind outerPrecedence innerPrecedence) + || match innerPrecedence with + | Div + | Mod + | Sub -> true + | _ -> false + + | c -> c > 0 + + if ambiguous || dangling inner then + ValueNone + else + ValueSome range + + | OuterBinaryExpr inner (_, Right), (SynExpr.Sequential _ | SynExpr.LetOrUse(trivia = { InKeyword = None })) -> ValueNone + | OuterBinaryExpr inner (_, Right), inner -> if dangling inner then ValueNone else ValueSome range + + // new T(expr) + | SynExpr.New _, AtomicExprAfterType -> ValueSome range + | SynExpr.New _, _ -> ValueNone + + // { inherit T(expr); … } + | SynExpr.Record(baseInfo = Some(_, SynExpr.Paren(expr = Is inner), _, _, _)), AtomicExprAfterType -> ValueSome range + | SynExpr.Record(baseInfo = Some(_, SynExpr.Paren(expr = Is inner), _, _, _)), _ -> ValueNone + + | _, SynExpr.Paren _ + | _, SynExpr.Quote _ + | _, SynExpr.Const _ + | _, SynExpr.Tuple(isStruct = true) + | _, SynExpr.AnonRecd _ + | _, SynExpr.ArrayOrList _ + | _, SynExpr.Record _ + | _, SynExpr.ObjExpr _ + | _, SynExpr.ArrayOrListComputed _ + | _, SynExpr.ComputationExpr _ + | _, SynExpr.TypeApp _ + | _, SynExpr.Ident _ + | _, SynExpr.LongIdent _ + | _, SynExpr.DotGet _ + | _, SynExpr.DotLambda _ + | _, SynExpr.DotIndexedGet _ + | _, SynExpr.Null _ + | _, SynExpr.InterpolatedString _ + + | SynExpr.Paren _, _ + | SynExpr.Quote _, _ + | SynExpr.Typed _, _ + | SynExpr.AnonRecd _, _ + | SynExpr.Record _, _ + | SynExpr.ObjExpr _, _ + | SynExpr.While _, _ + | SynExpr.WhileBang _, _ + | SynExpr.For _, _ + | SynExpr.ForEach _, _ + | SynExpr.Lambda _, _ + | SynExpr.MatchLambda _, _ + | SynExpr.Match _, _ + | SynExpr.MatchBang _, _ + | SynExpr.LetOrUse _, _ + | SynExpr.LetOrUseBang _, _ + | SynExpr.Sequential _, _ + | SynExpr.Do _, _ + | SynExpr.DoBang _, _ + | SynExpr.IfThenElse _, _ + | SynExpr.TryWith _, _ + | SynExpr.TryFinally _, _ + | SynExpr.ComputationExpr _, _ + | SynExpr.InterpolatedString _, _ -> ValueSome range + + | _ -> ValueNone + + | _ -> ValueNone + + module SynPat = + let (|Last|) = List.last + + /// Matches if any pattern in the given list is a SynPat.Typed. + [] + let (|AnyTyped|_|) pats = + if + pats + |> List.exists (function + | SynPat.Typed _ -> true + | _ -> false) + then + ValueSome AnyTyped + else + ValueNone + + /// Matches if any member in the given list is an inherit + /// or implementation of an interface with generic type args. + [] + let (|AnyGenericInheritOrInterfaceImpl|_|) members = + if + members + |> List.exists (function + | SynMemberDefn.ImplicitInherit(inheritType = SynType.App(typeArgs = _ :: _)) + | SynMemberDefn.ImplicitInherit(inheritType = SynType.LongIdentApp(typeArgs = _ :: _)) + | SynMemberDefn.Interface(interfaceType = SynType.App(typeArgs = _ :: _)) + | SynMemberDefn.Interface(interfaceType = SynType.LongIdentApp(typeArgs = _ :: _)) -> true + | _ -> false) + then + ValueSome AnyGenericInheritOrInterfaceImpl + else + ValueNone + + /// Matches the rightmost potentially dangling nested pattern. + let rec (|Rightmost|) pat = + match pat with + | SynPat.Or(rhsPat = Rightmost pat) + | SynPat.ListCons(rhsPat = Rightmost pat) + | SynPat.As(rhsPat = Rightmost pat) + | SynPat.Ands(pats = Last(Rightmost pat)) + | SynPat.Tuple(isStruct = false; elementPats = Last(Rightmost pat)) -> pat + | pat -> pat + + /// Matches if the given pattern is atomic. + [] + let (|Atomic|_|) pat = + match pat with + | SynPat.Named _ + | SynPat.Wild _ + | SynPat.Paren _ + | SynPat.Tuple(isStruct = true) + | SynPat.Record _ + | SynPat.ArrayOrList _ + | SynPat.Const _ + | SynPat.LongIdent(argPats = SynArgPats.Pats []) + | SynPat.Null _ + | SynPat.QuoteExpr _ -> ValueSome Atomic + | _ -> ValueNone + + /// If the given pattern is a parenthesized pattern and the parentheses + /// are unnecessary in the given context, returns the unnecessary parentheses' range. + let unnecessaryParentheses pat path = + match pat, path with + // Parens are needed in: + // + // let (Pattern …) = … + // let (x: …, y…) = … + // let (x: …), (y: …) = … + // let! (x: …) = … + // and! (x: …) = … + // use! (x: …) = … + // _.member M(x: …) = … + // match … with (x: …) -> … + // match … with (x, y: …) -> … + // function (x: …) -> … + // fun (x, y, …) -> … + // fun (x: …) -> … + // fun (Pattern …) -> … + | SynPat.Paren(SynPat.Typed _, _), SyntaxNode.SynPat(Rightmost rightmost) :: SyntaxNode.SynMatchClause _ :: _ when + obj.ReferenceEquals(pat, rightmost) + -> + ValueNone + | SynPat.Paren(Rightmost(SynPat.Typed _), _), SyntaxNode.SynMatchClause _ :: _ + | SynPat.Paren(SynPat.Typed _, _), SyntaxNode.SynExpr(SynExpr.LetOrUseBang _) :: _ + | SynPat.Paren(SynPat.Typed _, _), + SyntaxNode.SynPat(SynPat.Tuple(isStruct = false)) :: SyntaxNode.SynExpr(SynExpr.LetOrUseBang _) :: _ + | SynPat.Paren(SynPat.Tuple(isStruct = false; elementPats = AnyTyped), _), SyntaxNode.SynExpr(SynExpr.LetOrUseBang _) :: _ + | SynPat.Paren(SynPat.Typed _, _), SyntaxNode.SynPat(SynPat.Tuple(isStruct = false)) :: SyntaxNode.SynBinding _ :: _ + | SynPat.Paren(SynPat.Tuple(isStruct = false; elementPats = AnyTyped), _), SyntaxNode.SynBinding _ :: _ + | SynPat.Paren(SynPat.LongIdent(argPats = SynArgPats.Pats(_ :: _)), _), SyntaxNode.SynBinding _ :: _ + | SynPat.Paren(SynPat.LongIdent(argPats = SynArgPats.Pats(_ :: _)), _), SyntaxNode.SynExpr(SynExpr.Lambda _) :: _ + | SynPat.Paren(SynPat.Tuple(isStruct = false), _), SyntaxNode.SynExpr(SynExpr.Lambda(parsedData = Some _)) :: _ + | SynPat.Paren(SynPat.Typed _, _), SyntaxNode.SynExpr(SynExpr.Lambda(parsedData = Some _)) :: _ -> ValueNone + + // () is parsed as this. + | SynPat.Paren(SynPat.Const(SynConst.Unit, _), _), _ -> ValueNone + + // (()) is required when overriding a generic member + // where unit is the generic type argument: + // + // type C<'T> = abstract M : 'T -> unit + // let _ = { new C with override _.M (()) = () } + | SynPat.Paren(SynPat.Paren(SynPat.Const(SynConst.Unit, _), _), _), + SyntaxNode.SynPat(SynPat.LongIdent _) :: SyntaxNode.SynBinding _ :: SyntaxNode.SynExpr(SynExpr.ObjExpr( + objType = SynType.App(typeArgs = _ :: _) | SynType.LongIdentApp(typeArgs = _ :: _))) :: _ + | SynPat.Paren(SynPat.Paren(SynPat.Const(SynConst.Unit, _), _), _), + SyntaxNode.SynPat(SynPat.LongIdent _) :: SyntaxNode.SynBinding _ :: SyntaxNode.SynMemberDefn _ :: SyntaxNode.SynTypeDefn(SynTypeDefn( + typeRepr = SynTypeDefnRepr.ObjectModel(members = AnyGenericInheritOrInterfaceImpl))) :: _ -> ValueNone + + // Parens are required around the atomic argument of + // any additional `new` constructor that is not the last. + // + // type T … = + // new (x) = … + // new (x, y) = … + | SynPat.Paren(Atomic, range), + SyntaxNode.SynPat(SynPat.LongIdent(longDotId = SynLongIdent(id = [ Ident "new" ]))) :: SyntaxNode.SynBinding _ :: SyntaxNode.SynMemberDefn _ :: SyntaxNode.SynTypeDefn(SynTypeDefn( + typeRepr = SynTypeDefnRepr.ObjectModel(members = members))) :: _ -> + let lastNew = + (ValueNone, members) + ||> List.fold (fun lastNew ``member`` -> + match ``member`` with + | SynMemberDefn.Member( + memberDefn = SynBinding(headPat = SynPat.LongIdent(longDotId = SynLongIdent(id = [ Ident "new" ])))) -> + ValueSome ``member`` + | _ -> lastNew) + + match lastNew with + | ValueSome(SynMemberDefn.Member(memberDefn = SynBinding(headPat = SynPat.LongIdent(argPats = SynArgPats.Pats [ Is pat ])))) -> + ValueSome range + | _ -> ValueNone + + // Parens are otherwise never needed in these cases: + // + // let (x: …) = … + // for (…) in (…) do … + // let! (…) = … + // and! (…) = … + // use! (…) = … + // match … with (…) -> … + // function (…) -> … + // function (Pattern …) -> … + // fun (x) -> … + | SynPat.Paren(_, range), SyntaxNode.SynBinding _ :: _ + | SynPat.Paren(_, range), SyntaxNode.SynExpr(SynExpr.ForEach _) :: _ + | SynPat.Paren(_, range), SyntaxNode.SynExpr(SynExpr.LetOrUseBang _) :: _ + | SynPat.Paren(_, range), SyntaxNode.SynMatchClause _ :: _ + | SynPat.Paren(Atomic, range), SyntaxNode.SynExpr(SynExpr.Lambda(parsedData = Some _)) :: _ -> ValueSome range + + // Nested patterns. + | SynPat.Paren(inner, range), SyntaxNode.SynPat outer :: _ -> + match outer, inner with + // (x :: xs) :: ys + // (x, xs) :: ys + | SynPat.ListCons(lhsPat = SynPat.Paren(pat = Is inner)), SynPat.ListCons _ + | SynPat.ListCons(lhsPat = SynPat.Paren(pat = Is inner)), SynPat.Tuple(isStruct = false) -> ValueNone + + // A as (B | C) + // A as (B & C) + // x as (y, z) + // xs as (y :: zs) + | SynPat.As(rhsPat = SynPat.Paren(pat = Is inner)), + (SynPat.Or _ | SynPat.Ands _ | SynPat.Tuple(isStruct = false) | SynPat.ListCons _) -> ValueNone + + // (A | B) :: xs + // (A & B) :: xs + // (x as y) :: xs + | SynPat.ListCons _, SynPat.Or _ + | SynPat.ListCons _, SynPat.Ands _ + | SynPat.ListCons _, SynPat.As _ -> ValueNone + + // Pattern (x = (…)) + | SynPat.LongIdent(argPats = SynArgPats.NamePatPairs _), _ -> ValueSome range + + // Pattern (x : int) + // Pattern ([] x) + // Pattern (:? int) + // Pattern (A :: _) + // Pattern (A | B) + // Pattern (A & B) + // Pattern (A as B) + // Pattern (A, B) + // Pattern1 (Pattern2 (x = A)) + // Pattern1 (Pattern2 x y) + | SynPat.LongIdent _, SynPat.Typed _ + | SynPat.LongIdent _, SynPat.Attrib _ + | SynPat.LongIdent _, SynPat.IsInst _ + | SynPat.LongIdent _, SynPat.ListCons _ + | SynPat.LongIdent _, SynPat.Or _ + | SynPat.LongIdent _, SynPat.Ands _ + | SynPat.LongIdent _, SynPat.As _ + | SynPat.LongIdent _, SynPat.Tuple(isStruct = false) + | SynPat.LongIdent _, SynPat.LongIdent(argPats = SynArgPats.NamePatPairs _) + | SynPat.LongIdent _, SynPat.LongIdent(argPats = SynArgPats.Pats(_ :: _)) + + // A | (B as C) + // A & (B as C) + // A, (B as C) + | SynPat.Or _, SynPat.As _ + | SynPat.Ands _, SynPat.As _ + | SynPat.Tuple _, SynPat.As _ + + // x, (y, z) + // x & (y, z) + // (x, y) & z + | SynPat.Tuple _, SynPat.Tuple(isStruct = false) + | SynPat.Ands _, SynPat.Tuple(isStruct = false) + + // A, (B | C) + // A & (B | C) + | SynPat.Tuple _, SynPat.Or _ + | SynPat.Ands _, SynPat.Or _ -> ValueNone + + // (x : int) & y + // x & (y : int) & z + | SynPat.Ands(Last(SynPat.Paren(pat = Is inner)), _), SynPat.Typed _ -> ValueSome range + | SynPat.Ands _, SynPat.Typed _ -> ValueNone + + | _, SynPat.Const _ + | _, SynPat.Wild _ + | _, SynPat.Named _ + | _, SynPat.Typed _ + | _, SynPat.LongIdent(argPats = SynArgPats.Pats []) + | _, SynPat.Tuple(isStruct = true) + | _, SynPat.Paren _ + | _, SynPat.ArrayOrList _ + | _, SynPat.Record _ + | _, SynPat.Null _ + | _, SynPat.OptionalVal _ + | _, SynPat.IsInst _ + | _, SynPat.QuoteExpr _ + + | SynPat.Or _, _ + | SynPat.ListCons _, _ + | SynPat.Ands _, _ + | SynPat.As _, _ + | SynPat.LongIdent _, _ + | SynPat.Tuple _, _ + | SynPat.Paren _, _ + | SynPat.ArrayOrList _, _ + | SynPat.Record _, _ -> ValueSome range + + | _ -> ValueNone + + | _ -> ValueNone + + let getUnnecessaryParentheses (getSourceLineStr: int -> string) (parsedInput: ParsedInput) : Async = + async { + let ranges = HashSet Range.comparer + + let visitor = + { new SyntaxVisitorBase() with + member _.VisitExpr(path, _, defaultTraverse, expr) = + SynExpr.unnecessaryParentheses getSourceLineStr expr path + |> ValueOption.iter (ranges.Add >> ignore) + + defaultTraverse expr + + member _.VisitPat(path, defaultTraverse, pat) = + SynPat.unnecessaryParentheses pat path + |> ValueOption.iter (ranges.Add >> ignore) + + defaultTraverse pat + } + + SyntaxTraversal.traverseAll visitor parsedInput + return ranges + } diff --git a/src/fcs-fable/src/Compiler/Service/ServiceAnalysis.fsi b/src/fcs-fable/src/Compiler/Service/ServiceAnalysis.fsi index 672cf08875..836bfce0c5 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceAnalysis.fsi +++ b/src/fcs-fable/src/Compiler/Service/ServiceAnalysis.fsi @@ -3,6 +3,7 @@ namespace FSharp.Compiler.EditorServices open FSharp.Compiler.CodeAnalysis +open FSharp.Compiler.Syntax open FSharp.Compiler.Text module public UnusedOpens = @@ -31,3 +32,14 @@ module public UnusedDeclarations = /// Get all unused declarations in a file val getUnusedDeclarations: checkFileResults: FSharpCheckFileResults * isScriptFile: bool -> Async> + +module public UnnecessaryParentheses = + + /// Gets the ranges of all unnecessary pairs of parentheses in a file. + /// + /// Note that this may include pairs of nested ranges each of whose + /// lack of necessity depends on the other's presence, such + /// that it is valid to remove either set of parentheses but not both, e.g.: + /// + /// (x.M(y)).N → (x.M y).N ↮ x.M(y).N + val getUnnecessaryParentheses: getSourceLineStr: (int -> string) -> parsedInput: ParsedInput -> Async diff --git a/src/fcs-fable/src/Compiler/Service/ServiceDeclarationLists.fs b/src/fcs-fable/src/Compiler/Service/ServiceDeclarationLists.fs index be9ad7d709..90b83fd377 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceDeclarationLists.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceDeclarationLists.fs @@ -530,7 +530,7 @@ module DeclarationListHelpers = let FormatStructuredDescriptionOfItem isDecl infoReader ad m denv item symbol width = DiagnosticsScope.Protect m (fun () -> FormatItemDescriptionToToolTipElement isDecl infoReader ad m denv item symbol width) - (fun err -> ToolTipElement.CompositionError err) + ToolTipElement.CompositionError /// Represents one parameter for one method (or other item) in a group. [] @@ -739,8 +739,7 @@ module internal DescriptionListsImpl = // This is good enough as we don't provide ways to display info for the second curried argument let firstCurriedParamDatas = firstCurriedArgInfo - |> List.map ParamNameAndType.FromArgInfo - |> List.map (fun (ParamNameAndType(nmOpt, pty)) -> ParamData(false, false, false, NotOptional, NoCallerInfo, nmOpt, ReflectedArgInfo.None, pty)) + |> List.map (ParamNameAndType.FromArgInfo >> fun (ParamNameAndType(nmOpt, pty)) -> ParamData(false, false, false, NotOptional, NoCallerInfo, nmOpt, ReflectedArgInfo.None, pty)) // Adjust the return type so it only strips the first argument let curriedRetTy = @@ -1128,6 +1127,7 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i ) (0, 0, []) if verbose then dprintf "service.ml: mkDecls: %d found groups after filtering\n" (List.length items); + let supportsPreferExtsMethodsOverProperty = denv.g.langVersion.SupportsFeature Features.LanguageFeature.PreferExtensionMethodOverPlainProperty // Group by full name for unresolved items and by display name for resolved ones. let decls = @@ -1144,22 +1144,79 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i | [||] -> u.DisplayName | ns -> (ns |> String.concat ".") + "." + u.DisplayName | None -> x.Item.DisplayName) - - |> List.map (fun (_, items) -> - let item = items.Head - let textInDeclList = + |> List.map ( + let textInDeclList item = match item.Unresolved with | Some u -> u.DisplayName | None -> item.Item.DisplayNameCore - let textInCode = + let textInCode (item: CompletionItem) = match item.Item with | Item.TypeVar (name, typar) -> (if typar.StaticReq = Syntax.TyparStaticReq.None then "'" else " ^") + name | _ -> match item.Unresolved with | Some u -> u.DisplayName | None -> item.Item.DisplayName - textInDeclList, textInCode, items) - + if not supportsPreferExtsMethodsOverProperty then + // we don't pay the cost of filtering specific to RFC-1137 + // nor risk a change in behaviour for the intellisense item list + // if the feature is disabled + fun (_, items) -> + let item = items.Head + [textInDeclList item, textInCode item, items] + else + // RFC-1137 shenanigans: + // due to not desiring to merge Property and extension Method bearing same name, + // but still merging extension method if it tries to shadow other stuff than a Property + // we proceed with a pre-scan to see if we hit the particular case, in which case we partition + // items to be split and those that were initially remaining grouped. + // If we don't hit the specific case, or have a single entry, we keep the same logic as originally + // N.B: due to the logic returning 1 to N instead of 1, the next stage of the pipeline is List.concat + // introduced for this RFC + let hasBothPropertiesAndExtensionMethods items = + let rec inner hasProperty hasExtensionMethod items = + if hasProperty && hasExtensionMethod then + true + else + match items with + | [] -> hasProperty && hasExtensionMethod + | item :: tail when item.Kind = CompletionItemKind.Property -> inner true hasExtensionMethod tail + | item :: tail when item.Kind = CompletionItemKind.Method(isExtension=true) -> inner hasProperty true tail + | _ :: tail -> inner hasProperty hasExtensionMethod tail + inner false false items + function + | _, ([_] as items) + | _,items when not (hasBothPropertiesAndExtensionMethods items) -> + let item = items.Head + [textInDeclList item, textInCode item, items] + | _, items (* RFC-1137 we have both property and extension method ...*) -> + let toSplit, together = + items + |> List.partition + (fun item -> + match item.Kind with + | CompletionItemKind.Property | CompletionItemKind.Method(isExtension=true) -> true + | _ -> false + ) + [ + let rec createSublists list = + match list with + | [] -> [] + | _ :: tail -> list :: createSublists tail + + // we use createSublists here so the `items` sent down the + // pipeline have their first element being the actual + // item, in order for the glyph to be the correct one + // notice how the later stage uses `GlyphOfItem(denv,items.Head)` + for items in createSublists toSplit do + let item = items.Head + textInDeclList item, textInCode item, items + if not together.IsEmpty then + let item = together.Head + textInDeclList item, textInCode item, items + ] + ) + // RFC-1137: concat previous result + |> List.concat // Filter out operators, active patterns (as values) |> List.filter (fun (_textInDeclList, textInCode, items) -> not (isOperatorItem textInCode items) && diff --git a/src/fcs-fable/src/Compiler/Service/ServiceInterfaceStubGenerator.fs b/src/fcs-fable/src/Compiler/Service/ServiceInterfaceStubGenerator.fs index cc56ba4149..e02df4c7da 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceInterfaceStubGenerator.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceInterfaceStubGenerator.fs @@ -96,28 +96,28 @@ type InterfaceData = member x.Range = match x with - | InterfaceData.Interface (ty, _) -> ty.Range - | InterfaceData.ObjExpr (ty, _) -> ty.Range + | InterfaceData.Interface(ty, _) -> ty.Range + | InterfaceData.ObjExpr(ty, _) -> ty.Range member x.TypeParameters = match x with - | InterfaceData.Interface (StripParenTypes ty, _) - | InterfaceData.ObjExpr (StripParenTypes ty, _) -> + | InterfaceData.Interface(StripParenTypes ty, _) + | InterfaceData.ObjExpr(StripParenTypes ty, _) -> let rec (|RationalConst|) = function - | SynRationalConst.Integer (value = i) -> string i - | SynRationalConst.Rational (numerator = numerator; denominator = denominator) -> sprintf "%i/%i" numerator denominator - | SynRationalConst.Negate (rationalConst = (RationalConst s)) -> sprintf "- %s" s - | SynRationalConst.Paren (rationalConst = (RationalConst s)) -> sprintf "(%s)" s + | SynRationalConst.Integer(value = i) -> string i + | SynRationalConst.Rational(numerator = numerator; denominator = denominator) -> sprintf "%i/%i" numerator denominator + | SynRationalConst.Negate(rationalConst = (RationalConst s)) -> sprintf "- %s" s + | SynRationalConst.Paren(rationalConst = (RationalConst s)) -> sprintf "(%s)" s let rec (|TypeIdent|_|) = function - | SynType.Var (SynTypar (s, req, _), _) -> + | SynType.Var(SynTypar(s, req, _), _) -> match req with | TyparStaticReq.None -> Some("'" + s.idText) | TyparStaticReq.HeadType -> Some("^" + s.idText) - | SynType.LongIdent (SynLongIdent (xs, _, _)) -> xs |> Seq.map (fun x -> x.idText) |> String.concat "." |> Some - | SynType.App (t, _, ts, _, _, isPostfix, _) -> + | SynType.LongIdent(SynLongIdent(xs, _, _)) -> xs |> Seq.map (fun x -> x.idText) |> String.concat "." |> Some + | SynType.App(t, _, ts, _, _, isPostfix, _) -> match t, ts with | TypeIdent typeName, [] -> Some typeName | TypeIdent typeName, [ TypeIdent typeArg ] -> @@ -136,15 +136,15 @@ type InterfaceData = //debug "Unsupported case with %A and %A" t ts None | SynType.Anon _ -> Some "_" - | SynType.AnonRecd (_, ts, _) -> Some(ts |> Seq.choose (snd >> (|TypeIdent|_|)) |> String.concat "; ") - | SynType.Array (dimension, TypeIdent typeName, _) -> Some(sprintf "%s [%s]" typeName (String(',', dimension - 1))) - | SynType.MeasurePower (TypeIdent typeName, RationalConst power, _) -> Some(sprintf "%s^%s" typeName power) - | SynType.Paren (TypeIdent typeName, _) -> Some typeName + | SynType.AnonRecd(_, ts, _) -> Some(ts |> Seq.choose (snd >> (|TypeIdent|_|)) |> String.concat "; ") + | SynType.Array(dimension, TypeIdent typeName, _) -> Some(sprintf "%s [%s]" typeName (String(',', dimension - 1))) + | SynType.MeasurePower(TypeIdent typeName, RationalConst power, _) -> Some(sprintf "%s^%s" typeName power) + | SynType.Paren(TypeIdent typeName, _) -> Some typeName | _ -> None match ty with - | SynType.App (_, _, ts, _, _, _, _) - | SynType.LongIdentApp (_, _, _, ts, _, _, _) -> ts |> Seq.choose (|TypeIdent|_|) |> Seq.toArray + | SynType.App(_, _, ts, _, _, _, _) + | SynType.LongIdentApp(_, _, _, ts, _, _, _) -> ts |> Seq.choose (|TypeIdent|_|) |> Seq.toArray | _ -> [||] module InterfaceStubGenerator = @@ -266,7 +266,7 @@ module InterfaceStubGenerator = let argInfos, retType = match argInfos, v.IsPropertyGetterMethod, v.IsPropertySetterMethod with - | [ AllAndLast (args, last) ], _, true -> [ args ], Some last.Type + | [ AllAndLast(args, last) ], _, true -> [ args ], Some last.Type | [ [] ], true, _ -> [], Some retType | _, _, _ -> argInfos, Some retType @@ -390,7 +390,7 @@ module InterfaceStubGenerator = writer.Unindent ctx.Indentation match m with - | MemberInfo.PropertyGetSet (getter, setter) -> + | MemberInfo.PropertyGetSet(getter, setter) -> let usage, modifiers, getterArgInfos, retType = preprocess ctx getter let closeDeclaration = closeDeclaration retType let writeImplementation = writeImplementation ctx @@ -513,7 +513,7 @@ module InterfaceStubGenerator = let internal (|TypeOfMember|_|) (m: FSharpMemberOrFunctionOrValue) = match m.FullTypeSafe with - | Some (MemberFunctionType ty) when m.IsProperty && m.DeclaringEntity.IsSome && m.DeclaringEntity.Value.IsFSharp -> Some ty + | Some(MemberFunctionType ty) when m.IsProperty && m.DeclaringEntity.IsSome && m.DeclaringEntity.Value.IsFSharp -> Some ty | Some ty -> Some ty | None -> None @@ -549,7 +549,7 @@ module InterfaceStubGenerator = let internal (|LongIdentPattern|_|) = function - | SynPat.LongIdent(longDotId = SynLongIdent (xs, _, _)) -> + | SynPat.LongIdent(longDotId = SynLongIdent(xs, _, _)) -> // let (name, range) = xs |> List.map (fun x -> x.idText, x.idRange) |> List.last let last = List.last xs Some(last.idText, last.idRange) @@ -560,21 +560,21 @@ module InterfaceStubGenerator = // so we use 'get_' and 'set_' prefix to ensure corresponding symbols are retrieved correctly. let internal (|MemberNameAndRange|_|) = function - | SynBinding (valData = SynValData(memberFlags = Some mf); headPat = LongIdentPattern (name, range)) when + | SynBinding(valData = SynValData(memberFlags = Some mf); headPat = LongIdentPattern(name, range)) when mf.MemberKind = SynMemberKind.PropertyGet -> if name.StartsWithOrdinal("get_") then Some(name, range) else Some("get_" + name, range) - | SynBinding (valData = SynValData(memberFlags = Some mf); headPat = LongIdentPattern (name, range)) when + | SynBinding(valData = SynValData(memberFlags = Some mf); headPat = LongIdentPattern(name, range)) when mf.MemberKind = SynMemberKind.PropertySet -> if name.StartsWithOrdinal("set_") then Some(name, range) else Some("set_" + name, range) - | SynBinding(headPat = LongIdentPattern (name, range)) -> Some(name, range) + | SynBinding(headPat = LongIdentPattern(name, range)) -> Some(name, range) | _ -> None /// Get associated member names and ranges @@ -582,18 +582,18 @@ module InterfaceStubGenerator = /// positions of 'member', which indicate the indentation for generating new members let GetMemberNameAndRanges interfaceData = match interfaceData with - | InterfaceData.Interface (_, None) -> [] - | InterfaceData.Interface (_, Some memberDefns) -> + | InterfaceData.Interface(_, None) -> [] + | InterfaceData.Interface(_, Some memberDefns) -> memberDefns |> Seq.collect (function - | SynMemberDefn.Member (binding, _) -> [ binding ] - | SynMemberDefn.GetSetMember (Some getBinding, Some setBinding, _, _) -> [ getBinding; setBinding ] - | SynMemberDefn.GetSetMember (Some binding, None, _, _) - | SynMemberDefn.GetSetMember (None, Some binding, _, _) -> [ binding ] + | SynMemberDefn.Member(binding, _) -> [ binding ] + | SynMemberDefn.GetSetMember(Some getBinding, Some setBinding, _, _) -> [ getBinding; setBinding ] + | SynMemberDefn.GetSetMember(Some binding, None, _, _) + | SynMemberDefn.GetSetMember(None, Some binding, _, _) -> [ binding ] | _ -> []) |> Seq.choose (|MemberNameAndRange|_|) |> Seq.toList - | InterfaceData.ObjExpr (_, bindings) -> List.choose (|MemberNameAndRange|_|) bindings + | InterfaceData.ObjExpr(_, bindings) -> List.choose (|MemberNameAndRange|_|) bindings let internal normalizeEventName (m: FSharpMemberOrFunctionOrValue) = let name = m.DisplayName @@ -762,7 +762,7 @@ module InterfaceStubGenerator = let rec walkImplFileInput (file: ParsedImplFileInput) = List.tryPick walkSynModuleOrNamespace file.Contents - and walkSynModuleOrNamespace (SynModuleOrNamespace (decls = decls; range = range)) = + and walkSynModuleOrNamespace (SynModuleOrNamespace(decls = decls; range = range)) = if not <| rangeContainsPos range pos then None else @@ -773,18 +773,18 @@ module InterfaceStubGenerator = None else match decl with - | SynModuleDecl.Exception (SynExceptionDefn (_, _, synMembers, _), _) -> List.tryPick walkSynMemberDefn synMembers - | SynModuleDecl.Let (_isRecursive, bindings, _range) -> List.tryPick walkBinding bindings - | SynModuleDecl.ModuleAbbrev (_lhs, _rhs, _range) -> None - | SynModuleDecl.NamespaceFragment (fragment) -> walkSynModuleOrNamespace fragment - | SynModuleDecl.NestedModule (decls = modules) -> List.tryPick walkSynModuleDecl modules - | SynModuleDecl.Types (typeDefs, _range) -> List.tryPick walkSynTypeDefn typeDefs - | SynModuleDecl.Expr (expr, _) -> walkExpr expr + | SynModuleDecl.Exception(SynExceptionDefn(_, _, synMembers, _), _) -> List.tryPick walkSynMemberDefn synMembers + | SynModuleDecl.Let(_isRecursive, bindings, _range) -> List.tryPick walkBinding bindings + | SynModuleDecl.ModuleAbbrev(_lhs, _rhs, _range) -> None + | SynModuleDecl.NamespaceFragment(fragment) -> walkSynModuleOrNamespace fragment + | SynModuleDecl.NestedModule(decls = modules) -> List.tryPick walkSynModuleDecl modules + | SynModuleDecl.Types(typeDefs, _range) -> List.tryPick walkSynTypeDefn typeDefs + | SynModuleDecl.Expr(expr, _) -> walkExpr expr | SynModuleDecl.Attributes _ | SynModuleDecl.HashDirective _ | SynModuleDecl.Open _ -> None - and walkSynTypeDefn (SynTypeDefn (typeRepr = representation; members = members; range = range)) = + and walkSynTypeDefn (SynTypeDefn(typeRepr = representation; members = members; range = range)) = if not <| rangeContainsPos range pos then None else @@ -796,8 +796,8 @@ module InterfaceStubGenerator = None else match typeDefnRepr with - | SynTypeDefnRepr.ObjectModel (_kind, members, _range) -> List.tryPick walkSynMemberDefn members - | SynTypeDefnRepr.Simple (_repr, _range) -> None + | SynTypeDefnRepr.ObjectModel(_kind, members, _range) -> List.tryPick walkSynMemberDefn members + | SynTypeDefnRepr.Simple(_repr, _range) -> None | SynTypeDefnRepr.Exception _ -> None and walkSynMemberDefn (memberDefn: SynMemberDefn) = @@ -806,50 +806,50 @@ module InterfaceStubGenerator = else match memberDefn with | SynMemberDefn.AbstractSlot _ -> None - | SynMemberDefn.AutoProperty (synExpr = expr) -> walkExpr expr - | SynMemberDefn.Interface (interfaceType = interfaceType; members = members) -> + | SynMemberDefn.AutoProperty(synExpr = expr) -> walkExpr expr + | SynMemberDefn.Interface(interfaceType = interfaceType; members = members) -> if rangeContainsPos interfaceType.Range pos then Some(InterfaceData.Interface(interfaceType, members)) else Option.bind (List.tryPick walkSynMemberDefn) members - | SynMemberDefn.Member (binding, _range) -> walkBinding binding - | SynMemberDefn.GetSetMember (getBinding, setBinding, _, _) -> + | SynMemberDefn.Member(binding, _range) -> walkBinding binding + | SynMemberDefn.GetSetMember(getBinding, setBinding, _, _) -> match getBinding, setBinding with | None, None -> None | Some binding, None | None, Some binding -> walkBinding binding | Some getBinding, Some setBinding -> walkBinding getBinding |> Option.orElseWith (fun () -> walkBinding setBinding) - | SynMemberDefn.NestedType (typeDef, _access, _range) -> walkSynTypeDefn typeDef + | SynMemberDefn.NestedType(typeDef, _access, _range) -> walkSynTypeDefn typeDef | SynMemberDefn.ValField _ -> None - | SynMemberDefn.LetBindings (bindings, _isStatic, _isRec, _range) -> List.tryPick walkBinding bindings + | SynMemberDefn.LetBindings(bindings, _isStatic, _isRec, _range) -> List.tryPick walkBinding bindings | SynMemberDefn.Open _ | SynMemberDefn.ImplicitCtor _ | SynMemberDefn.Inherit _ -> None - | SynMemberDefn.ImplicitInherit (_, expr, _, _) -> walkExpr expr + | SynMemberDefn.ImplicitInherit(_, expr, _, _) -> walkExpr expr - and walkBinding (SynBinding (expr = expr)) = walkExpr expr + and walkBinding (SynBinding(expr = expr)) = walkExpr expr and walkExpr expr = if not <| rangeContainsPos expr.Range pos then None else match expr with - | SynExpr.Quote (synExpr1, _, synExpr2, _, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] + | SynExpr.Quote(synExpr1, _, synExpr2, _, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] - | SynExpr.Const (_synConst, _range) -> None + | SynExpr.Const(_synConst, _range) -> None - | SynExpr.Paren (synExpr, _, _, _parenRange) -> walkExpr synExpr - | SynExpr.Typed (synExpr, _synType, _range) -> walkExpr synExpr + | SynExpr.Paren(synExpr, _, _, _parenRange) -> walkExpr synExpr + | SynExpr.Typed(synExpr, _synType, _range) -> walkExpr synExpr - | SynExpr.Tuple (_, synExprList, _, _range) - | SynExpr.ArrayOrList (_, synExprList, _range) -> List.tryPick walkExpr synExprList + | SynExpr.Tuple(_, synExprList, _, _range) + | SynExpr.ArrayOrList(_, synExprList, _range) -> List.tryPick walkExpr synExprList - | SynExpr.Record (_inheritOpt, _copyOpt, fields, _range) -> - List.tryPick (fun (SynExprRecordField (expr = e)) -> Option.bind walkExpr e) fields + | SynExpr.Record(_inheritOpt, _copyOpt, fields, _range) -> + List.tryPick (fun (SynExprRecordField(expr = e)) -> Option.bind walkExpr e) fields - | SynExpr.New (_, _synType, synExpr, _range) -> walkExpr synExpr + | SynExpr.New(_, _synType, synExpr, _range) -> walkExpr synExpr - | SynExpr.ObjExpr (objType = ty; argOptions = baseCallOpt; bindings = binds; members = ms; extraImpls = ifaces) -> + | SynExpr.ObjExpr(objType = ty; argOptions = baseCallOpt; bindings = binds; members = ms; extraImpls = ifaces) -> let binds = unionBindingAndMembers binds ms match baseCallOpt with @@ -858,7 +858,7 @@ module InterfaceStubGenerator = Some(InterfaceData.ObjExpr(ty, binds)) else ifaces - |> List.tryPick (fun (SynInterfaceImpl (interfaceTy = ty; bindings = binds; range = range)) -> + |> List.tryPick (fun (SynInterfaceImpl(interfaceTy = ty; bindings = binds; range = range)) -> if rangeContainsPos range pos then Some(InterfaceData.ObjExpr(ty, binds)) else @@ -867,99 +867,99 @@ module InterfaceStubGenerator = // Ignore object expressions of normal objects None - | SynExpr.While (_spWhile, synExpr1, synExpr2, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] + | SynExpr.While(_spWhile, synExpr1, synExpr2, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] - | SynExpr.ForEach (_spFor, _spIn, _seqExprOnly, _isFromSource, _synPat, synExpr1, synExpr2, _range) -> + | SynExpr.ForEach(_spFor, _spIn, _seqExprOnly, _isFromSource, _synPat, synExpr1, synExpr2, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] - | SynExpr.For (identBody = synExpr1; toBody = synExpr2; doBody = synExpr3) -> + | SynExpr.For(identBody = synExpr1; toBody = synExpr2; doBody = synExpr3) -> List.tryPick walkExpr [ synExpr1; synExpr2; synExpr3 ] - | SynExpr.ArrayOrListComputed (_, synExpr, _range) -> walkExpr synExpr + | SynExpr.ArrayOrListComputed(_, synExpr, _range) -> walkExpr synExpr - | SynExpr.ComputationExpr (_, synExpr, _range) -> walkExpr synExpr + | SynExpr.ComputationExpr(_, synExpr, _range) -> walkExpr synExpr - | SynExpr.Lambda (body = synExpr) -> walkExpr synExpr + | SynExpr.Lambda(body = synExpr) -> walkExpr synExpr - | SynExpr.DotLambda (expr = synExpr) -> walkExpr synExpr + | SynExpr.DotLambda(expr = synExpr) -> walkExpr synExpr - | SynExpr.MatchLambda (_isExnMatch, _argm, synMatchClauseList, _spBind, _wholem) -> + | SynExpr.MatchLambda(_isExnMatch, _argm, synMatchClauseList, _spBind, _wholem) -> synMatchClauseList - |> List.tryPick (fun (SynMatchClause (resultExpr = e)) -> walkExpr e) + |> List.tryPick (fun (SynMatchClause(resultExpr = e)) -> walkExpr e) - | SynExpr.Match (expr = synExpr; clauses = synMatchClauseList) -> + | SynExpr.Match(expr = synExpr; clauses = synMatchClauseList) -> walkExpr synExpr |> Option.orElse ( synMatchClauseList - |> List.tryPick (fun (SynMatchClause (resultExpr = e)) -> walkExpr e) + |> List.tryPick (fun (SynMatchClause(resultExpr = e)) -> walkExpr e) ) - | SynExpr.Lazy (synExpr, _range) -> walkExpr synExpr + | SynExpr.Lazy(synExpr, _range) -> walkExpr synExpr - | SynExpr.Do (synExpr, _range) -> walkExpr synExpr + | SynExpr.Do(synExpr, _range) -> walkExpr synExpr - | SynExpr.Assert (synExpr, _range) -> walkExpr synExpr + | SynExpr.Assert(synExpr, _range) -> walkExpr synExpr - | SynExpr.App (_exprAtomicFlag, _isInfix, synExpr1, synExpr2, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] + | SynExpr.App(_exprAtomicFlag, _isInfix, synExpr1, synExpr2, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] - | SynExpr.TypeApp (synExpr, _, _synTypeList, _commas, _, _, _range) -> walkExpr synExpr + | SynExpr.TypeApp(synExpr, _, _synTypeList, _commas, _, _, _range) -> walkExpr synExpr - | SynExpr.LetOrUse (bindings = synBindingList; body = synExpr) -> + | SynExpr.LetOrUse(bindings = synBindingList; body = synExpr) -> Option.orElse (List.tryPick walkBinding synBindingList) (walkExpr synExpr) - | SynExpr.TryWith (tryExpr = synExpr) -> walkExpr synExpr + | SynExpr.TryWith(tryExpr = synExpr) -> walkExpr synExpr - | SynExpr.TryFinally (tryExpr = synExpr1; finallyExpr = synExpr2) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] + | SynExpr.TryFinally(tryExpr = synExpr1; finallyExpr = synExpr2) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] | Sequentials exprs -> List.tryPick walkExpr exprs - | SynExpr.IfThenElse (ifExpr = synExpr1; thenExpr = synExpr2; elseExpr = synExprOpt) -> + | SynExpr.IfThenElse(ifExpr = synExpr1; thenExpr = synExpr2; elseExpr = synExprOpt) -> match synExprOpt with | Some synExpr3 -> List.tryPick walkExpr [ synExpr1; synExpr2; synExpr3 ] | None -> List.tryPick walkExpr [ synExpr1; synExpr2 ] | SynExpr.Ident _ident -> None - | SynExpr.LongIdent (_, _longIdent, _altNameRefCell, _range) -> None + | SynExpr.LongIdent(_, _longIdent, _altNameRefCell, _range) -> None - | SynExpr.LongIdentSet (_longIdent, synExpr, _range) -> walkExpr synExpr + | SynExpr.LongIdentSet(_longIdent, synExpr, _range) -> walkExpr synExpr - | SynExpr.DotGet (synExpr, _dotm, _longIdent, _range) -> walkExpr synExpr + | SynExpr.DotGet(synExpr, _dotm, _longIdent, _range) -> walkExpr synExpr - | SynExpr.DotSet (synExpr1, _longIdent, synExpr2, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] + | SynExpr.DotSet(synExpr1, _longIdent, synExpr2, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] - | SynExpr.Set (synExpr1, synExpr2, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] + | SynExpr.Set(synExpr1, synExpr2, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] - | SynExpr.DotIndexedGet (synExpr, indexArgs, _range, _range2) -> Option.orElse (walkExpr synExpr) (walkExpr indexArgs) + | SynExpr.DotIndexedGet(synExpr, indexArgs, _range, _range2) -> Option.orElse (walkExpr synExpr) (walkExpr indexArgs) - | SynExpr.DotIndexedSet (synExpr1, indexArgs, synExpr2, _, _range, _range2) -> + | SynExpr.DotIndexedSet(synExpr1, indexArgs, synExpr2, _, _range, _range2) -> [ synExpr1; indexArgs; synExpr2 ] |> List.tryPick walkExpr - | SynExpr.JoinIn (synExpr1, _range, synExpr2, _range2) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] - | SynExpr.NamedIndexedPropertySet (_longIdent, synExpr1, synExpr2, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] + | SynExpr.JoinIn(synExpr1, _range, synExpr2, _range2) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] + | SynExpr.NamedIndexedPropertySet(_longIdent, synExpr1, synExpr2, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2 ] - | SynExpr.DotNamedIndexedPropertySet (synExpr1, _longIdent, synExpr2, synExpr3, _range) -> + | SynExpr.DotNamedIndexedPropertySet(synExpr1, _longIdent, synExpr2, synExpr3, _range) -> List.tryPick walkExpr [ synExpr1; synExpr2; synExpr3 ] - | SynExpr.TypeTest (synExpr, _synType, _range) - | SynExpr.Upcast (synExpr, _synType, _range) - | SynExpr.Downcast (synExpr, _synType, _range) -> walkExpr synExpr - | SynExpr.InferredUpcast (synExpr, _range) - | SynExpr.InferredDowncast (synExpr, _range) -> walkExpr synExpr - | SynExpr.AddressOf (_, synExpr, _range, _range2) -> walkExpr synExpr - | SynExpr.TraitCall (_synTyparList, _synMemberSig, synExpr, _range) -> walkExpr synExpr + | SynExpr.TypeTest(synExpr, _synType, _range) + | SynExpr.Upcast(synExpr, _synType, _range) + | SynExpr.Downcast(synExpr, _synType, _range) -> walkExpr synExpr + | SynExpr.InferredUpcast(synExpr, _range) + | SynExpr.InferredDowncast(synExpr, _range) -> walkExpr synExpr + | SynExpr.AddressOf(_, synExpr, _range, _range2) -> walkExpr synExpr + | SynExpr.TraitCall(_synTyparList, _synMemberSig, synExpr, _range) -> walkExpr synExpr | SynExpr.Null _range | SynExpr.ImplicitZero _range -> None - | SynExpr.YieldOrReturn (_, synExpr, _range) - | SynExpr.YieldOrReturnFrom (_, synExpr, _range) - | SynExpr.DoBang (synExpr, _range) -> walkExpr synExpr + | SynExpr.YieldOrReturn(_, synExpr, _range) + | SynExpr.YieldOrReturnFrom(_, synExpr, _range) + | SynExpr.DoBang(synExpr, _range) -> walkExpr synExpr - | SynExpr.LetOrUseBang (rhs = synExpr1; andBangs = synExprAndBangs; body = synExpr2) -> + | SynExpr.LetOrUseBang(rhs = synExpr1; andBangs = synExprAndBangs; body = synExpr2) -> [ yield synExpr1 - for SynExprAndBang (body = eAndBang) in synExprAndBangs do + for SynExprAndBang(body = eAndBang) in synExprAndBangs do yield eAndBang yield synExpr2 ] @@ -969,10 +969,10 @@ module InterfaceStubGenerator = | SynExpr.LibraryOnlyStaticOptimization _ | SynExpr.LibraryOnlyUnionCaseFieldGet _ | SynExpr.LibraryOnlyUnionCaseFieldSet _ -> None - | SynExpr.ArbitraryAfterError (_debugStr, _range) -> None + | SynExpr.ArbitraryAfterError(_debugStr, _range) -> None - | SynExpr.FromParseError (synExpr, _range) - | SynExpr.DiscardAfterMissingQualificationAfterDot (synExpr, _, _range) -> walkExpr synExpr + | SynExpr.FromParseError(synExpr, _range) + | SynExpr.DiscardAfterMissingQualificationAfterDot(synExpr, _, _range) -> walkExpr synExpr | _ -> None diff --git a/src/fcs-fable/src/Compiler/Service/ServiceLexing.fs b/src/fcs-fable/src/Compiler/Service/ServiceLexing.fs index 3fbfad8a94..7a7f305b22 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceLexing.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceLexing.fs @@ -200,8 +200,8 @@ module internal TokenClassifications = // (this isn't entirely correct, but it'll work for now - see bug 3727) (FSharpTokenColorKind.Number, FSharpTokenCharKind.Operator, FSharpTokenTriggerClass.None) - | INFIX_STAR_DIV_MOD_OP ("mod" | "land" | "lor" | "lxor") - | INFIX_STAR_STAR_OP ("lsl" | "lsr" | "asr") -> + | INFIX_STAR_DIV_MOD_OP("mod" | "land" | "lor" | "lxor") + | INFIX_STAR_STAR_OP("lsl" | "lsr" | "asr") -> (FSharpTokenColorKind.Keyword, FSharpTokenCharKind.Keyword, FSharpTokenTriggerClass.None) | LPAREN_STAR_RPAREN @@ -481,23 +481,23 @@ module internal LexerStateEncoding = match token with | HASH_LINE cont | HASH_LIGHT cont - | HASH_IF (_, _, cont) - | HASH_ELSE (_, _, cont) - | HASH_ENDIF (_, _, cont) + | HASH_IF(_, _, cont) + | HASH_ELSE(_, _, cont) + | HASH_ENDIF(_, _, cont) | INACTIVECODE cont | WHITESPACE cont | COMMENT cont | LINE_COMMENT cont | STRING_TEXT cont | EOF cont - | INTERP_STRING_BEGIN_PART (_, _, cont) - | INTERP_STRING_PART (_, cont) - | INTERP_STRING_BEGIN_END (_, _, cont) - | INTERP_STRING_END (_, cont) + | INTERP_STRING_BEGIN_PART(_, _, cont) + | INTERP_STRING_PART(_, cont) + | INTERP_STRING_BEGIN_END(_, _, cont) + | INTERP_STRING_END(_, cont) | LBRACE cont | RBRACE cont - | BYTEARRAY (_, _, cont) - | STRING (_, _, cont) -> cont + | BYTEARRAY(_, _, cont) + | STRING(_, _, cont) -> cont | _ -> prevLexcont // Note that this will discard all lexcont state, including the ifdefStack. @@ -709,7 +709,7 @@ module internal LexerStateEncoding = let encodeLexInt indentationSyntaxStatus (lexcont: LexerContinuation) = match lexcont with - | LexCont.Token (ifdefs, stringNest) -> + | LexCont.Token(ifdefs, stringNest) -> encodeLexCont ( FSharpTokenizerColorState.Token, 0L, @@ -720,7 +720,7 @@ module internal LexerStateEncoding = stringNest, 0 ) - | LexCont.IfDefSkip (ifdefs, stringNest, n, m) -> + | LexCont.IfDefSkip(ifdefs, stringNest, n, m) -> encodeLexCont ( FSharpTokenizerColorState.IfDefSkip, int64 n, @@ -731,9 +731,9 @@ module internal LexerStateEncoding = stringNest, 0 ) - | LexCont.EndLine (ifdefs, stringNest, econt) -> + | LexCont.EndLine(ifdefs, stringNest, econt) -> match econt with - | LexerEndlineContinuation.Skip (n, m) -> + | LexerEndlineContinuation.Skip(n, m) -> encodeLexCont ( FSharpTokenizerColorState.EndLineThenSkip, int64 n, @@ -755,7 +755,7 @@ module internal LexerStateEncoding = stringNest, 0 ) - | LexCont.String (ifdefs, stringNest, style, kind, delimLen, m) -> + | LexCont.String(ifdefs, stringNest, style, kind, delimLen, m) -> let state = match style with | LexerStringStyle.SingleQuote -> FSharpTokenizerColorState.String @@ -764,7 +764,7 @@ module internal LexerStateEncoding = | LexerStringStyle.ExtendedInterpolated -> FSharpTokenizerColorState.ExtendedInterpolatedString encodeLexCont (state, 0L, m.Start, ifdefs, indentationSyntaxStatus, kind, stringNest, delimLen) - | LexCont.Comment (ifdefs, stringNest, n, m) -> + | LexCont.Comment(ifdefs, stringNest, n, m) -> encodeLexCont ( FSharpTokenizerColorState.Comment, int64 n, @@ -775,7 +775,7 @@ module internal LexerStateEncoding = stringNest, 0 ) - | LexCont.SingleLineComment (ifdefs, stringNest, n, m) -> + | LexCont.SingleLineComment(ifdefs, stringNest, n, m) -> encodeLexCont ( FSharpTokenizerColorState.SingleLineComment, int64 n, @@ -786,7 +786,7 @@ module internal LexerStateEncoding = stringNest, 0 ) - | LexCont.StringInComment (ifdefs, stringNest, style, n, m) -> + | LexCont.StringInComment(ifdefs, stringNest, style, n, m) -> let state = match style with | LexerStringStyle.SingleQuote -> FSharpTokenizerColorState.StringInComment @@ -795,7 +795,7 @@ module internal LexerStateEncoding = | LexerStringStyle.ExtendedInterpolated -> FSharpTokenizerColorState.TripleQuoteStringInComment encodeLexCont (state, int64 n, m.Start, ifdefs, indentationSyntaxStatus, LexerStringKind.String, stringNest, 0) - | LexCont.MLOnly (ifdefs, stringNest, m) -> + | LexCont.MLOnly(ifdefs, stringNest, m) -> encodeLexCont ( FSharpTokenizerColorState.CamlOnly, 0L, @@ -952,22 +952,22 @@ type FSharpLineTokenizer(lexbuf: UnicodeLexing.Lexbuf, maxLength: int option, fi lexargs.indentationSyntaxStatus <- indentationSyntaxStatus match lexcont with - | LexCont.EndLine (ifdefs, stringNest, cont) -> + | LexCont.EndLine(ifdefs, stringNest, cont) -> lexargs.ifdefStack <- ifdefs lexargs.stringNest <- stringNest Lexer.endline cont lexargs skip lexbuf - | LexCont.Token (ifdefs, stringNest) -> + | LexCont.Token(ifdefs, stringNest) -> lexargs.ifdefStack <- ifdefs lexargs.stringNest <- stringNest Lexer.token lexargs skip lexbuf - | LexCont.IfDefSkip (ifdefs, stringNest, n, m) -> + | LexCont.IfDefSkip(ifdefs, stringNest, n, m) -> lexargs.ifdefStack <- ifdefs lexargs.stringNest <- stringNest Lexer.ifdefSkip n m lexargs skip lexbuf - | LexCont.String (ifdefs, stringNest, style, kind, delimLen, m) -> + | LexCont.String(ifdefs, stringNest, style, kind, delimLen, m) -> lexargs.ifdefStack <- ifdefs lexargs.stringNest <- stringNest lexargs.interpolationDelimiterLength <- delimLen @@ -980,18 +980,18 @@ type FSharpLineTokenizer(lexbuf: UnicodeLexing.Lexbuf, maxLength: int option, fi | LexerStringStyle.TripleQuote -> Lexer.tripleQuoteString args skip lexbuf | LexerStringStyle.ExtendedInterpolated -> Lexer.extendedInterpolatedString args skip lexbuf - | LexCont.Comment (ifdefs, stringNest, n, m) -> + | LexCont.Comment(ifdefs, stringNest, n, m) -> lexargs.ifdefStack <- ifdefs lexargs.stringNest <- stringNest Lexer.comment (n, m, lexargs) skip lexbuf - | LexCont.SingleLineComment (ifdefs, stringNest, n, m) -> + | LexCont.SingleLineComment(ifdefs, stringNest, n, m) -> lexargs.ifdefStack <- ifdefs lexargs.stringNest <- stringNest // The first argument is 'None' because we don't need XML comments when called from VS tokenizer Lexer.singleLineComment (None, n, m, m, lexargs) skip lexbuf - | LexCont.StringInComment (ifdefs, stringNest, style, n, m) -> + | LexCont.StringInComment(ifdefs, stringNest, style, n, m) -> lexargs.ifdefStack <- ifdefs lexargs.stringNest <- stringNest @@ -1001,7 +1001,7 @@ type FSharpLineTokenizer(lexbuf: UnicodeLexing.Lexbuf, maxLength: int option, fi | LexerStringStyle.TripleQuote | LexerStringStyle.ExtendedInterpolated -> Lexer.tripleQuoteStringInComment n m lexargs skip lexbuf - | LexCont.MLOnly (ifdefs, stringNest, m) -> + | LexCont.MLOnly(ifdefs, stringNest, m) -> lexargs.ifdefStack <- ifdefs lexargs.stringNest <- stringNest Lexer.mlOnly m lexargs skip lexbuf @@ -1035,16 +1035,16 @@ type FSharpLineTokenizer(lexbuf: UnicodeLexing.Lexbuf, maxLength: int option, fi // because sometimes token shouldn't be split. However it is just for colorization & // for VS (which needs to recognize when user types "."). match token with - | HASH_IF (m, lineStr, cont) when lineStr <> "" -> false, processHashIfLine m.StartColumn lineStr cont - | HASH_ELSE (m, lineStr, cont) when lineStr <> "" -> false, processHashEndElse m.StartColumn lineStr 4 cont - | HASH_ENDIF (m, lineStr, cont) when lineStr <> "" -> false, processHashEndElse m.StartColumn lineStr 5 cont - | HASH_IDENT (ident) -> + | HASH_IF(m, lineStr, cont) when lineStr <> "" -> false, processHashIfLine m.StartColumn lineStr cont + | HASH_ELSE(m, lineStr, cont) when lineStr <> "" -> false, processHashEndElse m.StartColumn lineStr 4 cont + | HASH_ENDIF(m, lineStr, cont) when lineStr <> "" -> false, processHashEndElse m.StartColumn lineStr 5 cont + | HASH_IDENT(ident) -> delayToken (IDENT ident, leftc + 1, rightc) false, (HASH, leftc, leftc) - | RQUOTE_DOT (s, raw) -> + | RQUOTE_DOT(s, raw) -> delayToken (DOT, rightc, rightc) false, (RQUOTE(s, raw), leftc, rightc - 1) - | INFIX_COMPARE_OP (LexFilter.TyparsCloseOp (greaters, afterOp) as opstr) -> + | INFIX_COMPARE_OP(LexFilter.TyparsCloseOp(greaters, afterOp) as opstr) -> match afterOp with | None -> () | Some tok -> delayToken (tok, leftc + greaters.Length, rightc) @@ -1220,12 +1220,7 @@ type FSharpLineTokenizer(lexbuf: UnicodeLexing.Lexbuf, maxLength: int option, fi [] type FSharpSourceTokenizer - ( - conditionalDefines: string list, - fileName: string option, - langVersion: string option, - strictIndentation: bool option - ) = + (conditionalDefines: string list, fileName: string option, langVersion: string option, strictIndentation: bool option) = let langVersion = langVersion diff --git a/src/fcs-fable/src/Compiler/Service/ServiceNavigation.fs b/src/fcs-fable/src/Compiler/Service/ServiceNavigation.fs index 8fc5722cd5..7f912e07e0 100755 --- a/src/fcs-fable/src/Compiler/Service/ServiceNavigation.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceNavigation.fs @@ -116,10 +116,10 @@ module NavigationImpl = let fldspecRange fldspec = match fldspec with - | SynUnionCaseKind.Fields (flds) -> + | SynUnionCaseKind.Fields(flds) -> flds - |> List.fold (fun st (SynField (range = m)) -> unionRangesChecked m st) range.Zero - | SynUnionCaseKind.FullType (ty, _) -> ty.Range + |> List.fold (fun st (SynField(range = m)) -> unionRangesChecked m st) range.Zero + | SynUnionCaseKind.FullType(ty, _) -> ty.Range let bodyRange mBody decls = unionRangesChecked (rangeOfDecls decls) mBody @@ -167,16 +167,16 @@ module NavigationImpl = // Process let-binding let processBinding isMember enclosingEntityKind isAbstract synBinding = - let (SynBinding (valData = valData; headPat = synPat; expr = synExpr)) = synBinding - let (SynValData (memberFlags = memberOpt)) = valData + let (SynBinding(valData = valData; headPat = synPat; expr = synExpr)) = synBinding + let (SynValData(memberFlags = memberOpt)) = valData let m = match synExpr with - | SynExpr.Typed (e, _, _) -> e.Range // fix range for properties with type annotations + | SynExpr.Typed(e, _, _) -> e.Range // fix range for properties with type annotations | _ -> synExpr.Range match synPat, memberOpt with - | SynPat.LongIdent (longDotId = SynLongIdent (lid, _, _); accessibility = access), Some (flags) when isMember -> + | SynPat.LongIdent(longDotId = SynLongIdent(lid, _, _); accessibility = access), Some(flags) when isMember -> let icon, kind = match flags.MemberKind with | SynMemberKind.ClassConstructor @@ -205,15 +205,15 @@ module NavigationImpl = createMemberLid (lidShow, kind, icon, m, enclosingEntityKind, isAbstract, access) ] - | SynPat.LongIdent (longDotId = SynLongIdent (lid, _, _); accessibility = access), _ -> + | SynPat.LongIdent(longDotId = SynLongIdent(lid, _, _); accessibility = access), _ -> let m = unionRanges (List.head lid).idRange m [ createMemberLid (lid, NavigationItemKind.Field, FSharpGlyph.Field, m, enclosingEntityKind, isAbstract, access) ] - | SynPat.Named (SynIdent (id, _), _, access, _), _ - | SynPat.As (_, SynPat.Named (SynIdent (id, _), _, access, _), _), _ -> + | SynPat.Named(SynIdent(id, _), _, access, _), _ + | SynPat.As(_, SynPat.Named(SynIdent(id, _), _, access, _), _), _ -> let glyph = if isMember then FSharpGlyph.Method else FSharpGlyph.Field let m = unionRanges id.idRange m @@ -224,8 +224,8 @@ module NavigationImpl = // Process a class declaration or F# type declaration let rec processExnDefnRepr baseName nested synExnRepr = - let (SynExceptionDefnRepr (_, ucase, _, _, access, m)) = synExnRepr - let (SynUnionCase (ident = SynIdent (id, _); caseType = fldspec)) = ucase + let (SynExceptionDefnRepr(_, ucase, _, _, access, m)) = synExnRepr + let (SynUnionCase(ident = SynIdent(id, _); caseType = fldspec)) = ucase let mBody = fldspecRange fldspec [ @@ -234,20 +234,20 @@ module NavigationImpl = // Process a class declaration or F# type declaration and processExnDefn baseName synExnDefn = - let (SynExceptionDefn (repr, _, membDefns, _)) = synExnDefn + let (SynExceptionDefn(repr, _, membDefns, _)) = synExnDefn let nested = processMembers membDefns NavigationEntityKind.Exception |> snd processExnDefnRepr baseName nested repr and processTycon baseName synTypeDefn = - let (SynTypeDefn (typeInfo = typeInfo; typeRepr = repr; members = membDefns; range = m)) = synTypeDefn - let (SynComponentInfo (longId = lid; accessibility = access)) = typeInfo + let (SynTypeDefn(typeInfo = typeInfo; typeRepr = repr; members = membDefns; range = m)) = synTypeDefn + let (SynComponentInfo(longId = lid; accessibility = access)) = typeInfo let topMembers = processMembers membDefns NavigationEntityKind.Class |> snd match repr with | SynTypeDefnRepr.Exception repr -> processExnDefnRepr baseName [] repr - | SynTypeDefnRepr.ObjectModel (_, membDefns, mBody) -> + | SynTypeDefnRepr.ObjectModel(_, membDefns, mBody) -> // F# class declaration let members = processMembers membDefns NavigationEntityKind.Class |> snd let nested = members @ topMembers @@ -257,13 +257,13 @@ module NavigationImpl = createTypeDecl (baseName, lid, FSharpGlyph.Class, m, mBody, nested, NavigationEntityKind.Class, access) ] - | SynTypeDefnRepr.Simple (simple, _) -> + | SynTypeDefnRepr.Simple(simple, _) -> // F# type declaration match simple with - | SynTypeDefnSimpleRepr.Union (_, cases, mBody) -> + | SynTypeDefnSimpleRepr.Union(_, cases, mBody) -> let cases = [ - for SynUnionCase (ident = SynIdent (id, _); caseType = fldspec) in cases -> + for SynUnionCase(ident = SynIdent(id, _); caseType = fldspec) in cases -> let mBody = unionRanges (fldspecRange fldspec) id.idRange createMember (id, NavigationItemKind.Other, FSharpGlyph.Struct, mBody, NavigationEntityKind.Union, false, access) ] @@ -275,10 +275,10 @@ module NavigationImpl = createTypeDecl (baseName, lid, FSharpGlyph.Union, m, mBody, nested, NavigationEntityKind.Union, access) ] - | SynTypeDefnSimpleRepr.Enum (cases, mBody) -> + | SynTypeDefnSimpleRepr.Enum(cases, mBody) -> let cases = [ - for SynEnumCase (ident = SynIdent (id, _); range = m) in cases -> + for SynEnumCase(ident = SynIdent(id, _); range = m) in cases -> createMember (id, NavigationItemKind.Field, FSharpGlyph.EnumMember, m, NavigationEntityKind.Enum, false, access) ] @@ -289,10 +289,10 @@ module NavigationImpl = createTypeDecl (baseName, lid, FSharpGlyph.Enum, m, mBody, nested, NavigationEntityKind.Enum, access) ] - | SynTypeDefnSimpleRepr.Record (_, fields, mBody) -> + | SynTypeDefnSimpleRepr.Record(_, fields, mBody) -> let fields = [ - for SynField (idOpt = id; range = m) in fields do + for SynField(idOpt = id; range = m) in fields do match id with | Some ident -> yield createMember (ident, NavigationItemKind.Field, FSharpGlyph.Field, m, NavigationEntityKind.Record, false, access) | _ -> () @@ -305,7 +305,7 @@ module NavigationImpl = createTypeDecl (baseName, lid, FSharpGlyph.Type, m, mBody, nested, NavigationEntityKind.Record, access) ] - | SynTypeDefnSimpleRepr.TypeAbbrev (_, _, mBody) -> + | SynTypeDefnSimpleRepr.TypeAbbrev(_, _, mBody) -> let mBody = bodyRange mBody topMembers [ @@ -324,25 +324,25 @@ module NavigationImpl = |> List.map (fun md -> md.Range, (match md with - | SynMemberDefn.LetBindings (binds, _, _, _) -> List.collect (processBinding false enclosingEntityKind false) binds - | SynMemberDefn.GetSetMember (Some bind, None, _, _) - | SynMemberDefn.GetSetMember (None, Some bind, _, _) - | SynMemberDefn.Member (bind, _) -> processBinding true enclosingEntityKind false bind - | SynMemberDefn.ValField(fieldInfo = SynField (idOpt = Some rcid; accessibility = access; range = range)) -> + | SynMemberDefn.LetBindings(binds, _, _, _) -> List.collect (processBinding false enclosingEntityKind false) binds + | SynMemberDefn.GetSetMember(Some bind, None, _, _) + | SynMemberDefn.GetSetMember(None, Some bind, _, _) + | SynMemberDefn.Member(bind, _) -> processBinding true enclosingEntityKind false bind + | SynMemberDefn.ValField(fieldInfo = SynField(idOpt = Some rcid; accessibility = access; range = range)) -> [ createMember (rcid, NavigationItemKind.Field, FSharpGlyph.Field, range, enclosingEntityKind, false, access) ] - | SynMemberDefn.AutoProperty (ident = id; accessibility = access) -> + | SynMemberDefn.AutoProperty(ident = id; accessibility = access) -> [ createMember (id, NavigationItemKind.Field, FSharpGlyph.Field, id.idRange, enclosingEntityKind, false, access) ] - | SynMemberDefn.AbstractSlot(slotSig = SynValSig (ident = SynIdent (id, _); synType = ty; accessibility = access)) -> + | SynMemberDefn.AbstractSlot(slotSig = SynValSig(ident = SynIdent(id, _); synType = ty; accessibility = access)) -> [ createMember (id, NavigationItemKind.Method, FSharpGlyph.OverridenMethod, ty.Range, enclosingEntityKind, true, access) ] | SynMemberDefn.NestedType _ -> failwith "tycon as member????" //processTycon tycon - | SynMemberDefn.Interface(members = Some (membs)) -> processMembers membs enclosingEntityKind |> snd - | SynMemberDefn.GetSetMember (Some getBinding, Some setBinding, _, _) -> + | SynMemberDefn.Interface(members = Some(membs)) -> processMembers membs enclosingEntityKind |> snd + | SynMemberDefn.GetSetMember(Some getBinding, Some setBinding, _, _) -> [ yield! processBinding true enclosingEntityKind false getBinding yield! processBinding true enclosingEntityKind false setBinding @@ -358,7 +358,7 @@ module NavigationImpl = [ for decl in decls do match decl with - | SynModuleDecl.Let (_, binds, _) -> + | SynModuleDecl.Let(_, binds, _) -> for bind in binds do yield! processBinding false NavigationEntityKind.Module false bind | _ -> () @@ -370,11 +370,11 @@ module NavigationImpl = [ for decl in decls do match decl with - | SynModuleDecl.ModuleAbbrev (id, lid, m) -> + | SynModuleDecl.ModuleAbbrev(id, lid, m) -> let mBody = rangeOfLid lid createDecl (baseName, id, NavigationItemKind.Module, FSharpGlyph.Module, m, mBody, [], NavigationEntityKind.Namespace, false, None) - | SynModuleDecl.NestedModule (moduleInfo = SynComponentInfo (longId = lid; accessibility = access); decls = decls; range = m) -> + | SynModuleDecl.NestedModule(moduleInfo = SynComponentInfo(longId = lid; accessibility = access); decls = decls; range = m) -> // Find let bindings (for the right dropdown) let nested = processNestedDeclarations (decls) let newBaseName = (if (baseName = "") then "" else baseName + ".") + (textOfLid lid) @@ -385,10 +385,10 @@ module NavigationImpl = // Get nested modules and types (for the left dropdown) yield! other - | SynModuleDecl.Types (tydefs, _) -> + | SynModuleDecl.Types(tydefs, _) -> for tydef in tydefs do yield! processTycon baseName tydef - | SynModuleDecl.Exception (defn, _) -> yield! processExnDefn baseName defn + | SynModuleDecl.Exception(defn, _) -> yield! processExnDefn baseName defn | _ -> () ] @@ -399,7 +399,7 @@ module NavigationImpl = [ for modul in modules do - let (SynModuleOrNamespace (id, _isRec, kind, decls, _, _, access, m, _)) = modul + let (SynModuleOrNamespace(id, _isRec, kind, decls, _, _, access, m, _)) = modul let baseName = if (not singleTopLevel) then textOfLid id else "" // Find let bindings (for the right dropdown) let nested = processNestedDeclarations (decls) @@ -480,7 +480,7 @@ module NavigationImpl = item, addItemName (id.idText) let rec processExnRepr baseName nested inp = - let (SynExceptionDefnRepr (_, SynUnionCase (ident = SynIdent (id, _); caseType = fldspec), _, _, access, m)) = inp + let (SynExceptionDefnRepr(_, SynUnionCase(ident = SynIdent(id, _); caseType = fldspec), _, _, access, m)) = inp let mBody = fldspecRange fldspec [ @@ -488,12 +488,12 @@ module NavigationImpl = ] and processExnSig baseName inp = - let (SynExceptionSig (exnRepr = repr; members = memberSigs)) = inp + let (SynExceptionSig(exnRepr = repr; members = memberSigs)) = inp let nested = processSigMembers memberSigs processExnRepr baseName nested repr and processTycon baseName inp = - let (SynTypeDefnSig (typeInfo = SynComponentInfo (longId = lid; accessibility = access); typeRepr = repr; members = membDefns; range = m)) = + let (SynTypeDefnSig(typeInfo = SynComponentInfo(longId = lid; accessibility = access); typeRepr = repr; members = membDefns; range = m)) = inp let topMembers = processSigMembers membDefns @@ -501,19 +501,19 @@ module NavigationImpl = [ match repr with | SynTypeDefnSigRepr.Exception repr -> yield! processExnRepr baseName [] repr - | SynTypeDefnSigRepr.ObjectModel (_, membDefns, mBody) -> + | SynTypeDefnSigRepr.ObjectModel(_, membDefns, mBody) -> // F# class declaration let members = processSigMembers membDefns let nested = members @ topMembers let mBody = bodyRange mBody nested createTypeDecl (baseName, lid, FSharpGlyph.Class, m, mBody, nested, NavigationEntityKind.Class, access) - | SynTypeDefnSigRepr.Simple (simple, _) -> + | SynTypeDefnSigRepr.Simple(simple, _) -> // F# type declaration match simple with - | SynTypeDefnSimpleRepr.Union (_, cases, mBody) -> + | SynTypeDefnSimpleRepr.Union(_, cases, mBody) -> let cases = [ - for SynUnionCase (ident = SynIdent (id, _); caseType = fldspec) in cases -> + for SynUnionCase(ident = SynIdent(id, _); caseType = fldspec) in cases -> let m = unionRanges (fldspecRange fldspec) id.idRange createMember (id, NavigationItemKind.Other, FSharpGlyph.Struct, m, NavigationEntityKind.Union, false, access) ] @@ -521,20 +521,20 @@ module NavigationImpl = let nested = cases @ topMembers let mBody = bodyRange mBody nested createTypeDecl (baseName, lid, FSharpGlyph.Union, m, mBody, nested, NavigationEntityKind.Union, access) - | SynTypeDefnSimpleRepr.Enum (cases, mBody) -> + | SynTypeDefnSimpleRepr.Enum(cases, mBody) -> let cases = [ - for SynEnumCase (ident = SynIdent (id, _); range = m) in cases -> + for SynEnumCase(ident = SynIdent(id, _); range = m) in cases -> createMember (id, NavigationItemKind.Field, FSharpGlyph.EnumMember, m, NavigationEntityKind.Enum, false, access) ] let nested = cases @ topMembers let mBody = bodyRange mBody nested createTypeDecl (baseName, lid, FSharpGlyph.Enum, m, mBody, nested, NavigationEntityKind.Enum, access) - | SynTypeDefnSimpleRepr.Record (_, fields, mBody) -> + | SynTypeDefnSimpleRepr.Record(_, fields, mBody) -> let fields = [ - for SynField (idOpt = id; range = m) in fields do + for SynField(idOpt = id; range = m) in fields do match id with | Some ident -> yield createMember (ident, NavigationItemKind.Field, FSharpGlyph.Field, m, NavigationEntityKind.Record, false, access) | _ -> () @@ -543,7 +543,7 @@ module NavigationImpl = let nested = fields @ topMembers let mBody = bodyRange mBody nested createTypeDecl (baseName, lid, FSharpGlyph.Type, m, mBody, nested, NavigationEntityKind.Record, access) - | SynTypeDefnSimpleRepr.TypeAbbrev (_, _, mBody) -> + | SynTypeDefnSimpleRepr.TypeAbbrev(_, _, mBody) -> let mBody = bodyRange mBody topMembers createTypeDecl (baseName, lid, FSharpGlyph.Typedef, m, mBody, topMembers, NavigationEntityKind.Class, access) @@ -557,9 +557,9 @@ module NavigationImpl = [ for memb in members do match memb with - | SynMemberSig.Member(memberSig = SynValSig.SynValSig (ident = SynIdent (id, _); accessibility = access; range = m)) -> + | SynMemberSig.Member(memberSig = SynValSig.SynValSig(ident = SynIdent(id, _); accessibility = access; range = m)) -> createMember (id, NavigationItemKind.Method, FSharpGlyph.Method, m, NavigationEntityKind.Class, false, access) - | SynMemberSig.ValField (SynField (idOpt = Some rcid; fieldType = ty; accessibility = access), _) -> + | SynMemberSig.ValField(SynField(idOpt = Some rcid; fieldType = ty; accessibility = access), _) -> createMember (rcid, NavigationItemKind.Field, FSharpGlyph.Field, ty.Range, NavigationEntityKind.Class, false, access) | _ -> () ] @@ -569,7 +569,7 @@ module NavigationImpl = [ for decl in decls do match decl with - | SynModuleSigDecl.Val (SynValSig.SynValSig (ident = SynIdent (id, _); accessibility = access; range = m), _) -> + | SynModuleSigDecl.Val(SynValSig.SynValSig(ident = SynIdent(id, _); accessibility = access; range = m), _) -> createMember (id, NavigationItemKind.Method, FSharpGlyph.Method, m, NavigationEntityKind.Module, false, access) | _ -> () ] @@ -580,11 +580,11 @@ module NavigationImpl = [ for decl in decls do match decl with - | SynModuleSigDecl.ModuleAbbrev (id, lid, m) -> + | SynModuleSigDecl.ModuleAbbrev(id, lid, m) -> let mBody = rangeOfLid lid createDecl (baseName, id, NavigationItemKind.Module, FSharpGlyph.Module, m, mBody, [], NavigationEntityKind.Module, false, None) - | SynModuleSigDecl.NestedModule (moduleInfo = SynComponentInfo (longId = lid; accessibility = access); moduleDecls = decls; range = m) -> + | SynModuleSigDecl.NestedModule(moduleInfo = SynComponentInfo(longId = lid; accessibility = access); moduleDecls = decls; range = m) -> // Find let bindings (for the right dropdown) let nested = processNestedSigDeclarations (decls) let newBaseName = (if baseName = "" then "" else baseName + ".") + (textOfLid lid) @@ -595,10 +595,10 @@ module NavigationImpl = createDeclLid (baseName, lid, NavigationItemKind.Module, FSharpGlyph.Module, m, mBody, nested, NavigationEntityKind.Module, access) yield! other - | SynModuleSigDecl.Types (tydefs, _) -> + | SynModuleSigDecl.Types(tydefs, _) -> for tydef in tydefs do yield! processTycon baseName tydef - | SynModuleSigDecl.Exception (defn, _) -> yield! processExnSig baseName defn + | SynModuleSigDecl.Exception(defn, _) -> yield! processExnSig baseName defn | _ -> () ] @@ -609,7 +609,7 @@ module NavigationImpl = [ for modulSig in modules do - let (SynModuleOrNamespaceSig (id, _isRec, kind, decls, _, _, access, m, _)) = modulSig + let (SynModuleOrNamespaceSig(id, _isRec, kind, decls, _, _, access, m, _)) = modulSig let baseName = if (not singleTopLevel) then textOfLid id else "" // Find let bindings (for the right dropdown) let nested = processNestedSigDeclarations (decls) @@ -699,20 +699,20 @@ type NavigableContainer = let rec loop acc = function | File _ -> acc - | Container (_, nameParts, parent) -> loop (nameParts @ acc) parent + | Container(_, nameParts, parent) -> loop (nameParts @ acc) parent loop [] x |> textOfPath member x.Type = match x with | File _ -> NavigableContainerType.File - | Container (t, _, _) -> t + | Container(t, _, _) -> t member x.Name = match x with | File name -> name | Container(nameParts = []) -> "" - | Container (nameParts = ns) -> ns |> List.last + | Container(nameParts = ns) -> ns |> List.last type NavigableItem = { @@ -771,33 +771,33 @@ module NavigateTo = addIdent NavigableItemKind.ModuleAbbreviation id isSig container let addExceptionRepr exnRepr isSig container = - let (SynExceptionDefnRepr (_, SynUnionCase(ident = SynIdent (id, _)), _, _, _, _)) = exnRepr + let (SynExceptionDefnRepr(_, SynUnionCase(ident = SynIdent(id, _)), _, _, _, _)) = exnRepr addIdent NavigableItemKind.Exception id isSig container NavigableContainer.Container(NavigableContainerType.Exception, [ id.idText ], container) let addComponentInfo containerType kind info isSig container = - let (SynComponentInfo (longId = lid)) = info + let (SynComponentInfo(longId = lid)) = info addLongIdent kind lid isSig container NavigableContainer.Container(containerType, pathOfLid lid, container) let addValSig kind synValSig isSig container = - let (SynValSig(ident = SynIdent (id, _))) = synValSig + let (SynValSig(ident = SynIdent(id, _))) = synValSig addIdent kind id isSig container let addField synField isSig container = - let (SynField (idOpt = id)) = synField + let (SynField(idOpt = id)) = synField match id with | Some id -> addIdent NavigableItemKind.Field id isSig container | _ -> () let addEnumCase inp isSig = - let (SynEnumCase(ident = SynIdent (id, _))) = inp + let (SynEnumCase(ident = SynIdent(id, _))) = inp addIdent NavigableItemKind.EnumCase id isSig let addUnionCase synUnionCase isSig container = - let (SynUnionCase(ident = SynIdent (id, _))) = synUnionCase + let (SynUnionCase(ident = SynIdent(id, _))) = synUnionCase addIdent NavigableItemKind.UnionCase id isSig container let mapMemberKind mk = @@ -810,8 +810,8 @@ module NavigateTo = | SynMemberKind.Member -> NavigableItemKind.Member let addBinding synBinding itemKind container = - let (SynBinding (valData = valData; headPat = headPat)) = synBinding - let (SynValData (memberFlags = memberFlagsOpt)) = valData + let (SynBinding(valData = valData; headPat = headPat)) = synBinding + let (SynValData(memberFlags = memberFlagsOpt)) = valData let kind = match itemKind with @@ -822,14 +822,14 @@ module NavigateTo = | _ -> NavigableItemKind.ModuleValue match headPat with - | SynPat.LongIdent(longDotId = SynLongIdent ([ _; id ], _, _)) -> + | SynPat.LongIdent(longDotId = SynLongIdent([ _; id ], _, _)) -> // instance members addIdent kind id false container - | SynPat.LongIdent(longDotId = SynLongIdent ([ id ], _, _)) -> + | SynPat.LongIdent(longDotId = SynLongIdent([ id ], _, _)) -> // functions addIdent kind id false container - | SynPat.Named (SynIdent (id, _), _, _, _) - | SynPat.As (_, SynPat.Named (SynIdent (id, _), _, _, _), _) -> + | SynPat.Named(SynIdent(id, _), _, _, _) + | SynPat.As(_, SynPat.Named(SynIdent(id, _), _, _, _), _) -> // values addIdent kind id false container | _ -> () @@ -844,7 +844,7 @@ module NavigateTo = walkSynModuleOrNamespaceSig item (NavigableContainer.File file.FileName) and walkSynModuleOrNamespaceSig (inp: SynModuleOrNamespaceSig) container = - let (SynModuleOrNamespaceSig (longId = lid; kind = kind; decls = decls)) = inp + let (SynModuleOrNamespaceSig(longId = lid; kind = kind; decls = decls)) = inp let isModule = kind.IsModule if isModule then @@ -861,40 +861,40 @@ module NavigateTo = and walkSynModuleSigDecl (decl: SynModuleSigDecl) container = match decl with - | SynModuleSigDecl.ModuleAbbrev (lhs, _, _range) -> addModuleAbbreviation lhs true container - | SynModuleSigDecl.Exception(exnSig = SynExceptionSig (exnRepr = representation)) -> addExceptionRepr representation true container |> ignore + | SynModuleSigDecl.ModuleAbbrev(lhs, _, _range) -> addModuleAbbreviation lhs true container + | SynModuleSigDecl.Exception(exnSig = SynExceptionSig(exnRepr = representation)) -> addExceptionRepr representation true container |> ignore | SynModuleSigDecl.NamespaceFragment fragment -> walkSynModuleOrNamespaceSig fragment container - | SynModuleSigDecl.NestedModule (moduleInfo = componentInfo; moduleDecls = nestedDecls) -> + | SynModuleSigDecl.NestedModule(moduleInfo = componentInfo; moduleDecls = nestedDecls) -> let container = addComponentInfo NavigableContainerType.Module NavigableItemKind.Module componentInfo true container for decl in nestedDecls do walkSynModuleSigDecl decl container - | SynModuleSigDecl.Types (types, _) -> + | SynModuleSigDecl.Types(types, _) -> for ty in types do walkSynTypeDefnSig ty container - | SynModuleSigDecl.Val (valSig, _range) -> addValSig NavigableItemKind.ModuleValue valSig true container + | SynModuleSigDecl.Val(valSig, _range) -> addValSig NavigableItemKind.ModuleValue valSig true container | SynModuleSigDecl.HashDirective _ | SynModuleSigDecl.Open _ -> () and walkSynTypeDefnSig (inp: SynTypeDefnSig) container = - let (SynTypeDefnSig (typeInfo = componentInfo; typeRepr = repr; members = members)) = inp + let (SynTypeDefnSig(typeInfo = componentInfo; typeRepr = repr; members = members)) = inp let container = addComponentInfo NavigableContainerType.Type NavigableItemKind.Type componentInfo true container for m in members do walkSynMemberSig m container match repr with - | SynTypeDefnSigRepr.ObjectModel (_, membersSigs, _) -> + | SynTypeDefnSigRepr.ObjectModel(_, membersSigs, _) -> for m in membersSigs do walkSynMemberSig m container - | SynTypeDefnSigRepr.Simple (repr, _) -> walkSynTypeDefnSimpleRepr repr true container + | SynTypeDefnSigRepr.Simple(repr, _) -> walkSynTypeDefnSimpleRepr repr true container | SynTypeDefnSigRepr.Exception _ -> () and walkSynMemberSig (synMemberSig: SynMemberSig) container = match synMemberSig with - | SynMemberSig.Member (memberSig = valSig; flags = memberFlags) -> addMember valSig memberFlags true container - | SynMemberSig.ValField (synField, _) -> addField synField true container - | SynMemberSig.NestedType (synTypeDef, _) -> walkSynTypeDefnSig synTypeDef container + | SynMemberSig.Member(memberSig = valSig; flags = memberFlags) -> addMember valSig memberFlags true container + | SynMemberSig.ValField(synField, _) -> addField synField true container + | SynMemberSig.NestedType(synTypeDef, _) -> walkSynTypeDefnSig synTypeDef container | SynMemberSig.Inherit _ | SynMemberSig.Interface _ -> () @@ -903,7 +903,7 @@ module NavigateTo = walkSynModuleOrNamespace item (NavigableContainer.File inp.FileName) and walkSynModuleOrNamespace inp container = - let (SynModuleOrNamespace (longId = lid; kind = kind; decls = decls)) = inp + let (SynModuleOrNamespace(longId = lid; kind = kind; decls = decls)) = inp let isModule = kind.IsModule if isModule then @@ -920,22 +920,22 @@ module NavigateTo = and walkSynModuleDecl (decl: SynModuleDecl) container = match decl with - | SynModuleDecl.Exception (SynExceptionDefn (repr, _, synMembers, _), _) -> + | SynModuleDecl.Exception(SynExceptionDefn(repr, _, synMembers, _), _) -> let container = addExceptionRepr repr false container for m in synMembers do walkSynMemberDefn m container - | SynModuleDecl.Let (_, bindings, _) -> + | SynModuleDecl.Let(_, bindings, _) -> for binding in bindings do addBinding binding None container - | SynModuleDecl.ModuleAbbrev (lhs, _, _) -> addModuleAbbreviation lhs false container - | SynModuleDecl.NamespaceFragment (fragment) -> walkSynModuleOrNamespace fragment container - | SynModuleDecl.NestedModule (moduleInfo = componentInfo; decls = modules) -> + | SynModuleDecl.ModuleAbbrev(lhs, _, _) -> addModuleAbbreviation lhs false container + | SynModuleDecl.NamespaceFragment(fragment) -> walkSynModuleOrNamespace fragment container + | SynModuleDecl.NestedModule(moduleInfo = componentInfo; decls = modules) -> let container = addComponentInfo NavigableContainerType.Module NavigableItemKind.Module componentInfo false container for m in modules do walkSynModuleDecl m container - | SynModuleDecl.Types (typeDefs, _range) -> + | SynModuleDecl.Types(typeDefs, _range) -> for t in typeDefs do walkSynTypeDefn t container | SynModuleDecl.Attributes _ @@ -944,7 +944,7 @@ module NavigateTo = | SynModuleDecl.Open _ -> () and walkSynTypeDefn inp container = - let (SynTypeDefn (typeInfo = componentInfo; typeRepr = representation; members = members)) = inp + let (SynTypeDefn(typeInfo = componentInfo; typeRepr = representation; members = members)) = inp let container = addComponentInfo NavigableContainerType.Type NavigableItemKind.Type componentInfo false container walkSynTypeDefnRepr representation container @@ -953,22 +953,22 @@ module NavigateTo = and walkSynTypeDefnRepr (typeDefnRepr: SynTypeDefnRepr) container = match typeDefnRepr with - | SynTypeDefnRepr.ObjectModel (_, members, _) -> + | SynTypeDefnRepr.ObjectModel(_, members, _) -> for m in members do walkSynMemberDefn m container - | SynTypeDefnRepr.Simple (repr, _) -> walkSynTypeDefnSimpleRepr repr false container + | SynTypeDefnRepr.Simple(repr, _) -> walkSynTypeDefnSimpleRepr repr false container | SynTypeDefnRepr.Exception _ -> () and walkSynTypeDefnSimpleRepr (repr: SynTypeDefnSimpleRepr) isSig container = match repr with - | SynTypeDefnSimpleRepr.Enum (enumCases, _) -> + | SynTypeDefnSimpleRepr.Enum(enumCases, _) -> for c in enumCases do addEnumCase c isSig container - | SynTypeDefnSimpleRepr.Record (_, fields, _) -> + | SynTypeDefnSimpleRepr.Record(_, fields, _) -> for f in fields do // TODO: add specific case for record field? addField f isSig container - | SynTypeDefnSimpleRepr.Union (_, unionCases, _) -> + | SynTypeDefnSimpleRepr.Union(_, unionCases, _) -> for uc in unionCases do addUnionCase uc isSig container | SynTypeDefnSimpleRepr.General _ @@ -979,21 +979,21 @@ module NavigateTo = and walkSynMemberDefn (memberDefn: SynMemberDefn) container = match memberDefn with - | SynMemberDefn.AbstractSlot (slotSig = synValSig; flags = memberFlags) -> addMember synValSig memberFlags false container - | SynMemberDefn.AutoProperty (ident = id) -> addIdent NavigableItemKind.Property id false container - | SynMemberDefn.Interface (members = members) -> + | SynMemberDefn.AbstractSlot(slotSig = synValSig; flags = memberFlags) -> addMember synValSig memberFlags false container + | SynMemberDefn.AutoProperty(ident = id) -> addIdent NavigableItemKind.Property id false container + | SynMemberDefn.Interface(members = members) -> match members with | Some members -> for m in members do walkSynMemberDefn m container | None -> () - | SynMemberDefn.Member (binding, _) -> addBinding binding None container - | SynMemberDefn.GetSetMember (getBinding, setBinding, _, _) -> + | SynMemberDefn.Member(binding, _) -> addBinding binding None container + | SynMemberDefn.GetSetMember(getBinding, setBinding, _, _) -> Option.iter (fun b -> addBinding b None container) getBinding Option.iter (fun b -> addBinding b None container) setBinding - | SynMemberDefn.NestedType (typeDef, _, _) -> walkSynTypeDefn typeDef container - | SynMemberDefn.ValField (fieldInfo = field) -> addField field false container - | SynMemberDefn.LetBindings (bindings, _, _, _) -> + | SynMemberDefn.NestedType(typeDef, _, _) -> walkSynTypeDefn typeDef container + | SynMemberDefn.ValField(fieldInfo = field) -> addField field false container + | SynMemberDefn.LetBindings(bindings, _, _, _) -> bindings |> List.iter (fun binding -> addBinding binding (Some NavigableItemKind.Field) container) | SynMemberDefn.Open _ diff --git a/src/fcs-fable/src/Compiler/Service/ServiceParamInfoLocations.fs b/src/fcs-fable/src/Compiler/Service/ServiceParamInfoLocations.fs index 4f39e96145..129a40b93f 100755 --- a/src/fcs-fable/src/Compiler/Service/ServiceParamInfoLocations.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceParamInfoLocations.fs @@ -72,11 +72,11 @@ module internal ParameterLocationsImpl = // we found it, dig out ident match synExpr with | SynExpr.Ident id -> Some([ id.idText ], id.idRange) - | SynExpr.LongIdent (_, SynLongIdent ([ id ], [], [ Some _ ]), _, _) -> Some([ id.idText ], id.idRange) - | SynExpr.LongIdent (_, SynLongIdent (lid, _, _), _, mLongId) - | SynExpr.DotGet (_, _, SynLongIdent (lid, _, _), mLongId) -> Some(pathOfLid lid, mLongId) - | SynExpr.TypeApp (synExpr, _, _synTypeList, _commas, _, _, _range) -> digOutIdentFromFuncExpr synExpr - | SynExpr.Paren (expr = expr) -> digOutIdentFromFuncExpr expr + | SynExpr.LongIdent(_, SynLongIdent([ id ], [], [ Some _ ]), _, _) -> Some([ id.idText ], id.idRange) + | SynExpr.LongIdent(_, SynLongIdent(lid, _, _), _, mLongId) + | SynExpr.DotGet(_, _, SynLongIdent(lid, _, _), mLongId) -> Some(pathOfLid lid, mLongId) + | SynExpr.TypeApp(synExpr, _, _synTypeList, _commas, _, _, _range) -> digOutIdentFromFuncExpr synExpr + | SynExpr.Paren(expr = expr) -> digOutIdentFromFuncExpr expr | _ -> None type FindResult = @@ -89,37 +89,37 @@ module internal ParameterLocationsImpl = let digOutIdentFromStaticArg (StripParenTypes synType) = match synType with - | SynType.StaticConstantNamed (SynType.LongIdent (SynLongIdent ([ id ], _, _)), _, _) -> Some id.idText - | SynType.LongIdent (SynLongIdent ([ id ], _, _)) -> Some id.idText // NOTE: again, not a static constant, but may be a prefix of a Named in incomplete code + | SynType.StaticConstantNamed(SynType.LongIdent(SynLongIdent([ id ], _, _)), _, _) -> Some id.idText + | SynType.LongIdent(SynLongIdent([ id ], _, _)) -> Some id.idText // NOTE: again, not a static constant, but may be a prefix of a Named in incomplete code | _ -> None let getNamedParamName e = match e with // f(x=4) - | SynExpr.App (ExprAtomicFlag.NonAtomic, - _, - SynExpr.App (ExprAtomicFlag.NonAtomic, - true, - SynExpr.LongIdent(longDotId = SynLongIdent(id = [ op ])), - SynExpr.Ident n, - _range), - _, - _) when op.idText = "op_Equality" -> Some n.idText + | SynExpr.App(ExprAtomicFlag.NonAtomic, + _, + SynExpr.App(ExprAtomicFlag.NonAtomic, + true, + SynExpr.LongIdent(longDotId = SynLongIdent(id = [ op ])), + SynExpr.Ident n, + _range), + _, + _) when op.idText = "op_Equality" -> Some n.idText // f(?x=4) - | SynExpr.App (ExprAtomicFlag.NonAtomic, - _, - SynExpr.App (ExprAtomicFlag.NonAtomic, - true, - SynExpr.LongIdent(longDotId = SynLongIdent(id = [ op ])), - SynExpr.LongIdent (true, SynLongIdent ([ n ], _, _), _ref, _lidrange), - _range), - _, - _) when op.idText = "op_Equality" -> Some n.idText + | SynExpr.App(ExprAtomicFlag.NonAtomic, + _, + SynExpr.App(ExprAtomicFlag.NonAtomic, + true, + SynExpr.LongIdent(longDotId = SynLongIdent(id = [ op ])), + SynExpr.LongIdent(true, SynLongIdent([ n ], _, _), _ref, _lidrange), + _range), + _, + _) when op.idText = "op_Equality" -> Some n.idText | _ -> None let getTypeName synType = match synType with - | SynType.LongIdent (SynLongIdent (ids, _, _)) -> ids |> pathOfLid + | SynType.LongIdent(SynLongIdent(ids, _, _)) -> ids |> pathOfLid | _ -> [ "" ] // TODO type name for other cases, see also unit test named "ParameterInfo.LocationOfParams.AfterQuicklyTyping.CallConstructorViaLongId.Bug94333" let handleSingleArg traverseSynExpr (pos, synExpr, parenRange, rpRangeOpt: _ option) = @@ -148,7 +148,7 @@ module internal ParameterLocationsImpl = // see bug 345385. let rec searchSynArgExpr traverseSynExpr pos expr = match expr with - | SynExprParen (SynExpr.Tuple (false, synExprList, commaRanges, _tupleRange) as synExpr, _lpRange, rpRangeOpt, parenRange) -> // tuple argument + | SynExprParen(SynExpr.Tuple(false, synExprList, commaRanges, _tupleRange) as synExpr, _lpRange, rpRangeOpt, parenRange) -> // tuple argument let inner = traverseSynExpr synExpr match inner with @@ -173,25 +173,25 @@ module internal ParameterLocationsImpl = NotFound, None | _ -> NotFound, None - | SynExprParen (SynExprParen (SynExpr.Tuple (false, _, _, _), _, _, _) as synExpr, _, rpRangeOpt, parenRange) -> // f((x, y)) is special, single tuple arg + | SynExprParen(SynExprParen(SynExpr.Tuple(false, _, _, _), _, _, _) as synExpr, _, rpRangeOpt, parenRange) -> // f((x, y)) is special, single tuple arg handleSingleArg traverseSynExpr (pos, synExpr, parenRange, rpRangeOpt) // dig into multiple parens - | SynExprParen (SynExprParen (_, _, _, _) as synExpr, _, _, _parenRange) -> + | SynExprParen(SynExprParen _ as synExpr, _, _, _parenRange) -> let r, _cacheOpt = searchSynArgExpr traverseSynExpr pos synExpr r, None - | SynExprParen (synExpr, _lpRange, rpRangeOpt, parenRange) -> // single argument + | SynExprParen(synExpr, _lpRange, rpRangeOpt, parenRange) -> // single argument handleSingleArg traverseSynExpr (pos, synExpr, parenRange, rpRangeOpt) - | SynExpr.ArbitraryAfterError (_debugStr, range) -> // single argument when e.g. after open paren you hit EOF + | SynExpr.ArbitraryAfterError(_debugStr, range) -> // single argument when e.g. after open paren you hit EOF if SyntaxTraversal.rangeContainsPosEdgesExclusive range pos then let r = Found(range.Start, [], [ (range.End, None) ], false) r, None else NotFound, None - | SynExpr.Const (SynConst.Unit, unitRange) -> + | SynExpr.Const(SynConst.Unit, unitRange) -> if SyntaxTraversal.rangeContainsPosEdgesExclusive unitRange pos then let r = Found(unitRange.Start, [], [ (unitRange.End, None) ], true) r, None @@ -212,13 +212,13 @@ module internal ParameterLocationsImpl = let (|StaticParameters|_|) pos (StripParenTypes synType) = match synType with - | SynType.App (StripParenTypes (SynType.LongIdent (SynLongIdent (lid, _, _) as lidwd)), - Some mLess, - args, - commas, - mGreaterOpt, - _pf, - wholem) -> + | SynType.App(StripParenTypes(SynType.LongIdent(SynLongIdent(lid, _, _) as lidwd)), + Some mLess, + args, + commas, + mGreaterOpt, + _pf, + wholem) -> let lidm = lidwd.Range let betweenTheBrackets = withStart mLess.Start wholem @@ -254,11 +254,11 @@ module internal ParameterLocationsImpl = match expr with // new LID(...) and error recovery of these - | SynExpr.New (_, synType, synExpr, _) -> + | SynExpr.New(_, synType, synExpr, _) -> let constrArgsResult, cacheOpt = searchSynArgExpr traverseSynExpr pos synExpr match constrArgsResult, cacheOpt with - | Found (parenLoc, argRanges, commasAndCloseParen, isThereACloseParen), _ -> + | Found(parenLoc, argRanges, commasAndCloseParen, isThereACloseParen), _ -> let typeName = getTypeName synType Some( @@ -279,11 +279,11 @@ module internal ParameterLocationsImpl = | _ -> traverseSynExpr synExpr // EXPR< = error recovery of a form of half-written TypeApp - | SynExpr.App (_, - _, - SynExpr.App (_, true, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ op ])), synExpr, mLess), - SynExpr.ArbitraryAfterError _, - wholem) when op.idText = "op_LessThan" -> + | SynExpr.App(_, + _, + SynExpr.App(_, true, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ op ])), synExpr, mLess), + SynExpr.ArbitraryAfterError _, + wholem) when op.idText = "op_LessThan" -> // Look in the function expression let fResult = traverseSynExpr synExpr @@ -295,14 +295,14 @@ module internal ParameterLocationsImpl = if SyntaxTraversal.rangeContainsPosEdgesExclusive typeArgsm pos then // We found it, dig out ident match digOutIdentFromFuncExpr synExpr with - | Some (lid, mLongId) -> + | Some(lid, mLongId) -> Some(ParameterLocations(lid, mLongId, op.idRange.Start, [], [ wholem.End ], false, [])) | None -> None else None // EXPR EXPR2 - | SynExpr.App (_exprAtomicFlag, isInfix, synExpr, synExpr2, _range) -> + | SynExpr.App(_exprAtomicFlag, isInfix, synExpr, synExpr2, _range) -> // Look in the function expression let fResult = traverseSynExpr synExpr @@ -313,10 +313,10 @@ module internal ParameterLocationsImpl = let xResult, cacheOpt = searchSynArgExpr traverseSynExpr pos synExpr2 match xResult, cacheOpt with - | Found (parenLoc, argRanges, commasAndCloseParen, isThereACloseParen), _ -> + | Found(parenLoc, argRanges, commasAndCloseParen, isThereACloseParen), _ -> // We found it, dig out ident match digOutIdentFromFuncExpr synExpr with - | Some (lid, mLongId) -> + | Some(lid, mLongId) -> assert (isInfix = (posLt parenLoc mLongId.End)) if isInfix then @@ -340,7 +340,7 @@ module internal ParameterLocationsImpl = | _ -> traverseSynExpr synExpr2 // ID and error recovery of these - | SynExpr.TypeApp (synExpr, mLess, tyArgs, commas, mGreaterOpt, _, wholem) -> + | SynExpr.TypeApp(synExpr, mLess, tyArgs, commas, mGreaterOpt, _, wholem) -> match traverseSynExpr synExpr with | Some _ as r -> r | None -> @@ -393,7 +393,7 @@ module internal ParameterLocationsImpl = let xResult, _cacheOpt = searchSynArgExpr defaultTraverse pos expr match xResult with - | Found (parenLoc, argRanges, commasAndCloseParen, isThereACloseParen) -> + | Found(parenLoc, argRanges, commasAndCloseParen, isThereACloseParen) -> // we found it, dig out ident let typeName = getTypeName ty @@ -424,7 +424,8 @@ type ParameterLocations with let ranges = nwpl.LongIdStartLocation :: nwpl.LongIdEndLocation - :: nwpl.OpenParenLocation :: (nwpl.TupleEndLocations |> Array.toList) + :: nwpl.OpenParenLocation + :: (nwpl.TupleEndLocations |> Array.toList) let sorted = ranges |> List.sortWith (fun a b -> posOrder.Compare(a, b)) |> Seq.toList @@ -439,9 +440,9 @@ type ParameterLocations with module internal SynExprAppLocationsImpl = let rec private searchSynArgExpr traverseSynExpr expr ranges = match expr with - | SynExpr.Const (SynConst.Unit, _) -> None, None + | SynExpr.Const(SynConst.Unit, _) -> None, None - | SynExpr.Paren (SynExpr.Tuple (_, exprs, _commas, _tupRange), _, _, _parenRange) -> + | SynExpr.Paren(SynExpr.Tuple(_, exprs, _commas, _tupRange), _, _, _parenRange) -> let rec loop (exprs: SynExpr list) ranges = match exprs with | [] -> ranges @@ -450,11 +451,11 @@ module internal SynExprAppLocationsImpl = let res = loop exprs ranges Some res, None - | SynExpr.Paren (SynExpr.Paren _ as synExpr, _, _, _parenRange) -> + | SynExpr.Paren(SynExpr.Paren _ as synExpr, _, _, _parenRange) -> let r, _cacheOpt = searchSynArgExpr traverseSynExpr synExpr ranges r, None - | SynExpr.Paren (SynExpr.App (_, _isInfix, _, _, _range), _, _, parenRange) -> Some(parenRange :: ranges), None + | SynExpr.Paren(SynExpr.App(_, _isInfix, _, _, _range), _, _, parenRange) -> Some(parenRange :: ranges), None | e -> let inner = traverseSynExpr e @@ -470,10 +471,10 @@ module internal SynExprAppLocationsImpl = { new SyntaxVisitorBase<_>() with member _.VisitExpr(_path, traverseSynExpr, defaultTraverse, expr) = match expr with - | SynExpr.App (_exprAtomicFlag, _isInfix, funcExpr, argExpr, range) when posEq pos range.Start -> + | SynExpr.App(_exprAtomicFlag, _isInfix, funcExpr, argExpr, range) when posEq pos range.Start -> let isInfixFuncExpr = match funcExpr with - | SynExpr.App (_, isInfix, _, _, _) -> isInfix + | SynExpr.App(_, isInfix, _, _, _) -> isInfix | _ -> false if isInfixFuncExpr then diff --git a/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fs b/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fs index 025ab8a665..317f4bf84d 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fs @@ -297,9 +297,15 @@ module SyntaxTraversal = ignore debugObj None - /// traverse an implementation file walking all the way down to SynExpr or TypeAbbrev at a particular location - /// - let Traverse (pos: pos, parseTree, visitor: SyntaxVisitorBase<'T>) = + /// + /// Traverse an implementation file until returns Some value. + /// + let traverseUntil + (pick: pos -> range -> obj -> (range * (unit -> 'T option)) list -> 'T option) + (pos: pos) + (visitor: SyntaxVisitorBase<'T>) + (parseTree: ParsedInput) + : 'T option = let pick x = pick pos x let rec traverseSynModuleDecl origPath (decl: SynModuleDecl) = @@ -309,33 +315,33 @@ module SyntaxTraversal = let path = SyntaxNode.SynModule m :: origPath match m with - | SynModuleDecl.ModuleAbbrev (_ident, _longIdent, _range) -> None - | SynModuleDecl.NestedModule (decls = synModuleDecls; moduleInfo = SynComponentInfo (attributes = attributes)) -> + | SynModuleDecl.ModuleAbbrev(_ident, _longIdent, _range) -> None + | SynModuleDecl.NestedModule(decls = synModuleDecls; moduleInfo = SynComponentInfo(attributes = attributes)) -> synModuleDecls |> List.map (fun x -> dive x x.Range (traverseSynModuleDecl path)) |> List.append (attributeApplicationDives path attributes) |> pick decl - | SynModuleDecl.Let (isRecursive, synBindingList, range) -> + | SynModuleDecl.Let(isRecursive, synBindingList, range) -> match visitor.VisitLetOrUse(path, isRecursive, traverseSynBinding path, synBindingList, range) with | Some x -> Some x | None -> synBindingList |> List.map (fun x -> dive x x.RangeOfBindingWithRhs (traverseSynBinding path)) |> pick decl - | SynModuleDecl.Expr (synExpr, _range) -> traverseSynExpr path synExpr - | SynModuleDecl.Types (synTypeDefnList, _range) -> + | SynModuleDecl.Expr(synExpr, _range) -> traverseSynExpr path synExpr + | SynModuleDecl.Types(synTypeDefnList, _range) -> synTypeDefnList |> List.map (fun x -> dive x x.Range (traverseSynTypeDefn path)) |> pick decl - | SynModuleDecl.Exception (_synExceptionDefn, _range) -> None - | SynModuleDecl.Open (_target, _range) -> None - | SynModuleDecl.Attributes (attributes, _) -> attributeApplicationDives path attributes |> pick decl - | SynModuleDecl.HashDirective (parsedHashDirective, range) -> visitor.VisitHashDirective(path, parsedHashDirective, range) - | SynModuleDecl.NamespaceFragment (synModuleOrNamespace) -> traverseSynModuleOrNamespace path synModuleOrNamespace + | SynModuleDecl.Exception(_synExceptionDefn, _range) -> None + | SynModuleDecl.Open(_target, _range) -> None + | SynModuleDecl.Attributes(attributes, _) -> attributeApplicationDives path attributes |> pick decl + | SynModuleDecl.HashDirective(parsedHashDirective, range) -> visitor.VisitHashDirective(path, parsedHashDirective, range) + | SynModuleDecl.NamespaceFragment(synModuleOrNamespace) -> traverseSynModuleOrNamespace path synModuleOrNamespace visitor.VisitModuleDecl(origPath, defaultTraverse, decl) - and traverseSynModuleOrNamespace origPath (SynModuleOrNamespace (decls = synModuleDecls; range = range) as mors) = + and traverseSynModuleOrNamespace origPath (SynModuleOrNamespace(decls = synModuleDecls; range = range) as mors) = match visitor.VisitModuleOrNamespace(origPath, mors) with | Some x -> Some x | None -> @@ -355,52 +361,51 @@ module SyntaxTraversal = let traversePat = traversePat path match e with - | SynExpr.LongIdentSet (expr = synExpr) - | SynExpr.DotGet (expr = synExpr) - | SynExpr.Do (expr = synExpr) - | SynExpr.DoBang (expr = synExpr) - | SynExpr.Assert (expr = synExpr) - | SynExpr.Fixed (expr = synExpr) - | SynExpr.DebugPoint (innerExpr = synExpr) - | SynExpr.AddressOf (expr = synExpr) - | SynExpr.TraitCall (argExpr = synExpr) - | SynExpr.Lazy (expr = synExpr) - | SynExpr.InferredUpcast (expr = synExpr) - | SynExpr.InferredDowncast (expr = synExpr) - | SynExpr.YieldOrReturn (expr = synExpr) - | SynExpr.YieldOrReturnFrom (expr = synExpr) - | SynExpr.FromParseError (expr = synExpr) - | SynExpr.DiscardAfterMissingQualificationAfterDot (expr = synExpr) - | SynExpr.IndexFromEnd (expr = synExpr) - | SynExpr.New (expr = synExpr) - | SynExpr.ArrayOrListComputed (expr = synExpr) - | SynExpr.TypeApp (expr = synExpr) - | SynExpr.DotLambda (expr = synExpr) - | SynExpr.Quote (quotedExpr = synExpr) - | SynExpr.Paren (expr = synExpr) -> traverseSynExpr synExpr - - | SynExpr.InterpolatedString (contents = parts) -> + | SynExpr.LongIdentSet(expr = synExpr) + | SynExpr.DotGet(expr = synExpr) + | SynExpr.Do(expr = synExpr) + | SynExpr.DoBang(expr = synExpr) + | SynExpr.Assert(expr = synExpr) + | SynExpr.Fixed(expr = synExpr) + | SynExpr.DebugPoint(innerExpr = synExpr) + | SynExpr.AddressOf(expr = synExpr) + | SynExpr.TraitCall(argExpr = synExpr) + | SynExpr.Lazy(expr = synExpr) + | SynExpr.InferredUpcast(expr = synExpr) + | SynExpr.InferredDowncast(expr = synExpr) + | SynExpr.YieldOrReturn(expr = synExpr) + | SynExpr.YieldOrReturnFrom(expr = synExpr) + | SynExpr.FromParseError(expr = synExpr) + | SynExpr.DiscardAfterMissingQualificationAfterDot(expr = synExpr) + | SynExpr.IndexFromEnd(expr = synExpr) + | SynExpr.New(expr = synExpr) + | SynExpr.ArrayOrListComputed(expr = synExpr) + | SynExpr.TypeApp(expr = synExpr) + | SynExpr.DotLambda(expr = synExpr) + | SynExpr.Quote(quotedExpr = synExpr) + | SynExpr.Paren(expr = synExpr) -> traverseSynExpr synExpr + + | SynExpr.InterpolatedString(contents = parts) -> [ for part in parts do match part with | SynInterpolatedStringPart.String _ -> () - | SynInterpolatedStringPart.FillExpr (fillExpr, _) -> yield dive fillExpr fillExpr.Range traverseSynExpr + | SynInterpolatedStringPart.FillExpr(fillExpr, _) -> yield dive fillExpr fillExpr.Range traverseSynExpr ] |> pick expr - | SynExpr.Typed (expr = synExpr; targetType = synType) -> + | SynExpr.Typed(expr = synExpr; targetType = synType) -> match traverseSynExpr synExpr with | None -> traverseSynType synType | x -> x - | SynExpr.Tuple (exprs = synExprList) - | SynExpr.ArrayOrList (exprs = synExprList) -> - synExprList |> List.map (fun x -> dive x x.Range traverseSynExpr) |> pick expr + | SynExpr.Tuple(exprs = synExprList) + | SynExpr.ArrayOrList(exprs = synExprList) -> synExprList |> List.map (fun x -> dive x x.Range traverseSynExpr) |> pick expr - | SynExpr.AnonRecd (copyInfo = copyOpt; recordFields = fields) -> + | SynExpr.AnonRecd(copyInfo = copyOpt; recordFields = fields) -> [ match copyOpt with - | Some (expr, (withRange, _)) -> + | Some(expr, (withRange, _)) -> yield dive expr expr.Range traverseSynExpr yield @@ -419,7 +424,7 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.Record (baseInfo = inheritOpt; copyInfo = copyOpt; recordFields = fields) -> + | SynExpr.Record(baseInfo = inheritOpt; copyInfo = copyOpt; recordFields = fields) -> [ let diveIntoSeparator offsideColumn scPosOpt copyOpt = match scPosOpt with @@ -436,7 +441,7 @@ module SyntaxTraversal = None match inheritOpt with - | Some (_ty, expr, _range, sepOpt, inheritRange) -> + | Some(_ty, expr, _range, sepOpt, inheritRange) -> // dive into argument yield dive expr expr.Range (fun expr -> @@ -453,7 +458,7 @@ module SyntaxTraversal = traverseSynExpr expr) match sepOpt with - | Some (sep, scPosOpt) -> + | Some(sep, scPosOpt) -> yield dive () sep (fun () -> // special case: caret is below 'inherit' + one or more fields are already defined @@ -465,7 +470,7 @@ module SyntaxTraversal = | _ -> () match copyOpt with - | Some (expr, (withRange, _)) -> + | Some(expr, (withRange, _)) -> yield dive expr expr.Range traverseSynExpr yield @@ -480,7 +485,7 @@ module SyntaxTraversal = let copyOpt = Option.map fst copyOpt - for SynExprRecordField (fieldName = (field, _); expr = e; blockSeparator = sepOpt) in fields do + for SynExprRecordField(fieldName = (field, _); expr = e; blockSeparator = sepOpt) in fields do yield dive (path, copyOpt, Some field) field.Range (fun r -> if rangeContainsPos field.Range pos then @@ -490,7 +495,7 @@ module SyntaxTraversal = let offsideColumn = match inheritOpt with - | Some (_, _, _, _, inheritRange) -> inheritRange.StartColumn + | Some(_, _, _, _, inheritRange) -> inheritRange.StartColumn | None -> field.Range.StartColumn match e with @@ -511,7 +516,7 @@ module SyntaxTraversal = | None -> () match sepOpt with - | Some (sep, scPosOpt) -> + | Some(sep, scPosOpt) -> yield dive () sep (fun () -> // special case: caret is between field bindings @@ -524,12 +529,12 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.ObjExpr (objType = ty; argOptions = baseCallOpt; bindings = binds; members = ms; extraImpls = ifaces) -> + | SynExpr.ObjExpr(objType = ty; argOptions = baseCallOpt; bindings = binds; members = ms; extraImpls = ifaces) -> let binds = unionBindingAndMembers binds ms let result = ifaces - |> Seq.map (fun (SynInterfaceImpl (interfaceTy = ty)) -> ty) + |> Seq.map (fun (SynInterfaceImpl(interfaceTy = ty)) -> ty) |> Seq.tryPick (fun ty -> visitor.VisitInterfaceSynMemberDefnType(path, ty)) if result.IsSome then @@ -537,20 +542,20 @@ module SyntaxTraversal = else [ match baseCallOpt with - | Some (expr, _) -> + | Some(expr, _) -> // this is like a call to 'new', so mock up a 'new' so we can recurse and use that existing logic let newCall = SynExpr.New(false, ty, expr, unionRanges ty.Range expr.Range) yield dive newCall newCall.Range traverseSynExpr | _ -> () for b in binds do yield dive b b.RangeOfBindingWithRhs (traverseSynBinding path) - for SynInterfaceImpl (bindings = binds) in ifaces do + for SynInterfaceImpl(bindings = binds) in ifaces do for b in binds do yield dive b b.RangeOfBindingWithRhs (traverseSynBinding path) ] |> pick expr - | SynExpr.ForEach (pat = synPat; enumExpr = synExpr; bodyExpr = synExpr2) -> + | SynExpr.ForEach(pat = synPat; enumExpr = synExpr; bodyExpr = synExpr2) -> [ dive synPat synPat.Range traversePat dive synExpr synExpr.Range traverseSynExpr @@ -558,36 +563,43 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.ComputationExpr (expr = synExpr) -> + | SynExpr.ComputationExpr(expr = synExpr) -> // now parser treats this syntactic expression as computation expression // { identifier } // here we detect this situation and treat ComputationExpr { Identifier } as attempt to create record // note: sequence expressions use SynExpr.ComputationExpr too - they need to be filtered out let isPartOfArrayOrList = match origPath with - | SyntaxNode.SynExpr (SynExpr.ArrayOrListComputed _) :: _ -> true + | SyntaxNode.SynExpr(SynExpr.ArrayOrListComputed _) :: _ -> true | _ -> false let ok = match isPartOfArrayOrList, synExpr with - | false, LongOrSingleIdent (_, lid, _, _) -> visitor.VisitRecordField(path, None, Some lid) + | false, LongOrSingleIdent(_, lid, _, _) -> visitor.VisitRecordField(path, None, Some lid) | _ -> None if ok.IsSome then ok else traverseSynExpr synExpr - | SynExpr.Lambda (args = SynSimplePats.SimplePats (pats = pats); body = synExpr) -> - match traverseSynSimplePats path pats with - | None -> traverseSynExpr synExpr - | x -> x + | SynExpr.Lambda(parsedData = parsedData) -> + [ + match parsedData with + | Some(pats, body) -> + for pat in pats do + yield dive pat pat.Range traversePat + + yield dive body body.Range traverseSynExpr + | None -> () + ] + |> pick expr - | SynExpr.MatchLambda (matchClauses = synMatchClauseList) -> + | SynExpr.MatchLambda(matchClauses = synMatchClauseList) -> synMatchClauseList |> List.map (fun x -> dive x x.Range (traverseSynMatchClause path)) |> pick expr - | SynExpr.TryWith (tryExpr = synExpr; withCases = synMatchClauseList) - | SynExpr.Match (expr = synExpr; clauses = synMatchClauseList) - | SynExpr.MatchBang (expr = synExpr; clauses = synMatchClauseList) -> + | SynExpr.TryWith(tryExpr = synExpr; withCases = synMatchClauseList) + | SynExpr.Match(expr = synExpr; clauses = synMatchClauseList) + | SynExpr.MatchBang(expr = synExpr; clauses = synMatchClauseList) -> [ yield dive synExpr synExpr.Range traverseSynExpr yield! @@ -596,7 +608,7 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.App (isInfix = isInfix; funcExpr = synExpr; argExpr = synExpr2) -> + | SynExpr.App(isInfix = isInfix; funcExpr = synExpr; argExpr = synExpr2) -> if isInfix then [ dive synExpr2 synExpr2.Range traverseSynExpr @@ -610,7 +622,7 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.LetOrUse (isRecursive = isRecursive; bindings = synBindingList; body = synExpr; range = range) -> + | SynExpr.LetOrUse(isRecursive = isRecursive; bindings = synBindingList; body = synExpr; range = range) -> match visitor.VisitLetOrUse(path, isRecursive, traverseSynBinding path, synBindingList, range) with | None -> [ @@ -622,7 +634,7 @@ module SyntaxTraversal = |> pick expr | x -> x - | SynExpr.IfThenElse (ifExpr = synExpr; thenExpr = synExpr2; elseExpr = synExprOpt) -> + | SynExpr.IfThenElse(ifExpr = synExpr; thenExpr = synExpr2; elseExpr = synExprOpt) -> [ yield dive synExpr synExpr.Range traverseSynExpr yield dive synExpr2 synExpr2.Range traverseSynExpr @@ -632,7 +644,7 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.IndexRange (expr1 = expr1; expr2 = expr2) -> + | SynExpr.IndexRange(expr1 = expr1; expr2 = expr2) -> [ match expr1 with | Some e -> dive e e.Range traverseSynExpr @@ -643,25 +655,25 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.Set (targetExpr = synExpr1; rhsExpr = synExpr2) - | SynExpr.DotSet (targetExpr = synExpr1; rhsExpr = synExpr2) - | SynExpr.TryFinally (tryExpr = synExpr1; finallyExpr = synExpr2) - | SynExpr.SequentialOrImplicitYield (expr1 = synExpr1; expr2 = synExpr2) - | SynExpr.Sequential (expr1 = synExpr1; expr2 = synExpr2) - | SynExpr.While (whileExpr = synExpr1; doExpr = synExpr2) - | SynExpr.WhileBang (whileExpr = synExpr1; doExpr = synExpr2) - | SynExpr.DotIndexedGet (objectExpr = synExpr1; indexArgs = synExpr2) - | SynExpr.JoinIn (lhsExpr = synExpr1; rhsExpr = synExpr2) - | SynExpr.NamedIndexedPropertySet (expr1 = synExpr1; expr2 = synExpr2) -> + | SynExpr.Set(targetExpr = synExpr1; rhsExpr = synExpr2) + | SynExpr.DotSet(targetExpr = synExpr1; rhsExpr = synExpr2) + | SynExpr.TryFinally(tryExpr = synExpr1; finallyExpr = synExpr2) + | SynExpr.SequentialOrImplicitYield(expr1 = synExpr1; expr2 = synExpr2) + | SynExpr.Sequential(expr1 = synExpr1; expr2 = synExpr2) + | SynExpr.While(whileExpr = synExpr1; doExpr = synExpr2) + | SynExpr.WhileBang(whileExpr = synExpr1; doExpr = synExpr2) + | SynExpr.DotIndexedGet(objectExpr = synExpr1; indexArgs = synExpr2) + | SynExpr.JoinIn(lhsExpr = synExpr1; rhsExpr = synExpr2) + | SynExpr.NamedIndexedPropertySet(expr1 = synExpr1; expr2 = synExpr2) -> [ dive synExpr1 synExpr1.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr ] |> pick expr - | SynExpr.For (identBody = synExpr1; toBody = synExpr2; doBody = synExpr3) - | SynExpr.DotIndexedSet (objectExpr = synExpr1; indexArgs = synExpr2; valueExpr = synExpr3) - | SynExpr.DotNamedIndexedPropertySet (targetExpr = synExpr1; argExpr = synExpr2; rhsExpr = synExpr3) -> + | SynExpr.For(identBody = synExpr1; toBody = synExpr2; doBody = synExpr3) + | SynExpr.DotIndexedSet(objectExpr = synExpr1; indexArgs = synExpr2; valueExpr = synExpr3) + | SynExpr.DotNamedIndexedPropertySet(targetExpr = synExpr1; argExpr = synExpr2; rhsExpr = synExpr3) -> [ dive synExpr1 synExpr1.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr @@ -669,22 +681,22 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.TypeTest (expr = synExpr; targetType = synType) - | SynExpr.Upcast (expr = synExpr; targetType = synType) - | SynExpr.Downcast (expr = synExpr; targetType = synType) -> + | SynExpr.TypeTest(expr = synExpr; targetType = synType) + | SynExpr.Upcast(expr = synExpr; targetType = synType) + | SynExpr.Downcast(expr = synExpr; targetType = synType) -> [ dive synExpr synExpr.Range traverseSynExpr dive synType synType.Range traverseSynType ] |> pick expr - | SynExpr.LetOrUseBang (pat = synPat; rhs = synExpr; andBangs = andBangSynExprs; body = synExpr2) -> + | SynExpr.LetOrUseBang(pat = synPat; rhs = synExpr; andBangs = andBangSynExprs; body = synExpr2) -> [ yield dive synPat synPat.Range traversePat yield dive synExpr synExpr.Range traverseSynExpr yield! [ - for SynExprAndBang (pat = andBangSynPat; body = andBangSynExpr) in andBangSynExprs do + for SynExprAndBang(pat = andBangSynPat; body = andBangSynExpr) in andBangSynExprs do yield (dive andBangSynPat andBangSynPat.Range traversePat) yield (dive andBangSynExpr andBangSynExpr.Range traverseSynExpr) ] @@ -712,25 +724,27 @@ module SyntaxTraversal = let path = SyntaxNode.SynPat p :: origPath match p with - | SynPat.Paren (p, _) -> traversePat path p - | SynPat.As (p1, p2, _) - | SynPat.Or (p1, p2, _, _) - | SynPat.ListCons (p1, p2, _, _) -> [ p1; p2 ] |> List.tryPick (traversePat path) - | SynPat.Ands (ps, _) - | SynPat.Tuple (elementPats = ps) - | SynPat.ArrayOrList (_, ps, _) -> ps |> List.tryPick (traversePat path) - | SynPat.Attrib (p, attributes, m) -> + | SynPat.Paren(p, _) -> traversePat path p + | SynPat.As(p1, p2, _) + | SynPat.Or(p1, p2, _, _) + | SynPat.ListCons(p1, p2, _, _) -> [ p1; p2 ] |> List.tryPick (traversePat path) + | SynPat.Ands(ps, _) + | SynPat.Tuple(elementPats = ps) + | SynPat.ArrayOrList(_, ps, _) -> ps |> List.tryPick (traversePat path) + | SynPat.Record(fieldPats = fieldPats) -> fieldPats |> List.tryPick (fun (_, _, p) -> traversePat path p) + | SynPat.Attrib(p, attributes, m) -> match traversePat path p with | None -> attributeApplicationDives path attributes |> pick m attributes | x -> x - | SynPat.LongIdent (argPats = args) -> + | SynPat.LongIdent(argPats = args) -> match args with | SynArgPats.Pats ps -> ps |> List.tryPick (traversePat path) - | SynArgPats.NamePatPairs (pats = ps) -> ps |> List.map (fun (_, _, pat) -> pat) |> List.tryPick (traversePat path) - | SynPat.Typed (p, ty, _) -> + | SynArgPats.NamePatPairs(pats = ps) -> ps |> List.map (fun (_, _, pat) -> pat) |> List.tryPick (traversePat path) + | SynPat.Typed(p, ty, _) -> match traversePat path p with | None -> traverseSynType path ty | x -> x + | SynPat.QuoteExpr(expr, _) -> traverseSynExpr path expr | _ -> None visitor.VisitPat(origPath, defaultTraverse, pat) @@ -741,7 +755,7 @@ module SyntaxTraversal = pats |> List.tryPick (fun pat -> match pat with - | SynSimplePat.Attrib (attributes = attributes; range = m) -> + | SynSimplePat.Attrib(attributes = attributes; range = m) -> attributeApplicationDives origPath attributes |> pick m attributes | _ -> None) | x -> x @@ -751,20 +765,20 @@ module SyntaxTraversal = let path = SyntaxNode.SynType ty :: origPath match ty with - | SynType.App (typeName, _, typeArgs, _, _, _, _) - | SynType.LongIdentApp (typeName, _, _, typeArgs, _, _, _) -> typeName :: typeArgs |> List.tryPick (traverseSynType path) - | SynType.Fun (argType = ty1; returnType = ty2) -> [ ty1; ty2 ] |> List.tryPick (traverseSynType path) - | SynType.MeasurePower (ty, _, _) - | SynType.HashConstraint (ty, _) - | SynType.WithGlobalConstraints (ty, _, _) - | SynType.Array (_, ty, _) -> traverseSynType path ty - | SynType.StaticConstantNamed (ty1, ty2, _) - | SynType.Or (ty1, ty2, _, _) -> [ ty1; ty2 ] |> List.tryPick (traverseSynType path) - | SynType.Tuple (path = segments) -> getTypeFromTuplePath segments |> List.tryPick (traverseSynType path) - | SynType.StaticConstantExpr (expr, _) -> traverseSynExpr [] expr - | SynType.Paren (innerType = t) - | SynType.SignatureParameter (usedType = t) -> traverseSynType path t - | SynType.Intersection (types = types) -> List.tryPick (traverseSynType path) types + | SynType.App(typeName, _, typeArgs, _, _, _, _) + | SynType.LongIdentApp(typeName, _, _, typeArgs, _, _, _) -> typeName :: typeArgs |> List.tryPick (traverseSynType path) + | SynType.Fun(argType = ty1; returnType = ty2) -> [ ty1; ty2 ] |> List.tryPick (traverseSynType path) + | SynType.MeasurePower(ty, _, _) + | SynType.HashConstraint(ty, _) + | SynType.WithGlobalConstraints(ty, _, _) + | SynType.Array(_, ty, _) -> traverseSynType path ty + | SynType.StaticConstantNamed(ty1, ty2, _) + | SynType.Or(ty1, ty2, _, _) -> [ ty1; ty2 ] |> List.tryPick (traverseSynType path) + | SynType.Tuple(path = segments) -> getTypeFromTuplePath segments |> List.tryPick (traverseSynType path) + | SynType.StaticConstantExpr(expr, _) -> traverseSynExpr [] expr + | SynType.Paren(innerType = t) + | SynType.SignatureParameter(usedType = t) -> traverseSynType path t + | SynType.Intersection(types = types) -> List.tryPick (traverseSynType path) types | SynType.Anon _ | SynType.AnonRecd _ | SynType.LongIdent _ @@ -779,10 +793,10 @@ module SyntaxTraversal = // property getters are setters are two members that can have the same range, so do some somersaults to deal with this |> Seq.map (fun mb -> match mb with - | SynMemberDefn.GetSetMember (Some binding, None, m, _) - | SynMemberDefn.GetSetMember (None, Some binding, m, _) -> + | SynMemberDefn.GetSetMember(Some binding, None, m, _) + | SynMemberDefn.GetSetMember(None, Some binding, m, _) -> dive (SynMemberDefn.Member(binding, m)) m (traverseSynMemberDefn path traverseInherit) - | SynMemberDefn.GetSetMember (Some getBinding, Some setBinding, m, _) -> + | SynMemberDefn.GetSetMember(Some getBinding, Some setBinding, m, _) -> let traverse () = match traverseSynMemberDefn path (fun _ -> None) (SynMemberDefn.Member(getBinding, m)) with | Some _ as x -> x @@ -791,14 +805,14 @@ module SyntaxTraversal = m, traverse | mem -> dive mem mem.Range (traverseSynMemberDefn path traverseInherit)) - and traverseSynTypeDefn origPath (SynTypeDefn (synComponentInfo, synTypeDefnRepr, synMemberDefns, _, tRange, _) as tydef) = + and traverseSynTypeDefn origPath (SynTypeDefn(synComponentInfo, synTypeDefnRepr, synMemberDefns, _, tRange, _) as tydef) = let path = SyntaxNode.SynTypeDefn tydef :: origPath match visitor.VisitComponentInfo(origPath, synComponentInfo) with | Some x -> Some x | None -> match synComponentInfo with - | SynComponentInfo (attributes = attributes) -> + | SynComponentInfo(attributes = attributes) -> [ yield! attributeApplicationDives path attributes @@ -807,7 +821,7 @@ module SyntaxTraversal = // This node is generated in CheckExpressions.fs, not in the AST. // But note exception declarations are missing from this tree walk. () - | SynTypeDefnRepr.ObjectModel (synTypeDefnKind, synMemberDefns, _oRange) -> + | SynTypeDefnRepr.ObjectModel(synTypeDefnKind, synMemberDefns, _oRange) -> // traverse inherit function is used to capture type specific data required for processing Inherit part let traverseInherit (synType: SynType, range: range) = visitor.VisitInheritSynMemberDefn(path, synComponentInfo, synTypeDefnKind, synType, synMemberDefns, range) @@ -815,15 +829,15 @@ module SyntaxTraversal = yield! synMemberDefns |> normalizeMembersToDealWithPeculiaritiesOfGettersAndSetters path traverseInherit - | SynTypeDefnRepr.Simple (synTypeDefnSimpleRepr, _range) -> + | SynTypeDefnRepr.Simple(synTypeDefnSimpleRepr, _range) -> match synTypeDefnSimpleRepr with - | SynTypeDefnSimpleRepr.Record (_synAccessOption, fields, m) -> + | SynTypeDefnSimpleRepr.Record(_synAccessOption, fields, m) -> yield dive () synTypeDefnRepr.Range (fun () -> traverseRecordDefn path fields m) - | SynTypeDefnSimpleRepr.Union (_synAccessOption, cases, m) -> + | SynTypeDefnSimpleRepr.Union(_synAccessOption, cases, m) -> yield dive () synTypeDefnRepr.Range (fun () -> traverseUnionDefn path cases m) - | SynTypeDefnSimpleRepr.Enum (cases, m) -> + | SynTypeDefnSimpleRepr.Enum(cases, m) -> yield dive () synTypeDefnRepr.Range (fun () -> traverseEnumDefn path cases m) - | SynTypeDefnSimpleRepr.TypeAbbrev (_, synType, m) -> + | SynTypeDefnSimpleRepr.TypeAbbrev(_, synType, m) -> yield dive synTypeDefnRepr synTypeDefnRepr.Range (fun _ -> visitor.VisitTypeAbbrev(path, synType, m)) | _ -> () yield! @@ -834,23 +848,23 @@ module SyntaxTraversal = and traverseRecordDefn path fields m = fields - |> List.tryPick (fun (SynField (attributes = attributes)) -> attributeApplicationDives path attributes |> pick m attributes) + |> List.tryPick (fun (SynField(attributes = attributes)) -> attributeApplicationDives path attributes |> pick m attributes) |> Option.orElseWith (fun () -> visitor.VisitRecordDefn(path, fields, m)) and traverseEnumDefn path cases m = cases - |> List.tryPick (fun (SynEnumCase (attributes = attributes)) -> attributeApplicationDives path attributes |> pick m attributes) + |> List.tryPick (fun (SynEnumCase(attributes = attributes)) -> attributeApplicationDives path attributes |> pick m attributes) |> Option.orElseWith (fun () -> visitor.VisitEnumDefn(path, cases, m)) and traverseUnionDefn path cases m = cases - |> List.tryPick (fun (SynUnionCase (attributes = attributes; caseType = caseType)) -> + |> List.tryPick (fun (SynUnionCase(attributes = attributes; caseType = caseType)) -> match attributeApplicationDives path attributes |> pick m attributes with | None -> match caseType with | SynUnionCaseKind.Fields fields -> fields - |> List.tryPick (fun (SynField (attributes = attributes)) -> + |> List.tryPick (fun (SynField(attributes = attributes)) -> attributeApplicationDives path attributes |> pick m attributes) | _ -> None | x -> x) @@ -861,9 +875,9 @@ module SyntaxTraversal = let path = SyntaxNode.SynMemberDefn m :: path match m with - | SynMemberDefn.Open (_longIdent, _range) -> None - | SynMemberDefn.Member (synBinding, _range) -> traverseSynBinding path synBinding - | SynMemberDefn.GetSetMember (getBinding, setBinding, _, _) -> + | SynMemberDefn.Open(_longIdent, _range) -> None + | SynMemberDefn.Member(synBinding, _range) -> traverseSynBinding path synBinding + | SynMemberDefn.GetSetMember(getBinding, setBinding, _, _) -> match getBinding, setBinding with | None, None -> None | Some binding, None @@ -872,10 +886,10 @@ module SyntaxTraversal = traverseSynBinding path getBinding |> Option.orElseWith (fun () -> traverseSynBinding path setBinding) - | SynMemberDefn.ImplicitCtor (ctorArgs = simplePats) -> + | SynMemberDefn.ImplicitCtor(ctorArgs = simplePats) -> match simplePats with - | SynSimplePats.SimplePats (pats = simplePats) -> traverseSynSimplePats path simplePats - | SynMemberDefn.ImplicitInherit (synType, synExpr, _identOption, range) -> + | SynSimplePats.SimplePats(pats = simplePats) -> traverseSynSimplePats path simplePats + | SynMemberDefn.ImplicitInherit(synType, synExpr, _identOption, range) -> [ dive () synType.Range (fun () -> match traverseInherit (synType, range) with @@ -884,27 +898,27 @@ module SyntaxTraversal = dive () synExpr.Range (fun () -> visitor.VisitImplicitInherit(path, traverseSynExpr path, synType, synExpr, range)) ] |> pick m - | SynMemberDefn.AutoProperty (synExpr = synExpr; attributes = attributes) -> + | SynMemberDefn.AutoProperty(synExpr = synExpr; attributes = attributes) -> match traverseSynExpr path synExpr with | None -> attributeApplicationDives path attributes |> pick attributes | x -> x - | SynMemberDefn.LetBindings (synBindingList, isRecursive, _, range) -> + | SynMemberDefn.LetBindings(synBindingList, isRecursive, _, range) -> match visitor.VisitLetOrUse(path, isRecursive, traverseSynBinding path, synBindingList, range) with | None -> synBindingList |> List.map (fun x -> dive x x.RangeOfBindingWithRhs (traverseSynBinding path)) |> pick m | x -> x - | SynMemberDefn.AbstractSlot(slotSig = SynValSig (synType = synType; attributes = attributes)) -> + | SynMemberDefn.AbstractSlot(slotSig = SynValSig(synType = synType; attributes = attributes)) -> match traverseSynType path synType with | None -> attributeApplicationDives path attributes |> pick attributes | x -> x - | SynMemberDefn.Interface (interfaceType = synType; members = synMemberDefnsOption) -> + | SynMemberDefn.Interface(interfaceType = synType; members = synMemberDefnsOption) -> match visitor.VisitInterfaceSynMemberDefnType(path, synType) with | None -> match synMemberDefnsOption with | None -> None - | Some (x) -> + | Some(x) -> [ yield! x @@ -912,16 +926,16 @@ module SyntaxTraversal = ] |> pick x | ok -> ok - | SynMemberDefn.Inherit (synType, _identOption, range) -> traverseInherit (synType, range) + | SynMemberDefn.Inherit(synType, _identOption, range) -> traverseInherit (synType, range) | SynMemberDefn.ValField _ -> None - | SynMemberDefn.NestedType (synTypeDefn, _synAccessOption, _range) -> traverseSynTypeDefn path synTypeDefn + | SynMemberDefn.NestedType(synTypeDefn, _synAccessOption, _range) -> traverseSynTypeDefn path synTypeDefn and traverseSynMatchClause origPath mc = let defaultTraverse mc = let path = SyntaxNode.SynMatchClause mc :: origPath match mc with - | SynMatchClause (pat = synPat; whenExpr = synExprOption; resultExpr = synExpr) as all -> + | SynMatchClause(pat = synPat; whenExpr = synExprOption; resultExpr = synExpr) as all -> [ dive synPat synPat.Range (traversePat path) ] @ ([ match synExprOption with @@ -939,7 +953,7 @@ module SyntaxTraversal = let path = SyntaxNode.SynBinding b :: origPath match b with - | SynBinding (headPat = synPat; expr = synExpr; attributes = attributes; range = m) -> + | SynBinding(headPat = synPat; expr = synExpr; attributes = attributes; range = m) -> [ yield! attributeApplicationDives path attributes dive synPat synPat.Range (traversePat path) @@ -953,7 +967,7 @@ module SyntaxTraversal = attributes |> List.map (fun attributes -> dive () attributes.Range (fun () -> visitor.VisitAttributeApplication(origPath, attributes))) - and traverseSynModuleOrNamespaceSig origPath (SynModuleOrNamespaceSig (decls = synModuleSigDecls; range = range) as mors) = + and traverseSynModuleOrNamespaceSig origPath (SynModuleOrNamespaceSig(decls = synModuleSigDecls; range = range) as mors) = match visitor.VisitModuleOrNamespaceSig(origPath, mors) with | Some x -> Some x | None -> @@ -970,27 +984,26 @@ module SyntaxTraversal = let path = SyntaxNode.SynModuleSigDecl m :: origPath match m with - | SynModuleSigDecl.ModuleAbbrev (_ident, _longIdent, _range) -> None - | SynModuleSigDecl.NestedModule (moduleDecls = synModuleDecls; moduleInfo = SynComponentInfo (attributes = attributes)) -> + | SynModuleSigDecl.ModuleAbbrev(_ident, _longIdent, _range) -> None + | SynModuleSigDecl.NestedModule(moduleDecls = synModuleDecls; moduleInfo = SynComponentInfo(attributes = attributes)) -> synModuleDecls |> List.map (fun x -> dive x x.Range (traverseSynModuleSigDecl path)) |> List.append (attributeApplicationDives path attributes) |> pick decl - | SynModuleSigDecl.Val (synValSig, range) -> [ dive synValSig range (traverseSynValSig path) ] |> pick decl - | SynModuleSigDecl.Types (types = types; range = range) -> + | SynModuleSigDecl.Val(synValSig, range) -> [ dive synValSig range (traverseSynValSig path) ] |> pick decl + | SynModuleSigDecl.Types(types = types; range = range) -> types |> List.map (fun t -> dive t range (traverseSynTypeDefnSig path)) |> pick decl - | SynModuleSigDecl.Exception (_synExceptionDefn, _range) -> None - | SynModuleSigDecl.Open (_target, _range) -> None - | SynModuleSigDecl.HashDirective (parsedHashDirective, range) -> - visitor.VisitHashDirective(path, parsedHashDirective, range) + | SynModuleSigDecl.Exception(_synExceptionDefn, _range) -> None + | SynModuleSigDecl.Open(_target, _range) -> None + | SynModuleSigDecl.HashDirective(parsedHashDirective, range) -> visitor.VisitHashDirective(path, parsedHashDirective, range) | SynModuleSigDecl.NamespaceFragment synModuleOrNamespaceSig -> traverseSynModuleOrNamespaceSig path synModuleOrNamespaceSig visitor.VisitModuleSigDecl(origPath, defaultTraverse, decl) and traverseSynValSig origPath (valSig: SynValSig) = - let defaultTraverse (SynValSig (synType = t; attributes = attributes; synExpr = expr; range = m)) = + let defaultTraverse (SynValSig(synType = t; attributes = attributes; synExpr = expr; range = m)) = let path = SyntaxNode.SynValSig valSig :: origPath [ @@ -1004,14 +1017,14 @@ module SyntaxTraversal = visitor.VisitValSig(origPath, defaultTraverse, valSig) - and traverseSynTypeDefnSig origPath (SynTypeDefnSig (synComponentInfo, typeRepr, members, tRange, _) as tydef) = + and traverseSynTypeDefnSig origPath (SynTypeDefnSig(synComponentInfo, typeRepr, members, tRange, _) as tydef) = let path = SyntaxNode.SynTypeDefnSig tydef :: origPath match visitor.VisitComponentInfo(origPath, synComponentInfo) with | Some x -> Some x | None -> match synComponentInfo with - | SynComponentInfo (attributes = attributes) -> + | SynComponentInfo(attributes = attributes) -> [ yield! attributeApplicationDives path attributes @@ -1020,17 +1033,16 @@ module SyntaxTraversal = // This node is generated in CheckExpressions.fs, not in the AST. // But note exception declarations are missing from this tree walk. () - | SynTypeDefnSigRepr.ObjectModel (memberSigs = memberSigs) -> + | SynTypeDefnSigRepr.ObjectModel(memberSigs = memberSigs) -> yield! memberSigs |> List.map (fun ms -> dive ms ms.Range (traverseSynMemberSig path)) - | SynTypeDefnSigRepr.Simple (synTypeDefnSimpleRepr, _range) -> + | SynTypeDefnSigRepr.Simple(synTypeDefnSimpleRepr, _range) -> match synTypeDefnSimpleRepr with - | SynTypeDefnSimpleRepr.Record (_synAccessOption, fields, m) -> + | SynTypeDefnSimpleRepr.Record(_synAccessOption, fields, m) -> yield dive () typeRepr.Range (fun () -> traverseRecordDefn path fields m) - | SynTypeDefnSimpleRepr.Union (_synAccessOption, cases, m) -> + | SynTypeDefnSimpleRepr.Union(_synAccessOption, cases, m) -> yield dive () typeRepr.Range (fun () -> traverseUnionDefn path cases m) - | SynTypeDefnSimpleRepr.Enum (cases, m) -> - yield dive () typeRepr.Range (fun () -> traverseEnumDefn path cases m) - | SynTypeDefnSimpleRepr.TypeAbbrev (_, synType, m) -> + | SynTypeDefnSimpleRepr.Enum(cases, m) -> yield dive () typeRepr.Range (fun () -> traverseEnumDefn path cases m) + | SynTypeDefnSimpleRepr.TypeAbbrev(_, synType, m) -> yield dive typeRepr typeRepr.Range (fun _ -> visitor.VisitTypeAbbrev(path, synType, m)) | _ -> () yield! members |> List.map (fun ms -> dive ms ms.Range (traverseSynMemberSig path)) @@ -1041,12 +1053,12 @@ module SyntaxTraversal = let path = SyntaxNode.SynMemberSig m :: path match m with - | SynMemberSig.Member (memberSig = memberSig) -> traverseSynValSig path memberSig - | SynMemberSig.Interface (interfaceType = synType) -> traverseSynType path synType - | SynMemberSig.Inherit (inheritedType = synType) -> traverseSynType path synType - | SynMemberSig.ValField(field = SynField (attributes = attributes)) -> + | SynMemberSig.Member(memberSig = memberSig) -> traverseSynValSig path memberSig + | SynMemberSig.Interface(interfaceType = synType) -> traverseSynType path synType + | SynMemberSig.Inherit(inheritedType = synType) -> traverseSynType path synType + | SynMemberSig.ValField(field = SynField(attributes = attributes)) -> attributeApplicationDives path attributes |> pick m.Range attributes - | SynMemberSig.NestedType (nestedType = nestedType) -> traverseSynTypeDefnSig path nestedType + | SynMemberSig.NestedType(nestedType = nestedType) -> traverseSynTypeDefnSig path nestedType match parseTree with | ParsedInput.ImplFile file -> @@ -1077,3 +1089,21 @@ module SyntaxTraversal = l |> List.map (fun x -> dive x x.Range (traverseSynModuleOrNamespaceSig [])) |> pick fileRange l + + let traverseAll (visitor: SyntaxVisitorBase<'T>) (parseTree: ParsedInput) : unit = + let pick _ _ _ diveResults = + let rec loop = + function + | [] -> None + | (_, project) :: rest -> + ignore (project ()) + loop rest + + loop diveResults + + ignore<'T option> (traverseUntil pick parseTree.Range.End visitor parseTree) + + /// traverse an implementation file walking all the way down to SynExpr or TypeAbbrev at a particular location + /// + let Traverse (pos: pos, parseTree, visitor: SyntaxVisitorBase<'T>) = + traverseUntil pick pos visitor parseTree diff --git a/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fsi b/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fsi index 0a17dd468e..ef118baf12 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fsi +++ b/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fsi @@ -31,6 +31,7 @@ type SyntaxVisitorBase<'T> = default VisitBinding: path: SyntaxVisitorPath * defaultTraverse: (SynBinding -> 'T option) * synBinding: SynBinding -> 'T option + abstract VisitBinding: path: SyntaxVisitorPath * defaultTraverse: (SynBinding -> 'T option) * synBinding: SynBinding -> 'T option @@ -48,6 +49,7 @@ type SyntaxVisitorBase<'T> = defaultTraverse: (SynExpr -> 'T option) * synExpr: SynExpr -> 'T option + default VisitExpr: path: SyntaxVisitorPath * traverseSynExpr: (SynExpr -> 'T option) * @@ -57,6 +59,7 @@ type SyntaxVisitorBase<'T> = abstract VisitHashDirective: path: SyntaxVisitorPath * hashDirective: ParsedHashDirective * range: range -> 'T option + default VisitHashDirective: path: SyntaxVisitorPath * hashDirective: ParsedHashDirective * range: range -> 'T option abstract VisitImplicitInherit: @@ -66,6 +69,7 @@ type SyntaxVisitorBase<'T> = synArgs: SynExpr * range: range -> 'T option + default VisitImplicitInherit: path: SyntaxVisitorPath * defaultTraverse: (SynExpr -> 'T option) * @@ -82,6 +86,7 @@ type SyntaxVisitorBase<'T> = members: SynMemberDefns * range: range -> 'T option + default VisitInheritSynMemberDefn: path: SyntaxVisitorPath * componentInfo: SynComponentInfo * @@ -110,6 +115,7 @@ type SyntaxVisitorBase<'T> = bindings: SynBinding list * range: range -> 'T option + default VisitLetOrUse: path: SyntaxVisitorPath * isRecursive: bool * @@ -121,6 +127,7 @@ type SyntaxVisitorBase<'T> = abstract VisitMatchClause: path: SyntaxVisitorPath * defaultTraverse: (SynMatchClause -> 'T option) * matchClause: SynMatchClause -> 'T option + default VisitMatchClause: path: SyntaxVisitorPath * defaultTraverse: (SynMatchClause -> 'T option) * matchClause: SynMatchClause -> 'T option @@ -128,6 +135,7 @@ type SyntaxVisitorBase<'T> = abstract VisitModuleDecl: path: SyntaxVisitorPath * defaultTraverse: (SynModuleDecl -> 'T option) * synModuleDecl: SynModuleDecl -> 'T option + default VisitModuleDecl: path: SyntaxVisitorPath * defaultTraverse: (SynModuleDecl -> 'T option) * synModuleDecl: SynModuleDecl -> 'T option @@ -140,6 +148,7 @@ type SyntaxVisitorBase<'T> = abstract VisitRecordField: path: SyntaxVisitorPath * copyOpt: SynExpr option * recordField: SynLongIdent option -> 'T option + default VisitRecordField: path: SyntaxVisitorPath * copyOpt: SynExpr option * recordField: SynLongIdent option -> 'T option @@ -148,6 +157,7 @@ type SyntaxVisitorBase<'T> = abstract VisitType: path: SyntaxVisitorPath * defaultTraverse: (SynType -> 'T option) * synType: SynType -> 'T option + default VisitType: path: SyntaxVisitorPath * defaultTraverse: (SynType -> 'T option) * synType: SynType -> 'T option abstract VisitTypeAbbrev: path: SyntaxVisitorPath * synType: SynType * range: range -> 'T option @@ -158,12 +168,14 @@ type SyntaxVisitorBase<'T> = abstract VisitModuleOrNamespaceSig: path: SyntaxVisitorPath * synModuleOrNamespaceSig: SynModuleOrNamespaceSig -> 'T option + default VisitModuleOrNamespaceSig: path: SyntaxVisitorPath * synModuleOrNamespaceSig: SynModuleOrNamespaceSig -> 'T option abstract VisitModuleSigDecl: path: SyntaxVisitorPath * defaultTraverse: (SynModuleSigDecl -> 'T option) * synModuleSigDecl: SynModuleSigDecl -> 'T option + default VisitModuleSigDecl: path: SyntaxVisitorPath * defaultTraverse: (SynModuleSigDecl -> 'T option) * synModuleSigDecl: SynModuleSigDecl -> 'T option @@ -187,4 +199,6 @@ module public SyntaxTraversal = val internal pick: pos: pos -> outerRange: range -> debugObj: obj -> diveResults: (range * (unit -> 'a option)) list -> 'a option + val internal traverseAll: visitor: SyntaxVisitorBase<'T> -> parseTree: ParsedInput -> unit + val Traverse: pos: pos * parseTree: ParsedInput * visitor: SyntaxVisitorBase<'T> -> 'T option diff --git a/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fs b/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fs index 17b8db11c2..8836b3afab 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fs @@ -162,15 +162,11 @@ type OpenStatementInsertionPoint = module Entity = let getRelativeNamespace (targetNs: ShortIdents) (sourceNs: ShortIdents) = let rec loop index = - if index > targetNs.Length - 1 then - sourceNs[index..] + if index > targetNs.Length - 1 then sourceNs[index..] // target namespace is not a full parent of source namespace, keep the source ns as is - elif index > sourceNs.Length - 1 then - sourceNs - elif targetNs[index] = sourceNs[index] then - loop (index + 1) - else - sourceNs[index..] + elif index > sourceNs.Length - 1 then sourceNs + elif targetNs[index] = sourceNs[index] then loop (index + 1) + else sourceNs[index..] if sourceNs.Length = 0 || targetNs.Length = 0 then sourceNs @@ -267,8 +263,8 @@ module ParsedInput = let rec collect expr acc = match expr with - | SynExpr.Sequential (_, _, e1, (SynExpr.Sequential _ as e2), _) -> collect e2 (e1 :: acc) - | SynExpr.Sequential (_, _, e1, e2, _) -> e2 :: e1 :: acc + | SynExpr.Sequential(_, _, e1, (SynExpr.Sequential _ as e2), _) -> collect e2 (e1 :: acc) + | SynExpr.Sequential(_, _, e1, e2, _) -> e2 :: e1 :: acc | _ -> acc match collect expr [] with @@ -296,15 +292,15 @@ module ParsedInput = let expr = expr // fix debugger locals match expr with - | SynExpr.LongIdent(longDotId = SynLongIdent ([ id ], [], [ Some _ ])) -> defaultTraverse (SynExpr.Ident(id)) + | SynExpr.LongIdent(longDotId = SynLongIdent([ id ], [], [ Some _ ])) -> defaultTraverse (SynExpr.Ident(id)) - | SynExpr.LongIdent (_, lid, _altNameRefCell, _) -> - let (SynLongIdent (longIdent, _, _)) = lid + | SynExpr.LongIdent(_, lid, _altNameRefCell, _) -> + let (SynLongIdent(longIdent, _, _)) = lid let _, r = CheckLongIdent longIdent Some r - | SynExpr.LongIdentSet (lid, synExpr, _) -> - let (SynLongIdent (longIdent, _, _)) = lid + | SynExpr.LongIdentSet(lid, synExpr, _) -> + let (SynLongIdent(longIdent, _, _)) = lid if SyntaxTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr @@ -312,8 +308,8 @@ module ParsedInput = let _, r = CheckLongIdent longIdent Some r - | SynExpr.DotGet (synExpr, _dotm, lid, _) -> - let (SynLongIdent (longIdent, _, _)) = lid + | SynExpr.DotGet(synExpr, _dotm, lid, _) -> + let (SynLongIdent(longIdent, _, _)) = lid if SyntaxTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr @@ -326,7 +322,7 @@ module ParsedInput = // see comment below for SynExpr.DotSet Some(unionRanges synExpr.Range r) - | SynExpr.Set (synExpr, synExpr2, range) -> + | SynExpr.Set(synExpr, synExpr2, range) -> if SyntaxTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr elif SyntaxTraversal.rangeContainsPosLeftEdgeInclusive synExpr2.Range pos then @@ -334,8 +330,8 @@ module ParsedInput = else Some range - | SynExpr.DotSet (synExpr, lid, synExpr2, _) -> - let (SynLongIdent (longIdent, _, _)) = lid + | SynExpr.DotSet(synExpr, lid, synExpr2, _) -> + let (SynLongIdent(longIdent, _, _)) = lid if SyntaxTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr @@ -354,8 +350,8 @@ module ParsedInput = // ------ we want this value Some(unionRanges synExpr.Range r) - | SynExpr.DotNamedIndexedPropertySet (synExpr, lid, synExpr2, synExpr3, _) -> - let (SynLongIdent (longIdent, _, _)) = lid + | SynExpr.DotNamedIndexedPropertySet(synExpr, lid, synExpr2, synExpr3, _) -> + let (SynLongIdent(longIdent, _, _)) = lid if SyntaxTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr @@ -372,19 +368,19 @@ module ParsedInput = Some(unionRanges synExpr.Range r) // get this for e.g. "bar()." - | SynExpr.DiscardAfterMissingQualificationAfterDot (synExpr, _, _) -> + | SynExpr.DiscardAfterMissingQualificationAfterDot(synExpr, _, _) -> if SyntaxTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr else Some synExpr.Range - | SynExpr.FromParseError (synExpr, range) -> + | SynExpr.FromParseError(synExpr, range) -> if SyntaxTraversal.rangeContainsPosLeftEdgeInclusive synExpr.Range pos then traverseSynExpr synExpr else Some range - | SynExpr.App (ExprAtomicFlag.NonAtomic, true, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ ident ])), rhs, _) when + | SynExpr.App(ExprAtomicFlag.NonAtomic, true, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ ident ])), rhs, _) when ident.idText = "op_ArrayLookup" && not (SyntaxTraversal.rangeContainsPosLeftEdgeInclusive rhs.Range pos) -> @@ -396,7 +392,7 @@ module ParsedInput = Some expr.Range | x -> x // we found the answer deeper somewhere in the lhs - | SynExpr.Const (SynConst.Double _, range) -> Some range + | SynExpr.Const(SynConst.Double _, range) -> Some range | _ -> defaultTraverse expr } @@ -416,11 +412,11 @@ module ParsedInput = // foundCandidate = true - we found candidate (DotGet) and now drill down to the left part let rec TryGetExpression foundCandidate expr = match expr with - | SynExpr.Paren (e, _, _, _) when foundCandidate -> TryGetExpression foundCandidate e + | SynExpr.Paren(e, _, _, _) when foundCandidate -> TryGetExpression foundCandidate e - | SynExpr.LongIdent (_isOptional, SynLongIdent (lid, _, _), _altNameRefCell, _m) -> getLidParts lid |> Some + | SynExpr.LongIdent(_isOptional, SynLongIdent(lid, _, _), _altNameRefCell, _m) -> getLidParts lid |> Some - | SynExpr.DotGet (leftPart, _, SynLongIdent (lid, _, _), _) when (rangeContainsPos (rangeOfLid lid) pos) || foundCandidate -> + | SynExpr.DotGet(leftPart, _, SynLongIdent(lid, _, _), _) when (rangeContainsPos (rangeOfLid lid) pos) || foundCandidate -> // requested position is at the lid part of the DotGet // process left part and append result to the result of processing lid let leftPartResult = TryGetExpression true leftPart @@ -429,7 +425,7 @@ module ParsedInput = | Some leftPartResult -> [ yield! leftPartResult; yield! getLidParts lid ] |> Some | None -> None - | SynExpr.FromParseError (synExpr, _) -> TryGetExpression foundCandidate synExpr + | SynExpr.FromParseError(synExpr, _) -> TryGetExpression foundCandidate synExpr | _ -> None @@ -446,7 +442,7 @@ module ParsedInput = SyntaxTraversal.Traverse(pos, parsedInput, visitor) - let traverseLidOrElse pos (optExprIfLeftOfLongId: SynExpr option) (SynLongIdent (lid, dots, _) as lidwd) = + let traverseLidOrElse pos (optExprIfLeftOfLongId: SynExpr option) (SynLongIdent(lid, dots, _) as lidwd) = let resultIfLeftOfLongId = match optExprIfLeftOfLongId with | None -> None @@ -460,7 +456,7 @@ module ParsedInput = match dotSearch with | None -> resultIfLeftOfLongId - | Some (n, _) -> + | Some(n, _) -> let flag = // foo.$ (lid.Length = n + 1) @@ -494,7 +490,7 @@ module ParsedInput = if not (rangeContainsPos expr.Range pos) then match expr with - | SynExpr.DiscardAfterMissingQualificationAfterDot (e, _, _m) -> + | SynExpr.DiscardAfterMissingQualificationAfterDot(e, _, _m) -> // This happens with e.g. "f(x) . $" when you bring up a completion list a few spaces after a dot. The cursor is not 'in the parse tree', // but the dive algorithm will dive down into this node, and this is the one case where we do want to give a result despite the cursor // not properly being in a node. @@ -508,17 +504,17 @@ module ParsedInput = None else match expr with - | SynExpr.LongIdent(longDotId = SynLongIdent ([ id ], [], [ Some _ ])) -> defaultTraverse (SynExpr.Ident(id)) - | SynExpr.LongIdent (_isOptional, lidwd, _altNameRefCell, _m) -> traverseLidOrElse pos None lidwd + | SynExpr.LongIdent(longDotId = SynLongIdent([ id ], [], [ Some _ ])) -> defaultTraverse (SynExpr.Ident(id)) + | SynExpr.LongIdent(_isOptional, lidwd, _altNameRefCell, _m) -> traverseLidOrElse pos None lidwd - | SynExpr.LongIdentSet (lidwd, exprRhs, _m) -> + | SynExpr.LongIdentSet(lidwd, exprRhs, _m) -> [ dive lidwd lidwd.Range (traverseLidOrElse pos None) dive exprRhs exprRhs.Range traverseSynExpr ] |> pick expr - | SynExpr.DotGet (exprLeft, mDot, lidwd, _m) -> + | SynExpr.DotGet(exprLeft, mDot, lidwd, _m) -> let afterDotBeforeLid = withStartEnd mDot.End lidwd.Range.Start mDot [ @@ -528,7 +524,7 @@ module ParsedInput = ] |> pick expr - | SynExpr.DotSet (exprLeft, lidwd, exprRhs, _m) -> + | SynExpr.DotSet(exprLeft, lidwd, exprRhs, _m) -> [ dive exprLeft exprLeft.Range traverseSynExpr dive lidwd lidwd.Range (traverseLidOrElse pos (Some exprLeft)) @@ -536,14 +532,14 @@ module ParsedInput = ] |> pick expr - | SynExpr.Set (exprLeft, exprRhs, _m) -> + | SynExpr.Set(exprLeft, exprRhs, _m) -> [ dive exprLeft exprLeft.Range traverseSynExpr dive exprRhs exprRhs.Range traverseSynExpr ] |> pick expr - | SynExpr.NamedIndexedPropertySet (lidwd, exprIndexer, exprRhs, _m) -> + | SynExpr.NamedIndexedPropertySet(lidwd, exprIndexer, exprRhs, _m) -> [ dive lidwd lidwd.Range (traverseLidOrElse pos None) dive exprIndexer exprIndexer.Range traverseSynExpr @@ -551,7 +547,7 @@ module ParsedInput = ] |> pick expr - | SynExpr.DotNamedIndexedPropertySet (exprLeft, lidwd, exprIndexer, exprRhs, _m) -> + | SynExpr.DotNamedIndexedPropertySet(exprLeft, lidwd, exprIndexer, exprRhs, _m) -> [ dive exprLeft exprLeft.Range traverseSynExpr dive lidwd lidwd.Range (traverseLidOrElse pos (Some exprLeft)) @@ -560,7 +556,7 @@ module ParsedInput = ] |> pick expr - | SynExpr.Const (SynConst.Double _, m) -> + | SynExpr.Const(SynConst.Double _, m) -> if posEq m.End pos then // the cursor is at the dot Some(m.End, false) @@ -568,7 +564,7 @@ module ParsedInput = // the cursor is left of the dot None - | SynExpr.DiscardAfterMissingQualificationAfterDot (e, _, m) -> + | SynExpr.DiscardAfterMissingQualificationAfterDot(e, _, m) -> match traverseSynExpr e with | None -> if posEq m.End pos then @@ -579,7 +575,7 @@ module ParsedInput = None | r -> r - | SynExpr.App (ExprAtomicFlag.NonAtomic, true, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ ident ])), lhs, _m) when + | SynExpr.App(ExprAtomicFlag.NonAtomic, true, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ ident ])), lhs, _m) when ident.idText = "op_ArrayLookup" && not (SyntaxTraversal.rangeContainsPosLeftEdgeInclusive lhs.Range pos) -> @@ -598,7 +594,7 @@ module ParsedInput = let (|ConstructorPats|) pats = match pats with | SynArgPats.Pats ps -> ps - | SynArgPats.NamePatPairs (pats = xs) -> List.map (fun (_, _, pat) -> pat) xs + | SynArgPats.NamePatPairs(pats = xs) -> List.map (fun (_, _, pat) -> pat) xs let inline isPosInRange range = rangeContainsPos range pos @@ -609,7 +605,7 @@ module ParsedInput = List.tryPick (walkSynModuleOrNamespace true) file.Contents and walkSynModuleOrNamespace isTopLevel inp = - let (SynModuleOrNamespace (decls = decls; attribs = Attributes attrs; range = r)) = + let (SynModuleOrNamespace(decls = decls; attribs = Attributes attrs; range = r)) = inp List.tryPick walkAttribute attrs @@ -623,11 +619,11 @@ module ParsedInput = |> Option.orElseWith (fun () -> walkExprWithKind (Some EntityKind.Type) attr.ArgExpr) and walkTypar typar = - let (SynTypar (ident, _, _)) = typar + let (SynTypar(ident, _, _)) = typar ifPosInRange ident.idRange (fun _ -> Some EntityKind.Type) and walkTyparDecl typarDecl = - let (SynTyparDecl (Attributes attrs, typar, intersectionContraints, _)) = typarDecl + let (SynTyparDecl(Attributes attrs, typar, intersectionContraints, _)) = typarDecl List.tryPick walkAttribute attrs |> Option.orElseWith (fun () -> walkTypar typar) @@ -635,47 +631,47 @@ module ParsedInput = and walkTypeConstraint cx = match cx with - | SynTypeConstraint.WhereTyparDefaultsToType (t1, t2, _) -> walkTypar t1 |> Option.orElseWith (fun () -> walkType t2) - | SynTypeConstraint.WhereTyparIsValueType (t, _) -> walkTypar t - | SynTypeConstraint.WhereTyparIsReferenceType (t, _) -> walkTypar t - | SynTypeConstraint.WhereTyparIsUnmanaged (t, _) -> walkTypar t - | SynTypeConstraint.WhereTyparSupportsNull (t, _) -> walkTypar t - | SynTypeConstraint.WhereTyparIsComparable (t, _) -> walkTypar t - | SynTypeConstraint.WhereTyparIsEquatable (t, _) -> walkTypar t - | SynTypeConstraint.WhereTyparSubtypeOfType (t, ty, _) -> walkTypar t |> Option.orElseWith (fun () -> walkType ty) - | SynTypeConstraint.WhereTyparSupportsMember (TypesForTypar ts, sign, _) -> + | SynTypeConstraint.WhereTyparDefaultsToType(t1, t2, _) -> walkTypar t1 |> Option.orElseWith (fun () -> walkType t2) + | SynTypeConstraint.WhereTyparIsValueType(t, _) -> walkTypar t + | SynTypeConstraint.WhereTyparIsReferenceType(t, _) -> walkTypar t + | SynTypeConstraint.WhereTyparIsUnmanaged(t, _) -> walkTypar t + | SynTypeConstraint.WhereTyparSupportsNull(t, _) -> walkTypar t + | SynTypeConstraint.WhereTyparIsComparable(t, _) -> walkTypar t + | SynTypeConstraint.WhereTyparIsEquatable(t, _) -> walkTypar t + | SynTypeConstraint.WhereTyparSubtypeOfType(t, ty, _) -> walkTypar t |> Option.orElseWith (fun () -> walkType ty) + | SynTypeConstraint.WhereTyparSupportsMember(TypesForTypar ts, sign, _) -> List.tryPick walkType ts |> Option.orElseWith (fun () -> walkMemberSig sign) - | SynTypeConstraint.WhereTyparIsEnum (t, ts, _) -> walkTypar t |> Option.orElseWith (fun () -> List.tryPick walkType ts) - | SynTypeConstraint.WhereTyparIsDelegate (t, ts, _) -> walkTypar t |> Option.orElseWith (fun () -> List.tryPick walkType ts) - | SynTypeConstraint.WhereSelfConstrained (ts, _) -> walkType ts + | SynTypeConstraint.WhereTyparIsEnum(t, ts, _) -> walkTypar t |> Option.orElseWith (fun () -> List.tryPick walkType ts) + | SynTypeConstraint.WhereTyparIsDelegate(t, ts, _) -> walkTypar t |> Option.orElseWith (fun () -> List.tryPick walkType ts) + | SynTypeConstraint.WhereSelfConstrained(ts, _) -> walkType ts and walkPatWithKind (kind: EntityKind option) pat = match pat with - | SynPat.Ands (pats, _) -> List.tryPick walkPat pats - | SynPat.As (pat1, pat2, _) -> List.tryPick walkPat [ pat1; pat2 ] - | SynPat.Typed (pat, t, _) -> walkPat pat |> Option.orElseWith (fun () -> walkType t) - | SynPat.Attrib (pat, Attributes attrs, _) -> walkPat pat |> Option.orElseWith (fun () -> List.tryPick walkAttribute attrs) - | SynPat.Or (pat1, pat2, _, _) - | SynPat.ListCons (pat1, pat2, _, _) -> List.tryPick walkPat [ pat1; pat2 ] - | SynPat.LongIdent (typarDecls = typars; argPats = ConstructorPats pats; range = r) -> + | SynPat.Ands(pats, _) -> List.tryPick walkPat pats + | SynPat.As(pat1, pat2, _) -> List.tryPick walkPat [ pat1; pat2 ] + | SynPat.Typed(pat, t, _) -> walkPat pat |> Option.orElseWith (fun () -> walkType t) + | SynPat.Attrib(pat, Attributes attrs, _) -> walkPat pat |> Option.orElseWith (fun () -> List.tryPick walkAttribute attrs) + | SynPat.Or(pat1, pat2, _, _) + | SynPat.ListCons(pat1, pat2, _, _) -> List.tryPick walkPat [ pat1; pat2 ] + | SynPat.LongIdent(typarDecls = typars; argPats = ConstructorPats pats; range = r) -> ifPosInRange r (fun _ -> kind) |> Option.orElseWith (fun () -> typars - |> Option.bind (fun (ValTyparDecls (typars, constraints, _)) -> + |> Option.bind (fun (ValTyparDecls(typars, constraints, _)) -> List.tryPick walkTyparDecl typars |> Option.orElseWith (fun () -> List.tryPick walkTypeConstraint constraints))) |> Option.orElseWith (fun () -> List.tryPick walkPat pats) - | SynPat.Tuple (elementPats = pats) -> List.tryPick walkPat pats - | SynPat.Paren (pat, _) -> walkPat pat - | SynPat.ArrayOrList (_, pats, _) -> List.tryPick walkPat pats - | SynPat.IsInst (t, _) -> walkType t - | SynPat.QuoteExpr (e, _) -> walkExpr e + | SynPat.Tuple(elementPats = pats) -> List.tryPick walkPat pats + | SynPat.Paren(pat, _) -> walkPat pat + | SynPat.ArrayOrList(_, pats, _) -> List.tryPick walkPat pats + | SynPat.IsInst(t, _) -> walkType t + | SynPat.QuoteExpr(e, _) -> walkExpr e | _ -> None and walkPat = walkPatWithKind None and walkBinding bind = - let (SynBinding (attributes = Attributes attrs; headPat = pat; returnInfo = returnInfo; expr = e)) = + let (SynBinding(attributes = Attributes attrs; headPat = pat; returnInfo = returnInfo; expr = e)) = bind List.tryPick walkAttribute attrs @@ -683,10 +679,10 @@ module ParsedInput = |> Option.orElseWith (fun () -> walkExpr e) |> Option.orElseWith (fun () -> match returnInfo with - | Some (SynBindingReturnInfo (typeName = t)) -> walkType t + | Some(SynBindingReturnInfo(typeName = t)) -> walkType t | None -> None) - and walkInterfaceImpl (SynInterfaceImpl (bindings = bindings)) = List.tryPick walkBinding bindings + and walkInterfaceImpl (SynInterfaceImpl(bindings = bindings)) = List.tryPick walkBinding bindings and walkType ty = match ty with @@ -697,20 +693,20 @@ module ParsedInput = ifPosInRange ident.Range (fun _ -> Some EntityKind.Type) with _ -> None - | SynType.App (ty, _, types, _, _, _, _) -> walkType ty |> Option.orElseWith (fun () -> List.tryPick walkType types) - | SynType.LongIdentApp (_, _, _, types, _, _, _) -> List.tryPick walkType types - | SynType.Tuple (path = segments) -> getTypeFromTuplePath segments |> List.tryPick walkType - | SynType.Array (_, t, _) -> walkType t - | SynType.Fun (argType = t1; returnType = t2) -> walkType t1 |> Option.orElseWith (fun () -> walkType t2) - | SynType.WithGlobalConstraints (t, _, _) -> walkType t - | SynType.HashConstraint (t, _) -> walkType t - | SynType.Or (t1, t2, _, _) -> walkType t1 |> Option.orElseWith (fun () -> walkType t2) - | SynType.MeasurePower (t, _, _) -> walkType t - | SynType.Paren (t, _) - | SynType.SignatureParameter (usedType = t) -> walkType t - | SynType.StaticConstantExpr (e, _) -> walkExpr e - | SynType.StaticConstantNamed (ident, value, _) -> List.tryPick walkType [ ident; value ] - | SynType.Intersection (types = types) -> List.tryPick walkType types + | SynType.App(ty, _, types, _, _, _, _) -> walkType ty |> Option.orElseWith (fun () -> List.tryPick walkType types) + | SynType.LongIdentApp(_, _, _, types, _, _, _) -> List.tryPick walkType types + | SynType.Tuple(path = segments) -> getTypeFromTuplePath segments |> List.tryPick walkType + | SynType.Array(_, t, _) -> walkType t + | SynType.Fun(argType = t1; returnType = t2) -> walkType t1 |> Option.orElseWith (fun () -> walkType t2) + | SynType.WithGlobalConstraints(t, _, _) -> walkType t + | SynType.HashConstraint(t, _) -> walkType t + | SynType.Or(t1, t2, _, _) -> walkType t1 |> Option.orElseWith (fun () -> walkType t2) + | SynType.MeasurePower(t, _, _) -> walkType t + | SynType.Paren(t, _) + | SynType.SignatureParameter(usedType = t) -> walkType t + | SynType.StaticConstantExpr(e, _) -> walkExpr e + | SynType.StaticConstantNamed(ident, value, _) -> List.tryPick walkType [ ident; value ] + | SynType.Intersection(types = types) -> List.tryPick walkType types | SynType.Anon _ | SynType.AnonRecd _ | SynType.LongIdent _ @@ -719,7 +715,7 @@ module ParsedInput = | SynType.FromParseError _ -> None and walkClause clause = - let (SynMatchClause (pat = pat; whenExpr = e1; resultExpr = e2)) = clause + let (SynMatchClause(pat = pat; whenExpr = e1; resultExpr = e2)) = clause walkPatWithKind (Some EntityKind.Type) pat |> Option.orElseWith (fun () -> walkExpr e2) @@ -727,10 +723,10 @@ module ParsedInput = and walkExprWithKind parentKind expr = match expr with - | SynExpr.LongIdent(longDotId = SynLongIdent (id = [ ident ]; trivia = [ Some _ ])) -> + | SynExpr.LongIdent(longDotId = SynLongIdent(id = [ ident ]; trivia = [ Some _ ])) -> ifPosInRange ident.idRange (fun _ -> Some(EntityKind.FunctionOrValue false)) - | SynExpr.LongIdent (longDotId = SynLongIdent (dotRanges = dotRanges); range = r) -> + | SynExpr.LongIdent(longDotId = SynLongIdent(dotRanges = dotRanges); range = r) -> match dotRanges with | [] when isPosInRange r -> parentKind @@ -746,81 +742,81 @@ module ParsedInput = None | _ -> None - | SynExpr.LongIdentSet (expr = e) - | SynExpr.DotGet (expr = e) - | SynExpr.DotSet (targetExpr = e) - | SynExpr.Set (targetExpr = e) - | SynExpr.Lazy (expr = e) - | SynExpr.DoBang (expr = e) - | SynExpr.Do (expr = e) - | SynExpr.Assert (expr = e) - | SynExpr.ArrayOrListComputed (expr = e) - | SynExpr.ComputationExpr (expr = e) - | SynExpr.Lambda (body = e) - | SynExpr.DotLambda (expr = e) - | SynExpr.InferredUpcast (expr = e) - | SynExpr.InferredDowncast (expr = e) - | SynExpr.AddressOf (expr = e) - | SynExpr.YieldOrReturn (expr = e) - | SynExpr.YieldOrReturnFrom (expr = e) - | SynExpr.Paren (expr = e) - | SynExpr.Quote (quotedExpr = e) - | SynExpr.Typed (expr = e) -> walkExprWithKind parentKind e - - | SynExpr.NamedIndexedPropertySet (expr1 = e1; expr2 = e2) - | SynExpr.TryFinally (tryExpr = e1; finallyExpr = e2) - | SynExpr.App (funcExpr = e1; argExpr = e2) - | SynExpr.WhileBang (whileExpr = e1; doExpr = e2) - | SynExpr.While (whileExpr = e1; doExpr = e2) - | SynExpr.ForEach (enumExpr = e1; bodyExpr = e2) - | SynExpr.DotIndexedGet (objectExpr = e1; indexArgs = e2) - | SynExpr.DotIndexedSet (objectExpr = e1; indexArgs = e2) - | SynExpr.JoinIn (lhsExpr = e1; rhsExpr = e2) -> + | SynExpr.LongIdentSet(expr = e) + | SynExpr.DotGet(expr = e) + | SynExpr.DotSet(targetExpr = e) + | SynExpr.Set(targetExpr = e) + | SynExpr.Lazy(expr = e) + | SynExpr.DoBang(expr = e) + | SynExpr.Do(expr = e) + | SynExpr.Assert(expr = e) + | SynExpr.ArrayOrListComputed(expr = e) + | SynExpr.ComputationExpr(expr = e) + | SynExpr.Lambda(body = e) + | SynExpr.DotLambda(expr = e) + | SynExpr.InferredUpcast(expr = e) + | SynExpr.InferredDowncast(expr = e) + | SynExpr.AddressOf(expr = e) + | SynExpr.YieldOrReturn(expr = e) + | SynExpr.YieldOrReturnFrom(expr = e) + | SynExpr.Paren(expr = e) + | SynExpr.Quote(quotedExpr = e) + | SynExpr.Typed(expr = e) -> walkExprWithKind parentKind e + + | SynExpr.NamedIndexedPropertySet(expr1 = e1; expr2 = e2) + | SynExpr.TryFinally(tryExpr = e1; finallyExpr = e2) + | SynExpr.App(funcExpr = e1; argExpr = e2) + | SynExpr.WhileBang(whileExpr = e1; doExpr = e2) + | SynExpr.While(whileExpr = e1; doExpr = e2) + | SynExpr.ForEach(enumExpr = e1; bodyExpr = e2) + | SynExpr.DotIndexedGet(objectExpr = e1; indexArgs = e2) + | SynExpr.DotIndexedSet(objectExpr = e1; indexArgs = e2) + | SynExpr.JoinIn(lhsExpr = e1; rhsExpr = e2) -> walkExprWithKind parentKind e1 |> Option.orElseWith (fun () -> walkExprWithKind parentKind e2) - | SynExpr.New (expr = e; targetType = t) - | SynExpr.TypeTest (expr = e; targetType = t) - | SynExpr.Upcast (expr = e; targetType = t) - | SynExpr.Downcast (expr = e; targetType = t) -> walkExprWithKind parentKind e |> Option.orElseWith (fun () -> walkType t) + | SynExpr.New(expr = e; targetType = t) + | SynExpr.TypeTest(expr = e; targetType = t) + | SynExpr.Upcast(expr = e; targetType = t) + | SynExpr.Downcast(expr = e; targetType = t) -> walkExprWithKind parentKind e |> Option.orElseWith (fun () -> walkType t) | Sequentials es - | SynExpr.Tuple (exprs = es) - | SynExpr.ArrayOrList (exprs = es) -> List.tryPick (walkExprWithKind parentKind) es + | SynExpr.Tuple(exprs = es) + | SynExpr.ArrayOrList(exprs = es) -> List.tryPick (walkExprWithKind parentKind) es - | SynExpr.For (identBody = e1; toBody = e2; doBody = e3) - | SynExpr.DotNamedIndexedPropertySet (targetExpr = e1; argExpr = e2; rhsExpr = e3) -> + | SynExpr.For(identBody = e1; toBody = e2; doBody = e3) + | SynExpr.DotNamedIndexedPropertySet(targetExpr = e1; argExpr = e2; rhsExpr = e3) -> List.tryPick (walkExprWithKind parentKind) [ e1; e2; e3 ] - | SynExpr.TryWith (tryExpr = e; withCases = clauses) - | SynExpr.MatchBang (expr = e; clauses = clauses) - | SynExpr.Match (expr = e; clauses = clauses) -> + | SynExpr.TryWith(tryExpr = e; withCases = clauses) + | SynExpr.MatchBang(expr = e; clauses = clauses) + | SynExpr.Match(expr = e; clauses = clauses) -> walkExprWithKind parentKind e |> Option.orElseWith (fun () -> List.tryPick walkClause clauses) - | SynExpr.MatchLambda (matchClauses = clauses) -> List.tryPick walkClause clauses + | SynExpr.MatchLambda(matchClauses = clauses) -> List.tryPick walkClause clauses - | SynExpr.Record (_, _, fields, r) -> + | SynExpr.Record(_, _, fields, r) -> ifPosInRange r (fun _ -> fields - |> List.tryPick (fun (SynExprRecordField (expr = e)) -> e |> Option.bind (walkExprWithKind parentKind))) + |> List.tryPick (fun (SynExprRecordField(expr = e)) -> e |> Option.bind (walkExprWithKind parentKind))) - | SynExpr.ObjExpr (objType = ty; bindings = bindings; members = ms; extraImpls = ifaces) -> + | SynExpr.ObjExpr(objType = ty; bindings = bindings; members = ms; extraImpls = ifaces) -> let bindings = unionBindingAndMembers bindings ms walkType ty |> Option.orElseWith (fun () -> List.tryPick walkBinding bindings) |> Option.orElseWith (fun () -> List.tryPick walkInterfaceImpl ifaces) - | SynExpr.TypeApp (expr = e; typeArgs = tys) -> + | SynExpr.TypeApp(expr = e; typeArgs = tys) -> walkExprWithKind (Some EntityKind.Type) e |> Option.orElseWith (fun () -> List.tryPick walkType tys) - | SynExpr.LetOrUse (bindings = bindings; body = e) -> + | SynExpr.LetOrUse(bindings = bindings; body = e) -> List.tryPick walkBinding bindings |> Option.orElseWith (fun () -> walkExprWithKind parentKind e) - | SynExpr.IfThenElse (ifExpr = e1; thenExpr = e2; elseExpr = e3) -> + | SynExpr.IfThenElse(ifExpr = e1; thenExpr = e2; elseExpr = e3) -> walkExprWithKind parentKind e1 |> Option.orElseWith (fun () -> walkExprWithKind parentKind e2) |> Option.orElseWith (fun () -> @@ -830,16 +826,16 @@ module ParsedInput = | SynExpr.Ident ident -> ifPosInRange ident.idRange (fun _ -> Some(EntityKind.FunctionOrValue false)) - | SynExpr.LetOrUseBang (rhs = e1; andBangs = es; body = e2) -> + | SynExpr.LetOrUseBang(rhs = e1; andBangs = es; body = e2) -> [ yield e1 - for SynExprAndBang (body = eAndBang) in es do + for SynExprAndBang(body = eAndBang) in es do yield eAndBang yield e2 ] |> List.tryPick (walkExprWithKind parentKind) - | SynExpr.TraitCall (TypesForTypar ts, sign, e, _) -> + | SynExpr.TraitCall(TypesForTypar ts, sign, e, _) -> List.tryPick walkType ts |> Option.orElseWith (fun () -> walkMemberSig sign) |> Option.orElseWith (fun () -> walkExprWithKind parentKind e) @@ -850,67 +846,67 @@ module ParsedInput = and walkSimplePat pat = match pat with - | SynSimplePat.Attrib (pat, Attributes attrs, _) -> + | SynSimplePat.Attrib(pat, Attributes attrs, _) -> walkSimplePat pat |> Option.orElseWith (fun () -> List.tryPick walkAttribute attrs) - | SynSimplePat.Typed (pat, t, _) -> walkSimplePat pat |> Option.orElseWith (fun () -> walkType t) + | SynSimplePat.Typed(pat, t, _) -> walkSimplePat pat |> Option.orElseWith (fun () -> walkType t) | _ -> None and walkField synField = - let (SynField (attributes = Attributes attrs; fieldType = t)) = synField + let (SynField(attributes = Attributes attrs; fieldType = t)) = synField List.tryPick walkAttribute attrs |> Option.orElseWith (fun () -> walkType t) and walkValSig synValSig = - let (SynValSig (attributes = Attributes attrs; synType = t)) = synValSig + let (SynValSig(attributes = Attributes attrs; synType = t)) = synValSig List.tryPick walkAttribute attrs |> Option.orElseWith (fun () -> walkType t) and walkMemberSig membSig = match membSig with - | SynMemberSig.Inherit (t, _) -> walkType t + | SynMemberSig.Inherit(t, _) -> walkType t - | SynMemberSig.Member (memberSig = vs) -> walkValSig vs + | SynMemberSig.Member(memberSig = vs) -> walkValSig vs - | SynMemberSig.Interface (t, _) -> walkType t + | SynMemberSig.Interface(t, _) -> walkType t - | SynMemberSig.ValField (f, _) -> walkField f + | SynMemberSig.ValField(f, _) -> walkField f - | SynMemberSig.NestedType(nestedType = SynTypeDefnSig.SynTypeDefnSig (typeInfo = info; typeRepr = repr; members = memberSigs)) -> + | SynMemberSig.NestedType(nestedType = SynTypeDefnSig.SynTypeDefnSig(typeInfo = info; typeRepr = repr; members = memberSigs)) -> walkComponentInfo false info |> Option.orElseWith (fun () -> walkTypeDefnSigRepr repr) |> Option.orElseWith (fun () -> List.tryPick walkMemberSig memberSigs) and walkMember memb = match memb with - | SynMemberDefn.AbstractSlot (slotSig = valSig) -> walkValSig valSig + | SynMemberDefn.AbstractSlot(slotSig = valSig) -> walkValSig valSig - | SynMemberDefn.Member (binding, _) -> walkBinding binding + | SynMemberDefn.Member(binding, _) -> walkBinding binding - | SynMemberDefn.GetSetMember (getBinding, setBinding, _, _) -> + | SynMemberDefn.GetSetMember(getBinding, setBinding, _, _) -> match getBinding, setBinding with | None, None -> None | Some binding, None | None, Some binding -> walkBinding binding | Some getBinding, Some setBinding -> walkBinding getBinding |> Option.orElseWith (fun () -> walkBinding setBinding) - | SynMemberDefn.ImplicitCtor (attributes = Attributes attrs; ctorArgs = SynSimplePats.SimplePats (pats = simplePats)) -> + | SynMemberDefn.ImplicitCtor(attributes = Attributes attrs; ctorArgs = SynSimplePats.SimplePats(pats = simplePats)) -> List.tryPick walkAttribute attrs |> Option.orElseWith (fun () -> List.tryPick walkSimplePat simplePats) - | SynMemberDefn.ImplicitInherit (t, e, _, _) -> walkType t |> Option.orElseWith (fun () -> walkExpr e) + | SynMemberDefn.ImplicitInherit(t, e, _, _) -> walkType t |> Option.orElseWith (fun () -> walkExpr e) - | SynMemberDefn.LetBindings (bindings, _, _, _) -> List.tryPick walkBinding bindings + | SynMemberDefn.LetBindings(bindings, _, _, _) -> List.tryPick walkBinding bindings - | SynMemberDefn.Interface (interfaceType = t; members = members) -> + | SynMemberDefn.Interface(interfaceType = t; members = members) -> walkType t |> Option.orElseWith (fun () -> members |> Option.bind (List.tryPick walkMember)) - | SynMemberDefn.Inherit (t, _, _) -> walkType t + | SynMemberDefn.Inherit(t, _, _) -> walkType t - | SynMemberDefn.ValField (fieldInfo = field) -> walkField field + | SynMemberDefn.ValField(fieldInfo = field) -> walkField field - | SynMemberDefn.NestedType (tdef, _, _) -> walkTypeDefn tdef + | SynMemberDefn.NestedType(tdef, _, _) -> walkTypeDefn tdef - | SynMemberDefn.AutoProperty (attributes = Attributes attrs; typeOpt = t; synExpr = e) -> + | SynMemberDefn.AutoProperty(attributes = Attributes attrs; typeOpt = t; synExpr = e) -> List.tryPick walkAttribute attrs |> Option.orElseWith (fun () -> Option.bind walkType t) |> Option.orElseWith (fun () -> walkExpr e) @@ -922,24 +918,24 @@ module ParsedInput = and walkUnionCaseType inp = match inp with | SynUnionCaseKind.Fields fields -> List.tryPick walkField fields - | SynUnionCaseKind.FullType (t, _) -> walkType t + | SynUnionCaseKind.FullType(t, _) -> walkType t and walkUnionCase synUnionCase = - let (SynUnionCase (attributes = Attributes attrs; caseType = t)) = synUnionCase + let (SynUnionCase(attributes = Attributes attrs; caseType = t)) = synUnionCase List.tryPick walkAttribute attrs |> Option.orElseWith (fun () -> walkUnionCaseType t) and walkTypeDefnSimple synTypeDefn = match synTypeDefn with - | SynTypeDefnSimpleRepr.Enum (cases, _) -> List.tryPick walkEnumCase cases - | SynTypeDefnSimpleRepr.Union (_, cases, _) -> List.tryPick walkUnionCase cases - | SynTypeDefnSimpleRepr.Record (_, fields, _) -> List.tryPick walkField fields - | SynTypeDefnSimpleRepr.TypeAbbrev (_, t, _) -> walkType t + | SynTypeDefnSimpleRepr.Enum(cases, _) -> List.tryPick walkEnumCase cases + | SynTypeDefnSimpleRepr.Union(_, cases, _) -> List.tryPick walkUnionCase cases + | SynTypeDefnSimpleRepr.Record(_, fields, _) -> List.tryPick walkField fields + | SynTypeDefnSimpleRepr.TypeAbbrev(_, t, _) -> walkType t | _ -> None and walkComponentInfo isModule compInfo = - let (SynComponentInfo (Attributes attrs, TyparsAndConstraints (typars, cs1), cs2, _, _, _, _, r)) = + let (SynComponentInfo(Attributes attrs, TyparsAndConstraints(typars, cs1), cs2, _, _, _, _, r)) = compInfo let constraints = cs1 @ cs2 @@ -955,18 +951,18 @@ module ParsedInput = and walkTypeDefnRepr inp = match inp with - | SynTypeDefnRepr.ObjectModel (_, defns, _) -> List.tryPick walkMember defns - | SynTypeDefnRepr.Simple (defn, _) -> walkTypeDefnSimple defn + | SynTypeDefnRepr.ObjectModel(_, defns, _) -> List.tryPick walkMember defns + | SynTypeDefnRepr.Simple(defn, _) -> walkTypeDefnSimple defn | SynTypeDefnRepr.Exception _ -> None and walkTypeDefnSigRepr inp = match inp with - | SynTypeDefnSigRepr.ObjectModel (_, defns, _) -> List.tryPick walkMemberSig defns - | SynTypeDefnSigRepr.Simple (defn, _) -> walkTypeDefnSimple defn + | SynTypeDefnSigRepr.ObjectModel(_, defns, _) -> List.tryPick walkMemberSig defns + | SynTypeDefnSigRepr.Simple(defn, _) -> walkTypeDefnSimple defn | SynTypeDefnSigRepr.Exception _ -> None and walkTypeDefn typeDefn = - let (SynTypeDefn (typeInfo = info; typeRepr = repr; members = members)) = typeDefn + let (SynTypeDefn(typeInfo = info; typeRepr = repr; members = members)) = typeDefn walkComponentInfo false info |> Option.orElseWith (fun () -> walkTypeDefnRepr repr) @@ -976,17 +972,17 @@ module ParsedInput = match decl with | SynModuleDecl.NamespaceFragment fragment -> walkSynModuleOrNamespace isTopLevel fragment - | SynModuleDecl.NestedModule (moduleInfo = info; decls = modules; range = range) -> + | SynModuleDecl.NestedModule(moduleInfo = info; decls = modules; range = range) -> walkComponentInfo true info |> Option.orElseWith (fun () -> ifPosInRange range (fun _ -> List.tryPick (walkSynModuleDecl false) modules)) | SynModuleDecl.Open _ -> None - | SynModuleDecl.Let (_, bindings, _) -> List.tryPick walkBinding bindings + | SynModuleDecl.Let(_, bindings, _) -> List.tryPick walkBinding bindings - | SynModuleDecl.Expr (expr, _) -> walkExpr expr + | SynModuleDecl.Expr(expr, _) -> walkExpr expr - | SynModuleDecl.Types (types, _) -> List.tryPick walkTypeDefn types + | SynModuleDecl.Types(types, _) -> List.tryPick walkTypeDefn types | _ -> None @@ -1019,9 +1015,7 @@ module ParsedInput = let (|Class|Interface|Struct|Unknown|Invalid|) synAttributes = let (|SynAttr|_|) name (attr: SynAttribute) = match attr with - | { - TypeName = SynLongIdent ([ x ], _, _) - } when x.idText = name -> Some() + | { TypeName = SynLongIdent([ x ], _, _) } when x.idText = name -> Some() | _ -> None let rec getKind isClass isInterface isStruct attrs = @@ -1079,17 +1073,17 @@ module ParsedInput = let (|Operator|_|) name e = match e with - | SynExpr.App (ExprAtomicFlag.NonAtomic, - false, - SynExpr.App (ExprAtomicFlag.NonAtomic, true, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ ident ])), lhs, _), - rhs, - _) when ident.idText = name -> Some(lhs, rhs) + | SynExpr.App(ExprAtomicFlag.NonAtomic, + false, + SynExpr.App(ExprAtomicFlag.NonAtomic, true, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ ident ])), lhs, _), + rhs, + _) when ident.idText = name -> Some(lhs, rhs) | _ -> None // checks if we are in a range operator let isAtRangeOp (p: SyntaxVisitorPath) = match p with - | SyntaxNode.SynExpr (SynExpr.IndexRange _) :: _ -> true + | SyntaxNode.SynExpr(SynExpr.IndexRange _) :: _ -> true | _ -> false let (|Setter|_|) e = @@ -1099,7 +1093,7 @@ module ParsedInput = let findSetters argList = match argList with - | SynExpr.Paren (SynExpr.Tuple (false, parameters, _, _), _, _, _) -> + | SynExpr.Paren(SynExpr.Tuple(false, parameters, _, _), _, _, _) -> let setters = HashSet() for p in parameters do @@ -1126,27 +1120,27 @@ module ParsedInput = let (|NewObjectOrMethodCall|_|) e = match e with - | SynExpr.New (_, SynType.LongIdent typeName, arg, _) -> + | SynExpr.New(_, SynType.LongIdent typeName, arg, _) -> // new A() Some(endOfLastIdent typeName, findSetters arg) - | SynExpr.New (_, SynType.App (StripParenTypes (SynType.LongIdent typeName), _, _, _, mGreaterThan, _, _), arg, _) -> + | SynExpr.New(_, SynType.App(StripParenTypes(SynType.LongIdent typeName), _, _, _, mGreaterThan, _, _), arg, _) -> // new A<_>() Some(endOfClosingTokenOrLastIdent mGreaterThan typeName, findSetters arg) - | SynExpr.App (_, false, SynExpr.Ident id, arg, _) -> + | SynExpr.App(_, false, SynExpr.Ident id, arg, _) -> // A() Some(id.idRange.End, findSetters arg) - | SynExpr.App (_, false, SynExpr.TypeApp (SynExpr.Ident id, _, _, _, mGreaterThan, _, _), arg, _) -> + | SynExpr.App(_, false, SynExpr.TypeApp(SynExpr.Ident id, _, _, _, mGreaterThan, _, _), arg, _) -> // A<_>() Some(endOfClosingTokenOrIdent mGreaterThan id, findSetters arg) - | SynExpr.App (_, false, SynExpr.LongIdent (_, lid, _, _), arg, _) -> + | SynExpr.App(_, false, SynExpr.LongIdent(_, lid, _, _), arg, _) -> // A.B() Some(endOfLastIdent lid, findSetters arg) - | SynExpr.App (_, false, SynExpr.TypeApp (SynExpr.LongIdent (_, lid, _, _), _, _, _, mGreaterThan, _, _), arg, _) -> + | SynExpr.App(_, false, SynExpr.TypeApp(SynExpr.LongIdent(_, lid, _, _), _, _, _, mGreaterThan, _, _), arg, _) -> // A.B<_>() Some(endOfClosingTokenOrLastIdent mGreaterThan lid, findSetters arg) | _ -> None @@ -1168,9 +1162,9 @@ module ParsedInput = let (|PartOfParameterList|_|) pos precedingArgument path = match path with - | SyntaxNode.SynExpr (SynExpr.Paren _) :: SyntaxNode.SynExpr (NewObjectOrMethodCall args) :: _ -> + | SyntaxNode.SynExpr(SynExpr.Paren _) :: SyntaxNode.SynExpr(NewObjectOrMethodCall args) :: _ -> if Option.isSome precedingArgument then None else Some args - | SyntaxNode.SynExpr (SynExpr.Tuple (false, elements, commas, _)) :: SyntaxNode.SynExpr (SynExpr.Paren _) :: SyntaxNode.SynExpr (NewObjectOrMethodCall args) :: _ -> + | SyntaxNode.SynExpr(SynExpr.Tuple(false, elements, commas, _)) :: SyntaxNode.SynExpr(SynExpr.Paren _) :: SyntaxNode.SynExpr(NewObjectOrMethodCall args) :: _ -> match precedingArgument with | None -> Some args | Some e -> @@ -1213,9 +1207,9 @@ module ParsedInput = // A $.B - return nothing None - let parseLid pos (SynLongIdent (lid, dots, _)) = + let parseLid pos (SynLongIdent(lid, dots, _)) = match parseLidAux pos [] lid dots with - | Some (parts, residue) -> Some((List.rev parts), residue) + | Some(parts, residue) -> Some((List.rev parts), residue) | None -> None /// Try to determine completion context at the given position within in an attribute using approximate analysis based on line text matching @@ -1225,7 +1219,7 @@ module ParsedInput = // cut off leading attributes, i.e. we cut "[]" to " >]" match str.LastIndexOf ';' with | -1 -> str - | idx when idx < str.Length -> str[ idx + 1 .. ].TrimStart() + | idx when idx < str.Length -> str[idx + 1 ..].TrimStart() | _ -> "" let isLongIdent (lid: string) = @@ -1284,7 +1278,7 @@ module ParsedInput = #endif | -1 -> None | openParenIndex when pos.Column >= openParenIndex + 2 -> - let str = lineStr[ openParenIndex + 2 .. pos.Column - 1 ].TrimStart() + let str = lineStr[openParenIndex + 2 .. pos.Column - 1].TrimStart() let str = cutLeadingAttributes str if isLongIdent str then @@ -1307,8 +1301,8 @@ module ParsedInput = // let rec TryGetCompletionContextInPattern suppressIdentifierCompletions (pat: SynPat) previousContext pos = match pat with - | SynPat.LongIdent (longDotId = id) when rangeContainsPos id.Range pos -> Some(CompletionContext.Pattern PatternContext.Other) - | SynPat.LongIdent (argPats = SynArgPats.NamePatPairs (pats = pats; range = mPairs); longDotId = caseId; range = m) when + | SynPat.LongIdent(longDotId = id) when rangeContainsPos id.Range pos -> Some(CompletionContext.Pattern PatternContext.Other) + | SynPat.LongIdent(argPats = SynArgPats.NamePatPairs(pats = pats; range = mPairs); longDotId = caseId; range = m) when rangeContainsPos m pos -> pats @@ -1327,23 +1321,23 @@ module ParsedInput = Some(CompletionContext.Pattern(PatternContext.UnionCaseFieldIdentifier(referencedFields, caseId.Range))) else None) - | SynPat.LongIdent (argPats = SynArgPats.Pats pats; longDotId = id; range = m) when rangeContainsPos m pos -> + | SynPat.LongIdent(argPats = SynArgPats.Pats pats; longDotId = id; range = m) when rangeContainsPos m pos -> match pats with // fun (Some v| ) -> | [ SynPat.Named _ ] -> Some(CompletionContext.Pattern(PatternContext.PositionalUnionCaseField(None, true, id.Range))) // fun (Case (| )) -> - | [ SynPat.Paren (SynPat.Const (SynConst.Unit, _), m) ] when rangeContainsPos m pos -> + | [ SynPat.Paren(SynPat.Const(SynConst.Unit, _), m) ] when rangeContainsPos m pos -> Some(CompletionContext.Pattern(PatternContext.PositionalUnionCaseField(Some 0, true, id.Range))) // fun (Case (a| )) -> // This could either be the first positional field pattern or the user might want to use named pairs - | [ SynPat.Paren (SynPat.Named _, _) ] -> + | [ SynPat.Paren(SynPat.Named _, _) ] -> Some(CompletionContext.Pattern(PatternContext.PositionalUnionCaseField(Some 0, true, id.Range))) // fun (Case (a| , b)) -> - | [ SynPat.Paren (SynPat.Tuple (elementPats = pats) as pat, _) ] -> + | [ SynPat.Paren(SynPat.Tuple(elementPats = pats) as pat, _) ] -> let context = Some(PatternContext.PositionalUnionCaseField(Some 0, pats.Length = 1, id.Range)) @@ -1352,7 +1346,7 @@ module ParsedInput = | _ -> pats |> List.tryPick (fun pat -> TryGetCompletionContextInPattern false pat None pos) - | SynPat.Record (fieldPats = pats; range = m) when rangeContainsPos m pos -> + | SynPat.Record(fieldPats = pats; range = m) when rangeContainsPos m pos -> pats |> List.tryPick (fun ((_, fieldId), _, pat) -> if rangeContainsPos fieldId.idRange pos then @@ -1377,17 +1371,17 @@ module ParsedInput = Some(CompletionContext.Pattern(PatternContext.RecordFieldIdentifier referencedFields)) else Some(CompletionContext.Pattern PatternContext.Other)) - | SynPat.Ands (pats = pats) - | SynPat.ArrayOrList (elementPats = pats) -> + | SynPat.Ands(pats = pats) + | SynPat.ArrayOrList(elementPats = pats) -> pats |> List.tryPick (fun pat -> TryGetCompletionContextInPattern false pat None pos) - | SynPat.Tuple (elementPats = pats; commaRanges = commas; range = m) -> + | SynPat.Tuple(elementPats = pats; commaRanges = commas; range = m) -> pats |> List.indexed |> List.tryPick (fun (i, pat) -> let context = match previousContext with - | Some (PatternContext.PositionalUnionCaseField (_, isTheOnlyField, caseIdRange)) -> + | Some(PatternContext.PositionalUnionCaseField(_, isTheOnlyField, caseIdRange)) -> Some(PatternContext.PositionalUnionCaseField(Some i, isTheOnlyField, caseIdRange)) | _ -> // No preceding LongIdent => this is a tuple deconstruction @@ -1398,7 +1392,7 @@ module ParsedInput = // Last resort - check for fun (Case (item1 = a, | )) -> // That is, pos is after the last comma and before the end of the tuple match previousContext, List.tryLast commas with - | Some (PatternContext.PositionalUnionCaseField (_, isTheOnlyField, caseIdRange)), Some mComma when + | Some(PatternContext.PositionalUnionCaseField(_, isTheOnlyField, caseIdRange)), Some mComma when rangeBeforePos mComma pos && rangeContainsPos m pos -> Some( @@ -1407,7 +1401,7 @@ module ParsedInput = ) ) | _ -> None) - | SynPat.Named (range = m) when rangeContainsPos m pos -> + | SynPat.Named(range = m) when rangeContainsPos m pos -> if suppressIdentifierCompletions then Some CompletionContext.Invalid else @@ -1415,17 +1409,17 @@ module ParsedInput = |> Option.defaultValue PatternContext.Other |> CompletionContext.Pattern |> Some - | SynPat.FromParseError (pat = pat) - | SynPat.Attrib (pat = pat) -> TryGetCompletionContextInPattern suppressIdentifierCompletions pat previousContext pos - | SynPat.Paren (pat, _) -> TryGetCompletionContextInPattern suppressIdentifierCompletions pat None pos - | SynPat.ListCons (lhsPat = pat1; rhsPat = pat2) - | SynPat.As (lhsPat = pat1; rhsPat = pat2) - | SynPat.Or (lhsPat = pat1; rhsPat = pat2) -> + | SynPat.FromParseError(pat = pat) + | SynPat.Attrib(pat = pat) -> TryGetCompletionContextInPattern suppressIdentifierCompletions pat previousContext pos + | SynPat.Paren(pat, _) -> TryGetCompletionContextInPattern suppressIdentifierCompletions pat None pos + | SynPat.ListCons(lhsPat = pat1; rhsPat = pat2) + | SynPat.As(lhsPat = pat1; rhsPat = pat2) + | SynPat.Or(lhsPat = pat1; rhsPat = pat2) -> TryGetCompletionContextInPattern suppressIdentifierCompletions pat1 None pos |> Option.orElseWith (fun () -> TryGetCompletionContextInPattern suppressIdentifierCompletions pat2 None pos) - | SynPat.IsInst (_, m) when rangeContainsPos m pos -> Some CompletionContext.Type + | SynPat.IsInst(_, m) when rangeContainsPos m pos -> Some CompletionContext.Type | SynPat.Wild m when rangeContainsPos m pos && m.StartColumn <> m.EndColumn -> Some CompletionContext.Invalid - | SynPat.Typed (pat = pat; targetType = synType) -> + | SynPat.Typed(pat = pat; targetType = synType) -> if rangeContainsPos pat.Range pos then TryGetCompletionContextInPattern suppressIdentifierCompletions pat previousContext pos elif rangeContainsPos synType.Range pos then @@ -1448,14 +1442,14 @@ module ParsedInput = else match expr with // new A($) - | SynExpr.Const (SynConst.Unit, m) when rangeContainsPos m pos -> + | SynExpr.Const(SynConst.Unit, m) when rangeContainsPos m pos -> match path with - | SyntaxNode.SynExpr (NewObjectOrMethodCall args) :: _ -> Some(CompletionContext.ParameterList args) + | SyntaxNode.SynExpr(NewObjectOrMethodCall args) :: _ -> Some(CompletionContext.ParameterList args) | _ -> defaultTraverse expr // new (... A$) | SynExpr.Ident id - | SynExpr.LongIdent(longDotId = SynLongIdent ([ id ], [], [ Some _ ])) when id.idRange.End = pos -> + | SynExpr.LongIdent(longDotId = SynLongIdent([ id ], [], [ Some _ ])) when id.idRange.End = pos -> match path with | PartOfParameterList pos None args -> Some(CompletionContext.ParameterList args) | _ -> defaultTraverse expr @@ -1469,13 +1463,13 @@ module ParsedInput = | PartOfParameterList pos precedingArgument args -> Some(CompletionContext.ParameterList args) | _ -> defaultTraverse expr - | SynExpr.Record (None, None, [], _) -> Some(CompletionContext.RecordField RecordContext.Empty) + | SynExpr.Record(None, None, [], _) -> Some(CompletionContext.RecordField RecordContext.Empty) // Unchecked.defaultof - | SynExpr.TypeApp (typeArgsRange = range) when rangeContainsPos range pos -> Some CompletionContext.Type + | SynExpr.TypeApp(typeArgsRange = range) when rangeContainsPos range pos -> Some CompletionContext.Type // fun (Some v$ ) -> - | SynExpr.Lambda(parsedData = Some (pats, _)) -> + | SynExpr.Lambda(parsedData = Some(pats, _)) -> pats |> List.tryPick (fun pat -> TryGetCompletionContextInPattern true pat None pos) |> Option.orElseWith (fun () -> defaultTraverse expr) @@ -1486,10 +1480,10 @@ module ParsedInput = let contextFromTreePath completionPath = // detect records usage in constructor match path with - | SyntaxNode.SynExpr _ :: SyntaxNode.SynBinding _ :: SyntaxNode.SynMemberDefn _ :: SyntaxNode.SynTypeDefn (SynTypeDefn(typeInfo = SynComponentInfo(longId = [ id ]))) :: _ -> - RecordContext.Constructor(id.idText) + | SyntaxNode.SynExpr _ :: SyntaxNode.SynBinding _ :: SyntaxNode.SynMemberDefn _ :: SyntaxNode.SynTypeDefn(SynTypeDefn( + typeInfo = SynComponentInfo(longId = [ id ]))) :: _ -> RecordContext.Constructor(id.idText) - | SyntaxNode.SynExpr (SynExpr.Record (None, _, fields, _)) :: _ -> + | SyntaxNode.SynExpr(SynExpr.Record(None, _, fields, _)) :: _ -> let isFirstField = match field, fields with | Some contextLid, SynExprRecordField(fieldName = lid, _) :: _ -> contextLid.Range = lid.Range @@ -1498,7 +1492,7 @@ module ParsedInput = RecordContext.New(completionPath, isFirstField) // Unfinished `{ xxx }` expression considered a record field by the tree visitor. - | SyntaxNode.SynExpr (SynExpr.ComputationExpr _) :: _ -> RecordContext.New(completionPath, true) + | SyntaxNode.SynExpr(SynExpr.ComputationExpr _) :: _ -> RecordContext.New(completionPath, true) | _ -> RecordContext.New(completionPath, false) @@ -1508,7 +1502,7 @@ module ParsedInput = | Some completionPath -> let recordContext = match copyOpt with - | Some (s: SynExpr) -> RecordContext.CopyOnUpdate(s.Range, completionPath) + | Some(s: SynExpr) -> RecordContext.CopyOnUpdate(s.Range, completionPath) | None -> contextFromTreePath completionPath Some(CompletionContext.RecordField recordContext) @@ -1534,7 +1528,7 @@ module ParsedInput = ( path, defaultTraverse, - (SynBinding (headPat = headPat; trivia = trivia; returnInfo = returnInfo) as synBinding) + (SynBinding(headPat = headPat; trivia = trivia; returnInfo = returnInfo) as synBinding) ) = let isOverride leadingKeyword = @@ -1544,12 +1538,12 @@ module ParsedInput = let overrideContext path = match path with - | _ :: SyntaxNode.SynTypeDefn (SynTypeDefn(typeInfo = SynComponentInfo(longId = [ enclosingType ]))) :: _ -> + | _ :: SyntaxNode.SynTypeDefn(SynTypeDefn(typeInfo = SynComponentInfo(longId = [ enclosingType ]))) :: _ -> Some(CompletionContext.MethodOverride enclosingType.idRange) | _ -> Some CompletionContext.Invalid match returnInfo with - | Some (SynBindingReturnInfo (range = m)) when rangeContainsPos m pos -> Some CompletionContext.Type + | Some(SynBindingReturnInfo(range = m)) when rangeContainsPos m pos -> Some CompletionContext.Type | _ -> match headPat with @@ -1557,7 +1551,7 @@ module ParsedInput = | SynPat.FromParseError _ when isOverride trivia.LeadingKeyword -> overrideContext path // override this.| - | SynPat.Named(ident = SynIdent (ident = selfId)) when + | SynPat.Named(ident = SynIdent(ident = selfId)) when isOverride trivia.LeadingKeyword && selfId.idRange.End.IsAdjacentTo pos -> overrideContext path @@ -1568,7 +1562,7 @@ module ParsedInput = -> overrideContext path - | SynPat.LongIdent (longDotId = lidwd; argPats = SynArgPats.Pats pats; range = m) when rangeContainsPos m pos -> + | SynPat.LongIdent(longDotId = lidwd; argPats = SynArgPats.Pats pats; range = m) when rangeContainsPos m pos -> if rangeContainsPos lidwd.Range pos then // let fo|o x = () Some CompletionContext.Invalid @@ -1577,8 +1571,8 @@ module ParsedInput = |> List.tryPick (fun pat -> TryGetCompletionContextInPattern true pat None pos) |> Option.orElseWith (fun () -> defaultTraverse synBinding) - | SynPat.Named (range = range) - | SynPat.As (_, SynPat.Named (range = range), _) when rangeContainsPos range pos -> + | SynPat.Named(range = range) + | SynPat.As(_, SynPat.Named(range = range), _) when rangeContainsPos range pos -> // let fo|o = 1 Some CompletionContext.Invalid @@ -1591,7 +1585,7 @@ module ParsedInput = else None - member _.VisitModuleOrNamespace(_, SynModuleOrNamespace (longId = idents)) = + member _.VisitModuleOrNamespace(_, SynModuleOrNamespace(longId = idents)) = match List.tryLast idents with | Some lastIdent when pos.Line = lastIdent.idRange.EndLine @@ -1608,7 +1602,7 @@ module ParsedInput = None | _ -> None - member _.VisitComponentInfo(_, SynComponentInfo (range = range)) = + member _.VisitComponentInfo(_, SynComponentInfo(range = range)) = // No completions in component info (unless it's within an attribute) // /// XmlDo| // type R = class end @@ -1630,8 +1624,8 @@ module ParsedInput = |> List.tryPick (fun pat -> match pat with // type C (x| ) - | SynSimplePat.Id (range = range) when rangeContainsPos range pos -> Some CompletionContext.Invalid - | SynSimplePat.Typed (pat = SynSimplePat.Id (range = idRange); targetType = synType) -> + | SynSimplePat.Id(range = range) when rangeContainsPos range pos -> Some CompletionContext.Invalid + | SynSimplePat.Typed(pat = SynSimplePat.Id(range = idRange); targetType = synType) -> // type C (x|: int) -> if rangeContainsPos idRange pos then Some CompletionContext.Invalid @@ -1648,7 +1642,7 @@ module ParsedInput = member _.VisitModuleDecl(_, defaultTraverse, decl) = match decl with - | SynModuleDecl.Open (target, m) -> + | SynModuleDecl.Open(target, m) -> // in theory, this means we're "in an open" // in practice, because the parse tree/visitors do not handle attributes well yet, need extra check below to ensure not e.g. $here$ // open System @@ -1681,7 +1675,7 @@ module ParsedInput = member _.VisitRecordDefn(_, fields, _) = fields - |> List.tryPick (fun (SynField (idOpt = idOpt; range = fieldRange)) -> + |> List.tryPick (fun (SynField(idOpt = idOpt; range = fieldRange)) -> match idOpt with | Some id when rangeContainsPos id.idRange pos -> Some(CompletionContext.RecordField(RecordContext.Declaration true)) @@ -1692,7 +1686,7 @@ module ParsedInput = member _.VisitUnionDefn(_, cases, _) = cases - |> List.tryPick (fun (SynUnionCase (ident = SynIdent (id, _); caseType = caseType)) -> + |> List.tryPick (fun (SynUnionCase(ident = SynIdent(id, _); caseType = caseType)) -> if rangeContainsPos id.idRange pos then // No completions in a union case identifier Some CompletionContext.Invalid @@ -1700,7 +1694,7 @@ module ParsedInput = match caseType with | SynUnionCaseKind.Fields fieldCases -> fieldCases - |> List.tryPick (fun (SynField (idOpt = fieldIdOpt; range = fieldRange)) -> + |> List.tryPick (fun (SynField(idOpt = fieldIdOpt; range = fieldRange)) -> match fieldIdOpt with // No completions in a union case field identifier | Some id when rangeContainsPos id.idRange pos -> Some CompletionContext.Invalid @@ -1713,7 +1707,7 @@ module ParsedInput = member _.VisitEnumDefn(_, cases, _) = cases - |> List.tryPick (fun (SynEnumCase(ident = SynIdent (ident = id))) -> + |> List.tryPick (fun (SynEnumCase(ident = SynIdent(ident = id))) -> if rangeContainsPos id.idRange pos then // No completions in an enum case identifier Some CompletionContext.Invalid @@ -1759,7 +1753,7 @@ module ParsedInput = // don't need to keep going, namespaces and modules never appear inside Exprs None - override this.VisitModuleOrNamespace(_, SynModuleOrNamespace (longId = longId; range = range)) = + override this.VisitModuleOrNamespace(_, SynModuleOrNamespace(longId = longId; range = range)) = if rangeContainsPos range pos then path <- path @ longId @@ -1772,7 +1766,7 @@ module ParsedInput = let (|ConstructorPats|) pats = match pats with | SynArgPats.Pats ps -> ps - | SynArgPats.NamePatPairs (pats = xs) -> List.map (fun (_, _, pat) -> pat) xs + | SynArgPats.NamePatPairs(pats = xs) -> List.map (fun (_, _, pat) -> pat) xs /// Returns all `Ident`s and `LongIdent`s found in an untyped AST. let getLongIdents (parsedInput: ParsedInput) : IDictionary = @@ -1782,7 +1776,7 @@ module ParsedInput = for ident in longIdent do identsByEndPos[ident.idRange.End] <- longIdent - let addLongIdentWithDots (SynLongIdent (longIdent, lids, _) as value) = + let addLongIdentWithDots (SynLongIdent(longIdent, lids, _) as value) = match longIdent with | [] -> () | [ _ ] as idents -> identsByEndPos[value.Range.End] <- idents @@ -1798,7 +1792,7 @@ module ParsedInput = let rec walkImplFileInput (file: ParsedImplFileInput) = List.iter walkSynModuleOrNamespace file.Contents - and walkSynModuleOrNamespace (SynModuleOrNamespace (decls = decls; attribs = Attributes attrs)) = + and walkSynModuleOrNamespace (SynModuleOrNamespace(decls = decls; attribs = Attributes attrs)) = List.iter walkAttribute attrs List.iter walkSynModuleDecl decls @@ -1806,166 +1800,166 @@ module ParsedInput = addLongIdentWithDots attr.TypeName walkExpr attr.ArgExpr - and walkTyparDecl (SynTyparDecl.SynTyparDecl (Attributes attrs, typar, intersectionConstraints, _)) = + and walkTyparDecl (SynTyparDecl.SynTyparDecl(Attributes attrs, typar, intersectionConstraints, _)) = List.iter walkAttribute attrs walkTypar typar List.iter walkType intersectionConstraints and walkTypeConstraint cx = match cx with - | SynTypeConstraint.WhereTyparIsValueType (t, _) - | SynTypeConstraint.WhereTyparIsReferenceType (t, _) - | SynTypeConstraint.WhereTyparIsUnmanaged (t, _) - | SynTypeConstraint.WhereTyparSupportsNull (t, _) - | SynTypeConstraint.WhereTyparIsComparable (t, _) - | SynTypeConstraint.WhereTyparIsEquatable (t, _) -> walkTypar t - | SynTypeConstraint.WhereTyparDefaultsToType (t, ty, _) - | SynTypeConstraint.WhereTyparSubtypeOfType (t, ty, _) -> + | SynTypeConstraint.WhereTyparIsValueType(t, _) + | SynTypeConstraint.WhereTyparIsReferenceType(t, _) + | SynTypeConstraint.WhereTyparIsUnmanaged(t, _) + | SynTypeConstraint.WhereTyparSupportsNull(t, _) + | SynTypeConstraint.WhereTyparIsComparable(t, _) + | SynTypeConstraint.WhereTyparIsEquatable(t, _) -> walkTypar t + | SynTypeConstraint.WhereTyparDefaultsToType(t, ty, _) + | SynTypeConstraint.WhereTyparSubtypeOfType(t, ty, _) -> walkTypar t walkType ty - | SynTypeConstraint.WhereTyparIsEnum (t, ts, _) - | SynTypeConstraint.WhereTyparIsDelegate (t, ts, _) -> + | SynTypeConstraint.WhereTyparIsEnum(t, ts, _) + | SynTypeConstraint.WhereTyparIsDelegate(t, ts, _) -> walkTypar t List.iter walkType ts - | SynTypeConstraint.WhereTyparSupportsMember (TypesForTypar ts, sign, _) -> + | SynTypeConstraint.WhereTyparSupportsMember(TypesForTypar ts, sign, _) -> List.iter walkType ts walkMemberSig sign - | SynTypeConstraint.WhereSelfConstrained (ty, _) -> walkType ty + | SynTypeConstraint.WhereSelfConstrained(ty, _) -> walkType ty and walkPat pat = match pat with - | SynPat.Tuple (elementPats = pats) - | SynPat.ArrayOrList (_, pats, _) - | SynPat.Ands (pats, _) -> List.iter walkPat pats - | SynPat.Named (SynIdent (ident, _), _, _, _) -> addIdent ident - | SynPat.Typed (pat, t, _) -> + | SynPat.Tuple(elementPats = pats) + | SynPat.ArrayOrList(_, pats, _) + | SynPat.Ands(pats, _) -> List.iter walkPat pats + | SynPat.Named(SynIdent(ident, _), _, _, _) -> addIdent ident + | SynPat.Typed(pat, t, _) -> walkPat pat walkType t - | SynPat.Attrib (pat, Attributes attrs, _) -> + | SynPat.Attrib(pat, Attributes attrs, _) -> walkPat pat List.iter walkAttribute attrs - | SynPat.As (pat1, pat2, _) - | SynPat.Or (pat1, pat2, _, _) - | SynPat.ListCons (pat1, pat2, _, _) -> List.iter walkPat [ pat1; pat2 ] - | SynPat.LongIdent (longDotId = ident; typarDecls = typars; argPats = ConstructorPats pats) -> + | SynPat.As(pat1, pat2, _) + | SynPat.Or(pat1, pat2, _, _) + | SynPat.ListCons(pat1, pat2, _, _) -> List.iter walkPat [ pat1; pat2 ] + | SynPat.LongIdent(longDotId = ident; typarDecls = typars; argPats = ConstructorPats pats) -> addLongIdentWithDots ident typars - |> Option.iter (fun (ValTyparDecls (typars, constraints, _)) -> + |> Option.iter (fun (ValTyparDecls(typars, constraints, _)) -> List.iter walkTyparDecl typars List.iter walkTypeConstraint constraints) List.iter walkPat pats - | SynPat.Paren (pat, _) -> walkPat pat - | SynPat.IsInst (t, _) -> walkType t - | SynPat.QuoteExpr (e, _) -> walkExpr e + | SynPat.Paren(pat, _) -> walkPat pat + | SynPat.IsInst(t, _) -> walkType t + | SynPat.QuoteExpr(e, _) -> walkExpr e | _ -> () and walkTypar (SynTypar _) = () - and walkBinding (SynBinding (attributes = Attributes attrs; headPat = pat; returnInfo = returnInfo; expr = e)) = + and walkBinding (SynBinding(attributes = Attributes attrs; headPat = pat; returnInfo = returnInfo; expr = e)) = List.iter walkAttribute attrs walkPat pat walkExpr e returnInfo - |> Option.iter (fun (SynBindingReturnInfo (typeName = t)) -> walkType t) + |> Option.iter (fun (SynBindingReturnInfo(typeName = t)) -> walkType t) - and walkInterfaceImpl (SynInterfaceImpl (bindings = bindings)) = List.iter walkBinding bindings + and walkInterfaceImpl (SynInterfaceImpl(bindings = bindings)) = List.iter walkBinding bindings and walkType synType = match synType with - | SynType.Array (_, t, _) - | SynType.HashConstraint (t, _) - | SynType.MeasurePower (t, _, _) - | SynType.Paren (t, _) - | SynType.SignatureParameter (usedType = t) -> walkType t - | SynType.Fun (argType = t1; returnType = t2) - | SynType.Or (t1, t2, _, _) -> + | SynType.Array(_, t, _) + | SynType.HashConstraint(t, _) + | SynType.MeasurePower(t, _, _) + | SynType.Paren(t, _) + | SynType.SignatureParameter(usedType = t) -> walkType t + | SynType.Fun(argType = t1; returnType = t2) + | SynType.Or(t1, t2, _, _) -> walkType t1 walkType t2 | SynType.LongIdent ident -> addLongIdentWithDots ident - | SynType.App (ty, _, types, _, _, _, _) -> + | SynType.App(ty, _, types, _, _, _, _) -> walkType ty List.iter walkType types - | SynType.LongIdentApp (_, _, _, types, _, _, _) -> List.iter walkType types - | SynType.Tuple (path = segment) -> getTypeFromTuplePath segment |> List.iter walkType - | SynType.WithGlobalConstraints (t, typeConstraints, _) -> + | SynType.LongIdentApp(_, _, _, types, _, _, _) -> List.iter walkType types + | SynType.Tuple(path = segment) -> getTypeFromTuplePath segment |> List.iter walkType + | SynType.WithGlobalConstraints(t, typeConstraints, _) -> walkType t List.iter walkTypeConstraint typeConstraints - | SynType.StaticConstantExpr (e, _) -> walkExpr e - | SynType.StaticConstantNamed (ident, value, _) -> + | SynType.StaticConstantExpr(e, _) -> walkExpr e + | SynType.StaticConstantNamed(ident, value, _) -> walkType ident walkType value - | SynType.Intersection (types = types) -> List.iter walkType types + | SynType.Intersection(types = types) -> List.iter walkType types | SynType.Anon _ | SynType.AnonRecd _ | SynType.Var _ | SynType.StaticConstant _ | SynType.FromParseError _ -> () - and walkClause (SynMatchClause (pat = pat; whenExpr = e1; resultExpr = e2)) = + and walkClause (SynMatchClause(pat = pat; whenExpr = e1; resultExpr = e2)) = walkPat pat walkExpr e2 e1 |> Option.iter walkExpr and walkSimplePats spats = match spats with - | SynSimplePats.SimplePats (pats = pats) -> List.iter walkSimplePat pats + | SynSimplePats.SimplePats(pats = pats) -> List.iter walkSimplePat pats and walkExpr expr = match expr with - | SynExpr.Paren (expr = e) - | SynExpr.Quote (quotedExpr = e) - | SynExpr.Typed (expr = e) - | SynExpr.InferredUpcast (expr = e) - | SynExpr.InferredDowncast (expr = e) - | SynExpr.AddressOf (expr = e) - | SynExpr.DoBang (expr = e) - | SynExpr.YieldOrReturn (expr = e) - | SynExpr.ArrayOrListComputed (expr = e) - | SynExpr.ComputationExpr (expr = e) - | SynExpr.Do (expr = e) - | SynExpr.Assert (expr = e) - | SynExpr.Lazy (expr = e) - | SynExpr.DotLambda (expr = e) - | SynExpr.IndexFromEnd (expr = e) - | SynExpr.YieldOrReturnFrom (expr = e) -> walkExpr e - - | SynExpr.Lambda (args = pats; body = e) -> + | SynExpr.Paren(expr = e) + | SynExpr.Quote(quotedExpr = e) + | SynExpr.Typed(expr = e) + | SynExpr.InferredUpcast(expr = e) + | SynExpr.InferredDowncast(expr = e) + | SynExpr.AddressOf(expr = e) + | SynExpr.DoBang(expr = e) + | SynExpr.YieldOrReturn(expr = e) + | SynExpr.ArrayOrListComputed(expr = e) + | SynExpr.ComputationExpr(expr = e) + | SynExpr.Do(expr = e) + | SynExpr.Assert(expr = e) + | SynExpr.Lazy(expr = e) + | SynExpr.DotLambda(expr = e) + | SynExpr.IndexFromEnd(expr = e) + | SynExpr.YieldOrReturnFrom(expr = e) -> walkExpr e + + | SynExpr.Lambda(args = pats; body = e) -> walkSimplePats pats walkExpr e - | SynExpr.New (expr = e; targetType = t) - | SynExpr.TypeTest (expr = e; targetType = t) - | SynExpr.Upcast (expr = e; targetType = t) - | SynExpr.Downcast (expr = e; targetType = t) -> + | SynExpr.New(expr = e; targetType = t) + | SynExpr.TypeTest(expr = e; targetType = t) + | SynExpr.Upcast(expr = e; targetType = t) + | SynExpr.Downcast(expr = e; targetType = t) -> walkExpr e walkType t - | SynExpr.Tuple (exprs = es) + | SynExpr.Tuple(exprs = es) | Sequentials es - | SynExpr.ArrayOrList (exprs = es) -> List.iter walkExpr es - - | SynExpr.JoinIn (lhsExpr = e1; rhsExpr = e2) - | SynExpr.DotIndexedGet (objectExpr = e1; indexArgs = e2) - | SynExpr.Set (targetExpr = e1; rhsExpr = e2) - | SynExpr.App (funcExpr = e1; argExpr = e2) - | SynExpr.TryFinally (tryExpr = e1; finallyExpr = e2) - | SynExpr.WhileBang (whileExpr = e1; doExpr = e2) - | SynExpr.While (whileExpr = e1; doExpr = e2) -> + | SynExpr.ArrayOrList(exprs = es) -> List.iter walkExpr es + + | SynExpr.JoinIn(lhsExpr = e1; rhsExpr = e2) + | SynExpr.DotIndexedGet(objectExpr = e1; indexArgs = e2) + | SynExpr.Set(targetExpr = e1; rhsExpr = e2) + | SynExpr.App(funcExpr = e1; argExpr = e2) + | SynExpr.TryFinally(tryExpr = e1; finallyExpr = e2) + | SynExpr.WhileBang(whileExpr = e1; doExpr = e2) + | SynExpr.While(whileExpr = e1; doExpr = e2) -> walkExpr e1 walkExpr e2 - | SynExpr.Record (recordFields = fields) -> + | SynExpr.Record(recordFields = fields) -> fields - |> List.iter (fun (SynExprRecordField (fieldName = (ident, _); expr = e)) -> + |> List.iter (fun (SynExprRecordField(fieldName = (ident, _); expr = e)) -> addLongIdentWithDots ident e |> Option.iter walkExpr) | SynExpr.Ident ident -> addIdent ident - | SynExpr.ObjExpr (objType = ty; argOptions = argOpt; bindings = bindings; members = ms; extraImpls = ifaces) -> + | SynExpr.ObjExpr(objType = ty; argOptions = argOpt; bindings = bindings; members = ms; extraImpls = ifaces) -> let bindings = unionBindingAndMembers bindings ms argOpt @@ -1977,55 +1971,55 @@ module ParsedInput = List.iter walkBinding bindings List.iter walkInterfaceImpl ifaces - | SynExpr.LongIdent (longDotId = ident) -> addLongIdentWithDots ident + | SynExpr.LongIdent(longDotId = ident) -> addLongIdentWithDots ident - | SynExpr.For (ident = ident; identBody = e1; toBody = e2; doBody = e3) -> + | SynExpr.For(ident = ident; identBody = e1; toBody = e2; doBody = e3) -> addIdent ident walkExpr e1 walkExpr e2 walkExpr e3 - | SynExpr.ForEach (pat = pat; enumExpr = e1; bodyExpr = e2) -> + | SynExpr.ForEach(pat = pat; enumExpr = e1; bodyExpr = e2) -> walkPat pat walkExpr e1 walkExpr e2 - | SynExpr.MatchLambda (matchClauses = clauses) -> List.iter walkClause clauses + | SynExpr.MatchLambda(matchClauses = clauses) -> List.iter walkClause clauses - | SynExpr.MatchBang (expr = e; clauses = clauses) - | SynExpr.Match (expr = e; clauses = clauses) -> + | SynExpr.MatchBang(expr = e; clauses = clauses) + | SynExpr.Match(expr = e; clauses = clauses) -> walkExpr e List.iter walkClause clauses - | SynExpr.TypeApp (expr = e; typeArgs = tys) -> + | SynExpr.TypeApp(expr = e; typeArgs = tys) -> List.iter walkType tys walkExpr e - | SynExpr.LetOrUse (bindings = bindings; body = e) -> + | SynExpr.LetOrUse(bindings = bindings; body = e) -> List.iter walkBinding bindings walkExpr e - | SynExpr.TryWith (tryExpr = e; withCases = clauses) -> + | SynExpr.TryWith(tryExpr = e; withCases = clauses) -> List.iter walkClause clauses walkExpr e - | SynExpr.IfThenElse (ifExpr = e1; thenExpr = e2; elseExpr = e3) -> + | SynExpr.IfThenElse(ifExpr = e1; thenExpr = e2; elseExpr = e3) -> walkExpr e1 walkExpr e2 e3 |> Option.iter walkExpr - | SynExpr.LongIdentSet (longDotId = ident; expr = e) - | SynExpr.DotGet (longDotId = ident; expr = e) -> + | SynExpr.LongIdentSet(longDotId = ident; expr = e) + | SynExpr.DotGet(longDotId = ident; expr = e) -> addLongIdentWithDots ident walkExpr e - | SynExpr.NamedIndexedPropertySet (longDotId = ident; expr1 = e1; expr2 = e2) - | SynExpr.DotSet (targetExpr = e1; longDotId = ident; rhsExpr = e2) -> + | SynExpr.NamedIndexedPropertySet(longDotId = ident; expr1 = e1; expr2 = e2) + | SynExpr.DotSet(targetExpr = e1; longDotId = ident; rhsExpr = e2) -> addLongIdentWithDots ident walkExpr e1 walkExpr e2 - | SynExpr.IndexRange (expr1 = expr1; expr2 = expr2) -> + | SynExpr.IndexRange(expr1 = expr1; expr2 = expr2) -> match expr1 with | Some e -> walkExpr e | None -> () @@ -2034,88 +2028,88 @@ module ParsedInput = | Some e -> walkExpr e | None -> () - | SynExpr.DotIndexedSet (objectExpr = e1; indexArgs = args; valueExpr = e2) -> + | SynExpr.DotIndexedSet(objectExpr = e1; indexArgs = args; valueExpr = e2) -> walkExpr e1 walkExpr args walkExpr e2 - | SynExpr.DotNamedIndexedPropertySet (targetExpr = e1; longDotId = ident; argExpr = e2; rhsExpr = e3) -> + | SynExpr.DotNamedIndexedPropertySet(targetExpr = e1; longDotId = ident; argExpr = e2; rhsExpr = e3) -> addLongIdentWithDots ident walkExpr e1 walkExpr e2 walkExpr e3 - | SynExpr.LetOrUseBang (pat = pat; rhs = e1; andBangs = es; body = e2) -> + | SynExpr.LetOrUseBang(pat = pat; rhs = e1; andBangs = es; body = e2) -> walkPat pat walkExpr e1 - for SynExprAndBang (pat = patAndBang; body = eAndBang) in es do + for SynExprAndBang(pat = patAndBang; body = eAndBang) in es do walkPat patAndBang walkExpr eAndBang walkExpr e2 - | SynExpr.TraitCall (TypesForTypar ts, sign, e, _) -> + | SynExpr.TraitCall(TypesForTypar ts, sign, e, _) -> List.iter walkType ts walkMemberSig sign walkExpr e - | SynExpr.Const(constant = SynConst.Measure (synMeasure = m)) -> walkMeasure m + | SynExpr.Const(constant = SynConst.Measure(synMeasure = m)) -> walkMeasure m | _ -> () and walkMeasure measure = match measure with - | SynMeasure.Product (measure1 = m1; measure2 = m2) -> + | SynMeasure.Product(measure1 = m1; measure2 = m2) -> walkMeasure m1 walkMeasure m2 - | SynMeasure.Divide (measure1 = m1; measure2 = m2) -> + | SynMeasure.Divide(measure1 = m1; measure2 = m2) -> m1 |> Option.iter walkMeasure walkMeasure m2 - | SynMeasure.Named (longIdent, _) -> addLongIdent longIdent - | SynMeasure.Seq (ms, _) -> List.iter walkMeasure ms - | SynMeasure.Paren (m, _) - | SynMeasure.Power (measure = m) -> walkMeasure m - | SynMeasure.Var (ty, _) -> walkTypar ty + | SynMeasure.Named(longIdent, _) -> addLongIdent longIdent + | SynMeasure.Seq(ms, _) -> List.iter walkMeasure ms + | SynMeasure.Paren(m, _) + | SynMeasure.Power(measure = m) -> walkMeasure m + | SynMeasure.Var(ty, _) -> walkTypar ty | SynMeasure.One _ | SynMeasure.Anon _ -> () and walkSimplePat spat = match spat with - | SynSimplePat.Attrib (pat, Attributes attrs, _) -> + | SynSimplePat.Attrib(pat, Attributes attrs, _) -> walkSimplePat pat List.iter walkAttribute attrs - | SynSimplePat.Typed (pat, t, _) -> + | SynSimplePat.Typed(pat, t, _) -> walkSimplePat pat walkType t | _ -> () - and walkField (SynField (attributes = Attributes attrs; fieldType = t)) = + and walkField (SynField(attributes = Attributes attrs; fieldType = t)) = List.iter walkAttribute attrs walkType t - and walkValSig (SynValSig (attributes = Attributes attrs; synType = t; arity = SynValInfo (argInfos, argInfo))) = + and walkValSig (SynValSig(attributes = Attributes attrs; synType = t; arity = SynValInfo(argInfos, argInfo))) = List.iter walkAttribute attrs walkType t argInfo :: (argInfos |> List.concat) - |> List.collect (fun (SynArgInfo (Attributes attrs, _, _)) -> attrs) + |> List.collect (fun (SynArgInfo(Attributes attrs, _, _)) -> attrs) |> List.iter walkAttribute and walkMemberSig membSig = match membSig with - | SynMemberSig.Inherit (t, _) - | SynMemberSig.Interface (t, _) -> walkType t - | SynMemberSig.Member (memberSig = vs) -> walkValSig vs - | SynMemberSig.ValField (f, _) -> walkField f - | SynMemberSig.NestedType (nestedType = typeDefn) -> - let (SynTypeDefnSig (typeInfo = info; typeRepr = repr; members = memberSigs)) = + | SynMemberSig.Inherit(t, _) + | SynMemberSig.Interface(t, _) -> walkType t + | SynMemberSig.Member(memberSig = vs) -> walkValSig vs + | SynMemberSig.ValField(f, _) -> walkField f + | SynMemberSig.NestedType(nestedType = typeDefn) -> + let (SynTypeDefnSig(typeInfo = info; typeRepr = repr; members = memberSigs)) = typeDefn let isTypeExtensionOrAlias = match repr with - | SynTypeDefnSigRepr.Simple (SynTypeDefnSimpleRepr.TypeAbbrev _, _) - | SynTypeDefnSigRepr.ObjectModel (SynTypeDefnKind.Abbrev, _, _) + | SynTypeDefnSigRepr.Simple(SynTypeDefnSimpleRepr.TypeAbbrev _, _) + | SynTypeDefnSigRepr.ObjectModel(SynTypeDefnKind.Abbrev, _, _) | SynTypeDefnSigRepr.ObjectModel(kind = SynTypeDefnKind.Augmentation _) -> true | _ -> false @@ -2125,25 +2119,25 @@ module ParsedInput = and walkMember memb = match memb with - | SynMemberDefn.AbstractSlot (slotSig = valSig) -> walkValSig valSig - | SynMemberDefn.Member (binding, _) -> walkBinding binding - | SynMemberDefn.GetSetMember (getBinding, setBinding, _, _) -> + | SynMemberDefn.AbstractSlot(slotSig = valSig) -> walkValSig valSig + | SynMemberDefn.Member(binding, _) -> walkBinding binding + | SynMemberDefn.GetSetMember(getBinding, setBinding, _, _) -> Option.iter walkBinding getBinding Option.iter walkBinding setBinding - | SynMemberDefn.ImplicitCtor (attributes = Attributes attrs; ctorArgs = SynSimplePats.SimplePats (pats = simplePats)) -> + | SynMemberDefn.ImplicitCtor(attributes = Attributes attrs; ctorArgs = SynSimplePats.SimplePats(pats = simplePats)) -> List.iter walkAttribute attrs List.iter walkSimplePat simplePats - | SynMemberDefn.ImplicitInherit (t, e, _, _) -> + | SynMemberDefn.ImplicitInherit(t, e, _, _) -> walkType t walkExpr e - | SynMemberDefn.LetBindings (bindings, _, _, _) -> List.iter walkBinding bindings - | SynMemberDefn.Interface (interfaceType = t; members = members) -> + | SynMemberDefn.LetBindings(bindings, _, _, _) -> List.iter walkBinding bindings + | SynMemberDefn.Interface(interfaceType = t; members = members) -> walkType t members |> Option.iter (List.iter walkMember) - | SynMemberDefn.Inherit (t, _, _) -> walkType t - | SynMemberDefn.ValField (fieldInfo = field) -> walkField field - | SynMemberDefn.NestedType (tdef, _, _) -> walkTypeDefn tdef - | SynMemberDefn.AutoProperty (attributes = Attributes attrs; typeOpt = t; synExpr = e) -> + | SynMemberDefn.Inherit(t, _, _) -> walkType t + | SynMemberDefn.ValField(fieldInfo = field) -> walkField field + | SynMemberDefn.NestedType(tdef, _, _) -> walkTypeDefn tdef + | SynMemberDefn.AutoProperty(attributes = Attributes attrs; typeOpt = t; synExpr = e) -> List.iter walkAttribute attrs Option.iter walkType t walkExpr e @@ -2154,22 +2148,22 @@ module ParsedInput = and walkUnionCaseType kind = match kind with | SynUnionCaseKind.Fields fields -> List.iter walkField fields - | SynUnionCaseKind.FullType (t, _) -> walkType t + | SynUnionCaseKind.FullType(t, _) -> walkType t - and walkUnionCase (SynUnionCase (attributes = Attributes attrs; caseType = t)) = + and walkUnionCase (SynUnionCase(attributes = Attributes attrs; caseType = t)) = List.iter walkAttribute attrs walkUnionCaseType t and walkTypeDefnSimple typeDefn = match typeDefn with - | SynTypeDefnSimpleRepr.Enum (cases, _) -> List.iter walkEnumCase cases - | SynTypeDefnSimpleRepr.Union (_, cases, _) -> List.iter walkUnionCase cases - | SynTypeDefnSimpleRepr.Record (_, fields, _) -> List.iter walkField fields - | SynTypeDefnSimpleRepr.TypeAbbrev (_, t, _) -> walkType t + | SynTypeDefnSimpleRepr.Enum(cases, _) -> List.iter walkEnumCase cases + | SynTypeDefnSimpleRepr.Union(_, cases, _) -> List.iter walkUnionCase cases + | SynTypeDefnSimpleRepr.Record(_, fields, _) -> List.iter walkField fields + | SynTypeDefnSimpleRepr.TypeAbbrev(_, t, _) -> walkType t | _ -> () and walkComponentInfo isTypeExtensionOrAlias compInfo = - let (SynComponentInfo (Attributes attrs, TyparsAndConstraints (typars, cs1), cs2, longIdent, _, _, _, _)) = + let (SynComponentInfo(Attributes attrs, TyparsAndConstraints(typars, cs1), cs2, longIdent, _, _, _, _)) = compInfo let constraints = cs1 @ cs2 @@ -2182,25 +2176,25 @@ module ParsedInput = and walkTypeDefnRepr inp = match inp with - | SynTypeDefnRepr.ObjectModel (_, defns, _) -> List.iter walkMember defns - | SynTypeDefnRepr.Simple (defn, _) -> walkTypeDefnSimple defn + | SynTypeDefnRepr.ObjectModel(_, defns, _) -> List.iter walkMember defns + | SynTypeDefnRepr.Simple(defn, _) -> walkTypeDefnSimple defn | SynTypeDefnRepr.Exception _ -> () and walkTypeDefnSigRepr inp = match inp with - | SynTypeDefnSigRepr.ObjectModel (_, defns, _) -> List.iter walkMemberSig defns - | SynTypeDefnSigRepr.Simple (defn, _) -> walkTypeDefnSimple defn + | SynTypeDefnSigRepr.ObjectModel(_, defns, _) -> List.iter walkMemberSig defns + | SynTypeDefnSigRepr.Simple(defn, _) -> walkTypeDefnSimple defn | SynTypeDefnSigRepr.Exception _ -> () and walkTypeDefn typeDefn = - let (SynTypeDefn (typeInfo = info; typeRepr = repr; members = members; implicitConstructor = implicitCtor)) = + let (SynTypeDefn(typeInfo = info; typeRepr = repr; members = members; implicitConstructor = implicitCtor)) = typeDefn let isTypeExtensionOrAlias = match repr with | SynTypeDefnRepr.ObjectModel(kind = SynTypeDefnKind.Augmentation _) - | SynTypeDefnRepr.ObjectModel (SynTypeDefnKind.Abbrev, _, _) - | SynTypeDefnRepr.Simple (SynTypeDefnSimpleRepr.TypeAbbrev _, _) -> true + | SynTypeDefnRepr.ObjectModel(SynTypeDefnKind.Abbrev, _, _) + | SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.TypeAbbrev _, _) -> true | _ -> false walkComponentInfo isTypeExtensionOrAlias info @@ -2211,13 +2205,13 @@ module ParsedInput = and walkSynModuleDecl (decl: SynModuleDecl) = match decl with | SynModuleDecl.NamespaceFragment fragment -> walkSynModuleOrNamespace fragment - | SynModuleDecl.NestedModule (moduleInfo = info; decls = modules) -> + | SynModuleDecl.NestedModule(moduleInfo = info; decls = modules) -> walkComponentInfo false info List.iter walkSynModuleDecl modules - | SynModuleDecl.Let (_, bindings, _) -> List.iter walkBinding bindings - | SynModuleDecl.Expr (expr, _) -> walkExpr expr - | SynModuleDecl.Types (types, _) -> List.iter walkTypeDefn types - | SynModuleDecl.Attributes (Attributes attrs, _) -> List.iter walkAttribute attrs + | SynModuleDecl.Let(_, bindings, _) -> List.iter walkBinding bindings + | SynModuleDecl.Expr(expr, _) -> walkExpr expr + | SynModuleDecl.Types(types, _) -> List.iter walkTypeDefn types + | SynModuleDecl.Attributes(Attributes attrs, _) -> List.iter walkAttribute attrs | _ -> () match parsedInput with @@ -2271,10 +2265,10 @@ module ParsedInput = mkPos line col, false ) - | Some (_, _, true), _ -> () - | Some (oldScope, oldPos, false), OpenStatementInsertionPoint.TopLevel when kind <> OpenDeclaration -> + | Some(_, _, true), _ -> () + | Some(oldScope, oldPos, false), OpenStatementInsertionPoint.TopLevel when kind <> OpenDeclaration -> result <- Some(oldScope, oldPos, true) - | Some (oldScope, oldPos, _), _ -> + | Some(oldScope, oldPos, _), _ -> match kind, oldScope.Kind with | (Namespace | NestedModule | TopModule), OpenDeclaration | _ when oldPos.Line <= line -> @@ -2297,13 +2291,13 @@ module ParsedInput = | [] -> None | firstDecl :: _ -> match firstDecl with - | SynModuleDecl.NestedModule (range = r) - | SynModuleDecl.Let (range = r) - | SynModuleDecl.Expr (range = r) - | SynModuleDecl.Types (range = r) - | SynModuleDecl.Exception (range = r) - | SynModuleDecl.Open (range = r) - | SynModuleDecl.HashDirective (range = r) -> Some r + | SynModuleDecl.NestedModule(range = r) + | SynModuleDecl.Let(range = r) + | SynModuleDecl.Expr(range = r) + | SynModuleDecl.Types(range = r) + | SynModuleDecl.Exception(range = r) + | SynModuleDecl.Open(range = r) + | SynModuleDecl.HashDirective(range = r) -> Some r | _ -> None |> Option.map (fun r -> r.StartColumn) @@ -2311,7 +2305,7 @@ module ParsedInput = List.iter (walkSynModuleOrNamespace []) file.Contents and walkSynModuleOrNamespace (parent: LongIdent) modul = - let (SynModuleOrNamespace (longId = ident; kind = kind; decls = decls; range = range)) = + let (SynModuleOrNamespace(longId = ident; kind = kind; decls = decls; range = range)) = modul if range.EndLine >= currentLine then @@ -2342,7 +2336,7 @@ module ParsedInput = and walkSynModuleDecl (parent: LongIdent) (decl: SynModuleDecl) = match decl with | SynModuleDecl.NamespaceFragment fragment -> walkSynModuleOrNamespace parent fragment - | SynModuleDecl.NestedModule (moduleInfo = SynComponentInfo (longId = ident); decls = decls; range = range) -> + | SynModuleDecl.NestedModule(moduleInfo = SynComponentInfo(longId = ident); decls = decls; range = range) -> let fullIdent = parent @ ident addModule (fullIdent, range) @@ -2352,8 +2346,8 @@ module ParsedInput = doRange NestedModule fullIdent range.StartLine moduleBodyIndentation List.iter (walkSynModuleDecl fullIdent) decls - | SynModuleDecl.Open (_, range) -> doRange OpenDeclaration [] range.EndLine (range.StartColumn - 5) - | SynModuleDecl.HashDirective (_, range) -> doRange HashDirective [] range.EndLine range.StartColumn + | SynModuleDecl.Open(_, range) -> doRange OpenDeclaration [] range.EndLine (range.StartColumn - 5) + | SynModuleDecl.HashDirective(_, range) -> doRange HashDirective [] range.EndLine range.StartColumn | _ -> () match ast with @@ -2398,7 +2392,8 @@ module ParsedInput = let res, modules = tryFindNearestPointAndModules currentLine parsedInput insertionPoint - fun (requiresQualifiedAccessParent: ShortIdents option, + fun + (requiresQualifiedAccessParent: ShortIdents option, autoOpenParent: ShortIdents option, entityNamespace: ShortIdents option, entity: ShortIdents) -> @@ -2410,7 +2405,7 @@ module ParsedInput = match res with | None -> [||] - | Some (scope, ns, pos) -> + | Some(scope, ns, pos) -> let entities = Entity.tryCreate ( ns, @@ -2477,7 +2472,7 @@ module ParsedInput = (insertionPoint: OpenStatementInsertionPoint) = match tryFindNearestPointAndModules currentLine parsedInput insertionPoint with - | Some (scope, _, point), modules -> findBestPositionToInsertOpenDeclaration modules scope point entity + | Some(scope, _, point), modules -> findBestPositionToInsertOpenDeclaration modules scope point entity | _ -> // we failed to find insertion point because ast is empty for some reason, return top left point in this case { diff --git a/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fsi b/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fsi index 5b8d877a80..336e6213a7 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fsi +++ b/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fsi @@ -169,7 +169,11 @@ module public ParsedInput = parsedInput: ParsedInput -> partiallyQualifiedName: MaybeUnresolvedIdent[] -> insertionPoint: OpenStatementInsertionPoint -> - (( (* requiresQualifiedAccessParent: *) ShortIdents option (* autoOpenParent: *) * ShortIdents option (* entityNamespace *) * ShortIdents option (* entity: *) * ShortIdents) -> (InsertionContextEntity * InsertionContext)[]) + (( (* requiresQualifiedAccessParent: *) ShortIdents option (* autoOpenParent: *) * + ShortIdents option (* entityNamespace *) * + ShortIdents option (* entity: *) * + ShortIdents) + -> (InsertionContextEntity * InsertionContext)[]) /// Returns `InsertContext` based on current position and symbol idents. val FindNearestPointToInsertOpenDeclaration: diff --git a/src/fcs-fable/src/Compiler/Service/ServiceStructure.fs b/src/fcs-fable/src/Compiler/Service/ServiceStructure.fs index ba89dac914..e2e8e4c20b 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceStructure.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceStructure.fs @@ -62,7 +62,7 @@ module Structure = | [] -> other | ls -> ls - |> List.map (fun (SynTyparDecl (typar = typarg)) -> typarg.Range) + |> List.map (fun (SynTyparDecl(typar = typarg)) -> typarg.Range) |> List.reduce unionRanges /// Collapse indicates the way a range/snapshot should be collapsed. `Same` is for a scope inside @@ -226,43 +226,43 @@ module Structure = let rec parseExpr expr = match expr with - | SynExpr.Upcast (e, _, _) - | SynExpr.Downcast (e, _, _) - | SynExpr.AddressOf (_, e, _, _) - | SynExpr.InferredDowncast (e, _) - | SynExpr.InferredUpcast (e, _) - | SynExpr.DotGet (e, _, _, _) - | SynExpr.Do (e, _) - | SynExpr.Typed (e, _, _) - | SynExpr.DotIndexedGet (e, _, _, _) -> parseExpr e - - | SynExpr.Set (e1, e2, _) - | SynExpr.DotSet (e1, _, e2, _) - | SynExpr.DotIndexedSet (e1, _, e2, _, _, _) -> + | SynExpr.Upcast(e, _, _) + | SynExpr.Downcast(e, _, _) + | SynExpr.AddressOf(_, e, _, _) + | SynExpr.InferredDowncast(e, _) + | SynExpr.InferredUpcast(e, _) + | SynExpr.DotGet(e, _, _, _) + | SynExpr.Do(e, _) + | SynExpr.Typed(e, _, _) + | SynExpr.DotIndexedGet(e, _, _, _) -> parseExpr e + + | SynExpr.Set(e1, e2, _) + | SynExpr.DotSet(e1, _, e2, _) + | SynExpr.DotIndexedSet(e1, _, e2, _, _, _) -> parseExpr e1 parseExpr e2 - | SynExpr.New (_, _, e, r) -> + | SynExpr.New(_, _, e, r) -> rcheck Scope.New Collapse.Below r e.Range parseExpr e - | SynExpr.YieldOrReturn (_, e, r) -> + | SynExpr.YieldOrReturn(_, e, r) -> rcheck Scope.YieldOrReturn Collapse.Below r r parseExpr e - | SynExpr.YieldOrReturnFrom (_, e, r) -> + | SynExpr.YieldOrReturnFrom(_, e, r) -> rcheck Scope.YieldOrReturnBang Collapse.Below r r parseExpr e - | SynExpr.DoBang (e, r) -> + | SynExpr.DoBang(e, r) -> rcheck Scope.Do Collapse.Below r <| Range.modStart 3 r parseExpr e - | SynExpr.LetOrUseBang (pat = pat; rhs = eLet; andBangs = es; body = eBody) -> + | SynExpr.LetOrUseBang(pat = pat; rhs = eLet; andBangs = es; body = eBody) -> let exprs = [ eLet - for SynExprAndBang (body = eAndBang) in es do + for SynExprAndBang(body = eAndBang) in es do eAndBang ] @@ -277,17 +277,17 @@ module Structure = parseExpr eBody - | SynExpr.For (doBody = e; range = r) - | SynExpr.ForEach (_, _, _, _, _, _, e, r) -> + | SynExpr.For(doBody = e; range = r) + | SynExpr.ForEach(_, _, _, _, _, _, e, r) -> rcheck Scope.For Collapse.Below r r parseExpr e - | SynExpr.LetOrUse (bindings = bindings; body = body) -> + | SynExpr.LetOrUse(bindings = bindings; body = body) -> parseBindings bindings parseExpr body - | SynExpr.Match (matchDebugPoint = seqPointAtBinding; clauses = clauses; range = r) - | SynExpr.MatchBang (matchDebugPoint = seqPointAtBinding; clauses = clauses; range = r) -> + | SynExpr.Match(matchDebugPoint = seqPointAtBinding; clauses = clauses; range = r) + | SynExpr.MatchBang(matchDebugPoint = seqPointAtBinding; clauses = clauses; range = r) -> match seqPointAtBinding with | DebugPointAtBinding.Yes sr -> let collapse = Range.endToEnd sr r @@ -296,7 +296,7 @@ module Structure = List.iter parseMatchClause clauses - | SynExpr.MatchLambda (_, caseRange, clauses, matchSeqPoint, r) -> + | SynExpr.MatchLambda(_, caseRange, clauses, matchSeqPoint, r) -> let caseRange = match matchSeqPoint with | DebugPointAtBinding.Yes r -> r @@ -306,7 +306,7 @@ module Structure = rcheck Scope.MatchLambda Collapse.Same r collapse List.iter parseMatchClause clauses - | SynExpr.App (atomicFlag, isInfix, funcExpr, argExpr, r) -> + | SynExpr.App(atomicFlag, isInfix, funcExpr, argExpr, r) -> // seq exprs, custom operators, etc if ExprAtomicFlag.NonAtomic = atomicFlag @@ -337,27 +337,23 @@ module Structure = parseExpr argExpr parseExpr funcExpr - | SynExpr.Sequential (_, _, e1, e2, _) -> + | SynExpr.Sequential(_, _, e1, e2, _) -> parseExpr e1 parseExpr e2 - | SynExpr.ArrayOrListComputed (isArray, e, r) -> + | SynExpr.ArrayOrListComputed(isArray, e, r) -> let collapse = Range.modBoth (if isArray then 2 else 1) (if isArray then 2 else 1) r rcheck Scope.ArrayOrList Collapse.Same r collapse parseExpr e - | SynExpr.ComputationExpr (_, e, _r) as _c -> parseExpr e + | SynExpr.ComputationExpr(_, e, _r) as _c -> parseExpr e - | SynExpr.ObjExpr (argOptions = argOpt - bindings = bindings - members = ms - extraImpls = extraImpls - newExprRange = newRange - range = mWhole) -> + | SynExpr.ObjExpr( + argOptions = argOpt; bindings = bindings; members = ms; extraImpls = extraImpls; newExprRange = newRange; range = mWhole) -> let bindings = unionBindingAndMembers bindings ms match argOpt with - | Some (args, _) -> + | Some(args, _) -> let collapse = Range.endToEnd args.Range mWhole rcheck Scope.ObjExpr Collapse.Below mWhole collapse | None -> @@ -367,7 +363,7 @@ module Structure = parseBindings bindings parseExprInterfaces extraImpls - | SynExpr.TryWith (e, matchClauses, mWhole, tryPoint, withPoint, _trivia) -> + | SynExpr.TryWith(e, matchClauses, mWhole, tryPoint, withPoint, _trivia) -> match tryPoint, withPoint with | DebugPointAtTry.Yes tryRange, DebugPointAtWith.Yes withRange -> let mFull = Range.startToEnd tryRange mWhole @@ -384,7 +380,7 @@ module Structure = parseExpr e List.iter parseMatchClause matchClauses - | SynExpr.TryFinally (tryExpr, finallyExpr, r, tryPoint, finallyPoint, _trivia) -> + | SynExpr.TryFinally(tryExpr, finallyExpr, r, tryPoint, finallyPoint, _trivia) -> match tryPoint, finallyPoint with | DebugPointAtTry.Yes tryRange, DebugPointAtFinally.Yes finallyRange -> let collapse = Range.endToEnd tryRange finallyExpr.Range @@ -398,12 +394,8 @@ module Structure = parseExpr tryExpr parseExpr finallyExpr - | SynExpr.IfThenElse (ifExpr = ifExpr - thenExpr = thenExpr - elseExpr = elseExprOpt - spIfToThen = spIfToThen - range = r - trivia = trivia) -> + | SynExpr.IfThenElse( + ifExpr = ifExpr; thenExpr = thenExpr; elseExpr = elseExprOpt; spIfToThen = spIfToThen; range = r; trivia = trivia) -> match spIfToThen with | DebugPointAtBinding.Yes rt -> // Outline the entire IfThenElse @@ -431,53 +423,53 @@ module Structure = parseExpr elseExpr | None -> () - | SynExpr.While (_, _, e, r) - | SynExpr.WhileBang (_, _, e, r) -> + | SynExpr.While(_, _, e, r) + | SynExpr.WhileBang(_, _, e, r) -> rcheck Scope.While Collapse.Below r r parseExpr e - | SynExpr.Lambda (args = pats; body = e; range = r) -> + | SynExpr.Lambda(args = pats; body = e; range = r) -> rcheck Scope.Lambda Collapse.Below r (Range.endToEnd pats.Range r) parseExpr e - | SynExpr.Lazy (e, r) -> + | SynExpr.Lazy(e, r) -> rcheck Scope.SpecialFunc Collapse.Below r r parseExpr e - | SynExpr.Quote (_, isRaw, e, _, r) -> + | SynExpr.Quote(_, isRaw, e, _, r) -> // subtract columns so the @@> or @> is not collapsed let collapse = Range.modBoth (if isRaw then 3 else 2) (if isRaw then 3 else 2) r rcheck Scope.Quote Collapse.Same r collapse parseExpr e - | SynExpr.Tuple (_, es, _, r) -> + | SynExpr.Tuple(_, es, _, r) -> rcheck Scope.Tuple Collapse.Same r r List.iter parseExpr es - | SynExpr.Paren (e, _, _, _) -> parseExpr e + | SynExpr.Paren(e, _, _, _) -> parseExpr e - | SynExpr.Record (recCtor, recCopy, recordFields, r) -> + | SynExpr.Record(recCtor, recCopy, recordFields, r) -> match recCtor with - | Some (_, ctorArgs, _, _, _) -> parseExpr ctorArgs + | Some(_, ctorArgs, _, _, _) -> parseExpr ctorArgs | _ -> () match recCopy with - | Some (e, _) -> parseExpr e + | Some(e, _) -> parseExpr e | _ -> () recordFields - |> List.choose (fun (SynExprRecordField (expr = e)) -> e) + |> List.choose (fun (SynExprRecordField(expr = e)) -> e) |> List.iter parseExpr // exclude the opening `{` and closing `}` of the record from collapsing let m = Range.modBoth 1 1 r rcheck Scope.Record Collapse.Same r m | _ -> () - and parseMatchClause (SynMatchClause (pat = synPat; resultExpr = e) as clause) = + and parseMatchClause (SynMatchClause(pat = synPat; resultExpr = e) as clause) = let rec getLastPat = function - | SynPat.Or (rhsPat = pat) -> getLastPat pat + | SynPat.Or(rhsPat = pat) -> getLastPat pat | x -> x let synPat = getLastPat synPat @@ -521,8 +513,8 @@ module Structure = parseExpr attr.ArgExpr and parseBinding binding = - let (SynBinding (kind = kind; attributes = attrs; valData = valData; expr = expr; range = br)) = binding - let (SynValData (memberFlags = memberFlags)) = valData + let (SynBinding(kind = kind; attributes = attrs; valData = valData; expr = expr; range = br)) = binding + let (SynValData(memberFlags = memberFlags)) = valData match kind with | SynBindingKind.Normal -> @@ -547,7 +539,7 @@ module Structure = parseBinding bind and parseExprInterface intf = - let (SynInterfaceImpl (interfaceTy = synType; bindings = bindings; range = range)) = intf + let (SynInterfaceImpl(interfaceTy = synType; bindings = bindings; range = range)) = intf let collapse = Range.endToEnd synType.Range range |> Range.modEnd -1 rcheck Scope.Interface Collapse.Below range collapse parseBindings bindings @@ -558,25 +550,27 @@ module Structure = and parseSynMemberDefn (objectModelRange: range) d = match d with - | SynMemberDefn.Member (binding, _) -> - let (SynBinding (attributes = attrs; valData = valData; headPat = synPat; range = bindingRange)) = + | SynMemberDefn.Member(binding, _) -> + let (SynBinding(attributes = attrs; valData = valData; headPat = synPat; range = bindingRange)) = binding match valData with - | SynValData(memberFlags = Some { - MemberKind = SynMemberKind.Constructor - }) -> + | SynValData( + memberFlags = Some { + MemberKind = SynMemberKind.Constructor + }) -> let collapse = Range.endToEnd synPat.Range d.Range rcheck Scope.New Collapse.Below d.Range collapse - | SynValData(memberFlags = Some { - MemberKind = SynMemberKind.PropertyGet | SynMemberKind.PropertySet - }) -> + | SynValData( + memberFlags = Some { + MemberKind = SynMemberKind.PropertyGet | SynMemberKind.PropertySet + }) -> let range = withStart (mkPos d.Range.StartLine objectModelRange.StartColumn) d.Range let collapse = match synPat with - | SynPat.LongIdent (longDotId = longIdent) -> Range.endToEnd longIdent.Range d.Range + | SynPat.LongIdent(longDotId = longIdent) -> Range.endToEnd longIdent.Range d.Range | _ -> Range.endToEnd bindingRange d.Range rcheck Scope.Member Collapse.Below range collapse @@ -587,7 +581,7 @@ module Structure = parseAttributes attrs parseBinding binding - | SynMemberDefn.GetSetMember (getBinding, setBinding, m, _) -> + | SynMemberDefn.GetSetMember(getBinding, setBinding, m, _) -> getBinding |> Option.map (fun b -> SynMemberDefn.Member(b, m)) |> Option.iter (parseSynMemberDefn objectModelRange) @@ -596,21 +590,21 @@ module Structure = |> Option.map (fun b -> SynMemberDefn.Member(b, m)) |> Option.iter (parseSynMemberDefn objectModelRange) - | SynMemberDefn.LetBindings (bindings, _, _, _) -> parseBindings bindings + | SynMemberDefn.LetBindings(bindings, _, _, _) -> parseBindings bindings - | SynMemberDefn.Interface (interfaceType = tp; members = iMembers; range = r) -> + | SynMemberDefn.Interface(interfaceType = tp; members = iMembers; range = r) -> rcheck Scope.Interface Collapse.Below d.Range (Range.endToEnd tp.Range d.Range) match iMembers with | Some members -> List.iter (parseSynMemberDefn r) members | None -> () - | SynMemberDefn.NestedType (td, _, _) -> parseTypeDefn td + | SynMemberDefn.NestedType(td, _, _) -> parseTypeDefn td - | SynMemberDefn.AbstractSlot (slotSig = SynValSig (synType = synt); range = r) -> + | SynMemberDefn.AbstractSlot(slotSig = SynValSig(synType = synt); range = r) -> rcheck Scope.Member Collapse.Below d.Range (Range.startToEnd synt.Range r) - | SynMemberDefn.AutoProperty (synExpr = e; range = r) -> + | SynMemberDefn.AutoProperty(synExpr = e; range = r) -> rcheck Scope.Member Collapse.Below d.Range r parseExpr e | _ -> () @@ -627,37 +621,37 @@ module Structure = *) and parseSimpleRepr simple = match simple with - | SynTypeDefnSimpleRepr.Enum (cases, _er) -> - for SynEnumCase (attributes = attrs; range = cr) in cases do + | SynTypeDefnSimpleRepr.Enum(cases, _er) -> + for SynEnumCase(attributes = attrs; range = cr) in cases do rcheck Scope.EnumCase Collapse.Below cr cr parseAttributes attrs - | SynTypeDefnSimpleRepr.Record (_, fields, rr) -> + | SynTypeDefnSimpleRepr.Record(_, fields, rr) -> rcheck Scope.RecordDefn Collapse.Same rr rr - for SynField (attributes = attrs; range = fr) in fields do + for SynField(attributes = attrs; range = fr) in fields do rcheck Scope.RecordField Collapse.Below fr fr parseAttributes attrs - | SynTypeDefnSimpleRepr.Union (_, cases, ur) -> + | SynTypeDefnSimpleRepr.Union(_, cases, ur) -> rcheck Scope.UnionDefn Collapse.Same ur ur - for SynUnionCase (attributes = attrs; range = cr) in cases do + for SynUnionCase(attributes = attrs; range = cr) in cases do rcheck Scope.UnionCase Collapse.Below cr cr parseAttributes attrs | _ -> () and parseTypeDefn typeDefn = - let (SynTypeDefn (typeInfo = typeInfo; typeRepr = objectModel; members = members; range = mFull)) = + let (SynTypeDefn(typeInfo = typeInfo; typeRepr = objectModel; members = members; range = mFull)) = typeDefn - let (SynComponentInfo (typeParams = TyparDecls typeArgs; range = r)) = typeInfo + let (SynComponentInfo(typeParams = TyparDecls typeArgs; range = r)) = typeInfo let typeArgsRange = rangeOfTypeArgsElse r typeArgs let collapse = Range.endToEnd (Range.modEnd 1 typeArgsRange) mFull match objectModel with - | SynTypeDefnRepr.ObjectModel (defnKind, objMembers, r) -> + | SynTypeDefnRepr.ObjectModel(defnKind, objMembers, r) -> match defnKind with | SynTypeDefnKind.Augmentation _ -> rcheck Scope.TypeExtension Collapse.Below mFull collapse | _ -> rcheck Scope.Type Collapse.Below mFull collapse @@ -665,7 +659,7 @@ module Structure = List.iter (parseSynMemberDefn r) objMembers // visit the members of a type extension List.iter (parseSynMemberDefn r) members - | SynTypeDefnRepr.Simple (simpleRepr, r) -> + | SynTypeDefnRepr.Simple(simpleRepr, r) -> rcheck Scope.Type Collapse.Below mFull collapse parseSimpleRepr simpleRepr List.iter (parseSynMemberDefn r) members @@ -726,13 +720,13 @@ module Structure = let collectOpens = getConsecutiveModuleDecls Scope.Open (function - | SynModuleDecl.Open (_, r) -> Some r + | SynModuleDecl.Open(_, r) -> Some r | _ -> None) let collectHashDirectives = getConsecutiveModuleDecls Scope.HashDirective (fun decl -> match decl with - | SynModuleDecl.HashDirective (ParsedHashDirective (directive, _, _), r) -> + | SynModuleDecl.HashDirective(ParsedHashDirective(directive, _, _), r) -> let prefixLength = "#".Length + directive.Length + " ".Length Some(mkRange "" (mkPos r.StartLine prefixLength) r.End) | _ -> None) @@ -744,7 +738,7 @@ module Structure = | ConditionalDirectiveTrivia.If _ as ifDirective :: directives -> group directives (ifDirective :: stack) sourceLines | ConditionalDirectiveTrivia.Else elseRange as elseDirective :: directives -> match stack with - | ConditionalDirectiveTrivia.If (_, ifRange) :: stack -> + | ConditionalDirectiveTrivia.If(_, ifRange) :: stack -> let startLineIndex = elseRange.StartLine - 2 if startLineIndex >= 0 then @@ -767,7 +761,7 @@ module Structure = | _ -> group directives stack sourceLines | ConditionalDirectiveTrivia.EndIf endIfRange :: directives -> match stack with - | ConditionalDirectiveTrivia.If (_, ifRange) :: stack -> + | ConditionalDirectiveTrivia.If(_, ifRange) :: stack -> let range = Range.startToEnd ifRange endIfRange { @@ -797,20 +791,20 @@ module Structure = let rec parseDeclaration (decl: SynModuleDecl) = match decl with - | SynModuleDecl.Let (_, bindings, r) -> + | SynModuleDecl.Let(_, bindings, r) -> for binding in bindings do let collapse = Range.endToEnd binding.RangeOfBindingWithoutRhs r rcheck Scope.LetOrUse Collapse.Below r collapse parseBindings bindings - | SynModuleDecl.Types (types, _r) -> + | SynModuleDecl.Types(types, _r) -> for t in types do parseTypeDefn t // Fold the attributes above a module - | SynModuleDecl.NestedModule (moduleInfo = moduleInfo; decls = decls) -> - let (SynComponentInfo (attributes = attrs; range = cmpRange)) = moduleInfo + | SynModuleDecl.NestedModule(moduleInfo = moduleInfo; decls = decls) -> + let (SynComponentInfo(attributes = attrs; range = cmpRange)) = moduleInfo // Outline the full scope of the module let r = Range.endToEnd cmpRange decl.Range rcheck Scope.Module Collapse.Below decl.Range r @@ -819,13 +813,13 @@ module Structure = collectOpens decls List.iter parseDeclaration decls - | SynModuleDecl.Expr (e, _) -> parseExpr e + | SynModuleDecl.Expr(e, _) -> parseExpr e - | SynModuleDecl.Attributes (attrs, _) -> parseAttributes attrs + | SynModuleDecl.Attributes(attrs, _) -> parseAttributes attrs | _ -> () - let parseModuleOrNamespace (SynModuleOrNamespace (longId, _, kind, decls, _, attribs, _, r, _)) = + let parseModuleOrNamespace (SynModuleOrNamespace(longId, _, kind, decls, _, attribs, _, r, _)) = parseAttributes attribs let idRange = longIdentRange longId let mFull = Range.startToEnd idRange r @@ -929,17 +923,17 @@ module Structure = | [] -> r | ls -> match List.last ls with - | SynMemberSig.Inherit (range = r) - | SynMemberSig.Interface (range = r) - | SynMemberSig.Member (range = r) - | SynMemberSig.NestedType (range = r) - | SynMemberSig.ValField (range = r) -> r + | SynMemberSig.Inherit(range = r) + | SynMemberSig.Interface(range = r) + | SynMemberSig.Member(range = r) + | SynMemberSig.NestedType(range = r) + | SynMemberSig.ValField(range = r) -> r let lastTypeDefnSigRangeElse range (typeSigs: SynTypeDefnSig list) = match typeSigs with | [] -> range | ls -> - let (SynTypeDefnSig (members = memberSigs; range = r)) = List.last ls + let (SynTypeDefnSig(members = memberSigs; range = r)) = List.last ls lastMemberSigRangeElse r memberSigs let lastModuleSigDeclRangeElse range (sigDecls: SynModuleSigDecl list) = @@ -947,30 +941,30 @@ module Structure = | [] -> range | ls -> match List.last ls with - | SynModuleSigDecl.Types (typeSigs, r) -> lastTypeDefnSigRangeElse r typeSigs - | SynModuleSigDecl.Val (SynValSig (range = r), _) -> r - | SynModuleSigDecl.Exception (_, r) -> r - | SynModuleSigDecl.Open (_, r) -> r - | SynModuleSigDecl.ModuleAbbrev (_, _, r) -> r + | SynModuleSigDecl.Types(typeSigs, r) -> lastTypeDefnSigRangeElse r typeSigs + | SynModuleSigDecl.Val(SynValSig(range = r), _) -> r + | SynModuleSigDecl.Exception(_, r) -> r + | SynModuleSigDecl.Open(_, r) -> r + | SynModuleSigDecl.ModuleAbbrev(_, _, r) -> r | _ -> range let rec parseSynMemberDefnSig inp = match inp with - | SynMemberSig.Member (memberSig = valSigs; range = r) -> + | SynMemberSig.Member(memberSig = valSigs; range = r) -> let collapse = Range.endToEnd valSigs.RangeOfId r rcheck Scope.Member Collapse.Below r collapse - | SynMemberSig.ValField (SynField (attributes = attrs; range = fr), mFull) -> + | SynMemberSig.ValField(SynField(attributes = attrs; range = fr), mFull) -> let collapse = Range.endToEnd fr mFull rcheck Scope.Val Collapse.Below mFull collapse parseAttributes attrs - | SynMemberSig.Interface (tp, r) -> rcheck Scope.Interface Collapse.Below r (Range.endToEnd tp.Range r) - | SynMemberSig.NestedType (typeDefSig, _r) -> parseTypeDefnSig typeDefSig + | SynMemberSig.Interface(tp, r) -> rcheck Scope.Interface Collapse.Below r (Range.endToEnd tp.Range r) + | SynMemberSig.NestedType(typeDefSig, _r) -> parseTypeDefnSig typeDefSig | _ -> () and parseTypeDefnSig typeDefn = - let (SynTypeDefnSig (typeInfo = typeInfo; typeRepr = objectModel; members = memberSigs)) = typeDefn + let (SynTypeDefnSig(typeInfo = typeInfo; typeRepr = objectModel; members = memberSigs)) = typeDefn - let (SynComponentInfo (attributes = attribs; typeParams = TyparDecls typeArgs; longId = longId; range = r)) = + let (SynComponentInfo(attributes = attribs; typeParams = TyparDecls typeArgs; longId = longId; range = r)) = typeInfo parseAttributes attribs @@ -986,23 +980,23 @@ module Structure = match objectModel with // matches against a type declaration with <'T, ...> and (args, ...) - | SynTypeDefnSigRepr.ObjectModel (SynTypeDefnKind.Unspecified, objMembers, _) -> + | SynTypeDefnSigRepr.ObjectModel(SynTypeDefnKind.Unspecified, objMembers, _) -> List.iter parseSynMemberDefnSig objMembers let mFull, collapse = makeRanges objMembers rcheck Scope.Type Collapse.Below mFull collapse - | SynTypeDefnSigRepr.ObjectModel (kind = SynTypeDefnKind.Augmentation _; memberSigs = objMembers) -> + | SynTypeDefnSigRepr.ObjectModel(kind = SynTypeDefnKind.Augmentation _; memberSigs = objMembers) -> let mFull, collapse = makeRanges objMembers rcheck Scope.TypeExtension Collapse.Below mFull collapse List.iter parseSynMemberDefnSig objMembers - | SynTypeDefnSigRepr.ObjectModel (_, objMembers, _) -> + | SynTypeDefnSigRepr.ObjectModel(_, objMembers, _) -> let mFull, collapse = makeRanges objMembers rcheck Scope.Type Collapse.Below mFull collapse List.iter parseSynMemberDefnSig objMembers // visit the members of a type extension - | SynTypeDefnSigRepr.Simple (simpleRepr, _) -> + | SynTypeDefnSigRepr.Simple(simpleRepr, _) -> let mFull, collapse = makeRanges memberSigs rcheck Scope.Type Collapse.Below mFull collapse parseSimpleRepr simpleRepr @@ -1061,29 +1055,29 @@ module Structure = decls |> getConsecutiveSigModuleDecls Scope.HashDirective (fun decl -> match decl with - | SynModuleSigDecl.HashDirective (ParsedHashDirective (directive, _, _), r) -> + | SynModuleSigDecl.HashDirective(ParsedHashDirective(directive, _, _), r) -> let prefixLength = "#".Length + directive.Length + " ".Length Some(mkRange "" (mkPos r.StartLine prefixLength) r.End) | _ -> None) let collectSigOpens = getConsecutiveSigModuleDecls Scope.Open (function - | SynModuleSigDecl.Open (_, r) -> Some r + | SynModuleSigDecl.Open(_, r) -> Some r | _ -> None) let rec parseModuleSigDeclaration (decl: SynModuleSigDecl) = match decl with - | SynModuleSigDecl.Val (valSig, r) -> - let (SynValSig (attributes = attrs; ident = SynIdent (ident, _); range = valrange)) = valSig + | SynModuleSigDecl.Val(valSig, r) -> + let (SynValSig(attributes = attrs; ident = SynIdent(ident, _); range = valrange)) = valSig let collapse = Range.endToEnd ident.idRange valrange rcheck Scope.Val Collapse.Below r collapse parseAttributes attrs - | SynModuleSigDecl.Types (typeSigs, _) -> List.iter parseTypeDefnSig typeSigs + | SynModuleSigDecl.Types(typeSigs, _) -> List.iter parseTypeDefnSig typeSigs // Fold the attributes above a module - | SynModuleSigDecl.NestedModule (moduleInfo = moduleInfo; moduleDecls = decls; range = moduleRange) -> - let (SynComponentInfo (attributes = attrs; range = cmpRange)) = moduleInfo + | SynModuleSigDecl.NestedModule(moduleInfo = moduleInfo; moduleDecls = decls; range = moduleRange) -> + let (SynComponentInfo(attributes = attrs; range = cmpRange)) = moduleInfo let rangeEnd = lastModuleSigDeclRangeElse moduleRange decls // Outline the full scope of the module let collapse = Range.endToEnd cmpRange rangeEnd @@ -1096,7 +1090,7 @@ module Structure = | _ -> () let parseModuleOrNamespaceSigs moduleSig = - let (SynModuleOrNamespaceSig (longId, _, kind, decls, _, attribs, _, r, _)) = moduleSig + let (SynModuleOrNamespaceSig(longId, _, kind, decls, _, attribs, _, r, _)) = moduleSig parseAttributes attribs let rangeEnd = lastModuleSigDeclRangeElse r decls let idrange = longIdentRange longId diff --git a/src/fcs-fable/src/Compiler/Service/ServiceXmlDocParser.fs b/src/fcs-fable/src/Compiler/Service/ServiceXmlDocParser.fs index f9f160c5a0..1c1e7ef418 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceXmlDocParser.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceXmlDocParser.fs @@ -16,19 +16,19 @@ module XmlDocParsing = let (|ConstructorPats|) = function | SynArgPats.Pats ps -> ps - | SynArgPats.NamePatPairs (pats = xs) -> List.map (fun (_, _, pat) -> pat) xs + | SynArgPats.NamePatPairs(pats = xs) -> List.map (fun (_, _, pat) -> pat) xs let rec digNamesFrom pat = match pat with - | SynPat.As (_, SynPat.Named (SynIdent (id, _), _isTheThisVar, _access, _range), _) - | SynPat.Named (SynIdent (id, _), _isTheThisVar, _access, _range) -> [ id.idText ] - | SynPat.Typed (pat, _type, _range) -> digNamesFrom pat - | SynPat.Attrib (pat, _attrs, _range) -> digNamesFrom pat + | SynPat.As(_, SynPat.Named(SynIdent(id, _), _isTheThisVar, _access, _range), _) + | SynPat.Named(SynIdent(id, _), _isTheThisVar, _access, _range) -> [ id.idText ] + | SynPat.Typed(pat, _type, _range) -> digNamesFrom pat + | SynPat.Attrib(pat, _attrs, _range) -> digNamesFrom pat | SynPat.LongIdent(argPats = ConstructorPats pats) -> pats |> List.collect digNamesFrom - | SynPat.ListCons (p1, p2, _, _) -> List.collect digNamesFrom [ p1; p2 ] - | SynPat.Tuple (elementPats = pats) -> pats |> List.collect digNamesFrom - | SynPat.Paren (pat, _range) -> digNamesFrom pat - | SynPat.OptionalVal (id, _) -> [ id.idText ] + | SynPat.ListCons(p1, p2, _, _) -> List.collect digNamesFrom [ p1; p2 ] + | SynPat.Tuple(elementPats = pats) -> pats |> List.collect digNamesFrom + | SynPat.Paren(pat, _range) -> digNamesFrom pat + | SynPat.OptionalVal(id, _) -> [ id.idText ] | SynPat.As _ // no one uses as in fun decls | SynPat.Or _ // no one uses ors in fun decls | SynPat.Ands _ // no one uses ands in fun decls @@ -43,14 +43,14 @@ module XmlDocParsing = | SynPat.FromParseError _ -> [] let getParamNames binding = - let (SynBinding (valData = synValData; headPat = synPat)) = binding + let (SynBinding(valData = synValData; headPat = synPat)) = binding match synValData with - | SynValData(valInfo = SynValInfo (curriedArgInfos = curriedArgs)) when not curriedArgs.IsEmpty -> + | SynValData(valInfo = SynValInfo(curriedArgInfos = curriedArgs)) when not curriedArgs.IsEmpty -> let parameters = [ for args in curriedArgs do - for (SynArgInfo (ident = ident)) in args do + for (SynArgInfo(ident = ident)) in args do match ident with | Some ident -> ident.idText | None -> () @@ -79,17 +79,17 @@ module XmlDocParsing = let rec getXmlDocablesSynModuleDecl decl = [ match decl with - | SynModuleDecl.NestedModule (decls = decls) -> + | SynModuleDecl.NestedModule(decls = decls) -> for decl in decls do yield! getXmlDocablesSynModuleDecl decl - | SynModuleDecl.Let (_, synBindingList, range) -> + | SynModuleDecl.Let(_, synBindingList, range) -> let anyXmlDoc = synBindingList - |> List.exists (fun (SynBinding (xmlDoc = preXmlDoc)) -> not (isEmptyXmlDoc preXmlDoc)) + |> List.exists (fun (SynBinding(xmlDoc = preXmlDoc)) -> not (isEmptyXmlDoc preXmlDoc)) if not anyXmlDoc then let synAttributes = - synBindingList |> List.collect (fun (SynBinding (attributes = a)) -> a) + synBindingList |> List.collect (fun (SynBinding(attributes = a)) -> a) let fullRange = synAttributes |> List.fold (fun r a -> unionRanges r a.Range) range let line = fullRange.StartLine @@ -102,10 +102,10 @@ module XmlDocParsing = ] yield XmlDocable(line, indent, paramNames) - | SynModuleDecl.Types (typeDefns, _) -> + | SynModuleDecl.Types(typeDefns, _) -> for typeDefn in typeDefns do yield! getXmlDocablesSynTypeDefn typeDefn - | SynModuleDecl.NamespaceFragment (synModuleOrNamespace) -> yield! getXmlDocablesSynModuleOrNamespace synModuleOrNamespace + | SynModuleDecl.NamespaceFragment(synModuleOrNamespace) -> yield! getXmlDocablesSynModuleOrNamespace synModuleOrNamespace | SynModuleDecl.ModuleAbbrev _ | SynModuleDecl.Expr _ | SynModuleDecl.Exception _ @@ -115,19 +115,19 @@ module XmlDocParsing = ] and getXmlDocablesSynModuleOrNamespace inp = - let (SynModuleOrNamespace (decls = decls)) = inp + let (SynModuleOrNamespace(decls = decls)) = inp decls |> List.collect getXmlDocablesSynModuleDecl and getXmlDocablesSynTypeDefn typeDefn = - let (SynTypeDefn (typeInfo = typeInfo; typeRepr = synTypeDefnRepr; members = synMemberDefns; range = tRange)) = + let (SynTypeDefn(typeInfo = typeInfo; typeRepr = synTypeDefnRepr; members = synMemberDefns; range = tRange)) = typeDefn - let (SynComponentInfo (attributes = synAttributes; xmlDoc = preXmlDoc; range = compRange)) = + let (SynComponentInfo(attributes = synAttributes; xmlDoc = preXmlDoc; range = compRange)) = typeInfo [ match synTypeDefnRepr with - | SynTypeDefnRepr.ObjectModel (_, extraMemberDefns, _) -> + | SynTypeDefnRepr.ObjectModel(_, extraMemberDefns, _) -> for extraMemberDefn in extraMemberDefns do yield! getXmlDocablesSynMemberDefn extraMemberDefn | SynTypeDefnRepr.Simple _ -> () @@ -148,8 +148,8 @@ module XmlDocParsing = and getXmlDocablesSynMemberDefn inp = [ match inp with - | SynMemberDefn.Member (memberBinding, memRange) -> - let (SynBinding (attributes = synAttributes; xmlDoc = preXmlDoc; headPat = synPat)) = + | SynMemberDefn.Member(memberBinding, memRange) -> + let (SynBinding(attributes = synAttributes; xmlDoc = preXmlDoc; headPat = synPat)) = memberBinding if isEmptyXmlDoc preXmlDoc then @@ -161,7 +161,7 @@ module XmlDocParsing = let paramNames = digNamesFrom synPat XmlDocable(line, indent, paramNames) - | SynMemberDefn.GetSetMember (getBinding, setBinding, m, _) -> + | SynMemberDefn.GetSetMember(getBinding, setBinding, m, _) -> yield! getBinding |> Option.map (fun b -> SynMemberDefn.Member(b, m)) @@ -174,8 +174,8 @@ module XmlDocParsing = |> Option.toList |> List.collect getXmlDocablesSynMemberDefn - | SynMemberDefn.AbstractSlot (slotSig = valSig; range = range) -> - let (SynValSig (attributes = synAttributes; arity = synValInfo; xmlDoc = preXmlDoc)) = + | SynMemberDefn.AbstractSlot(slotSig = valSig; range = range) -> + let (SynValSig(attributes = synAttributes; arity = synValInfo; xmlDoc = preXmlDoc)) = valSig if isEmptyXmlDoc preXmlDoc then @@ -185,16 +185,16 @@ module XmlDocParsing = let paramNames = synValInfo.ArgNames XmlDocable(line, indent, paramNames) - | SynMemberDefn.Interface (members = synMemberDefnsOption) -> + | SynMemberDefn.Interface(members = synMemberDefnsOption) -> match synMemberDefnsOption with | None -> () - | Some (xs) -> + | Some(xs) -> for x in xs do yield! getXmlDocablesSynMemberDefn x - | SynMemberDefn.NestedType (synTypeDefn, _, _) -> yield! getXmlDocablesSynTypeDefn synTypeDefn + | SynMemberDefn.NestedType(synTypeDefn, _, _) -> yield! getXmlDocablesSynTypeDefn synTypeDefn - | SynMemberDefn.AutoProperty (attributes = synAttributes; range = range) -> + | SynMemberDefn.AutoProperty(attributes = synAttributes; range = range) -> let fullRange = synAttributes |> List.fold (fun r a -> unionRanges r a.Range) range let line = fullRange.StartLine let indent = indentOf line diff --git a/src/fcs-fable/src/Compiler/Service/service.fs b/src/fcs-fable/src/Compiler/Service/service.fs index 8b9bda8e9f..0d00e832e4 100644 --- a/src/fcs-fable/src/Compiler/Service/service.fs +++ b/src/fcs-fable/src/Compiler/Service/service.fs @@ -168,7 +168,7 @@ module CompileHelpers = let setOutputStreams execute = // Set the output streams, if requested match execute with - | Some (writer, error) -> + | Some(writer, error) -> Console.SetOut writer Console.SetError error | None -> () @@ -237,7 +237,7 @@ type BackgroundCompiler for r in options.ReferencedProjects do match r with - | FSharpReferencedProject.FSharpReference (nm, opts) -> + | FSharpReferencedProject.FSharpReference(nm, opts) -> // Don't use cross-project references for FSharp.Core, since various bits of code // require a concrete FSharp.Core to exist on-disk. The only solutions that have // these cross-project references to FSharp.Core are VisualFSharp.sln and FSharp.sln. The ramification @@ -263,7 +263,7 @@ type BackgroundCompiler member x.FileName = nm } - | FSharpReferencedProject.PEReference (getStamp, delayedReader) -> + | FSharpReferencedProject.PEReference(getStamp, delayedReader) -> { new IProjectReference with member x.EvaluateRawContents() = node { @@ -284,15 +284,16 @@ type BackgroundCompiler member x.FileName = delayedReader.OutputFile } - | FSharpReferencedProject.ILModuleReference (nm, getStamp, getReader) -> + | FSharpReferencedProject.ILModuleReference(nm, getStamp, getReader) -> { new IProjectReference with member x.EvaluateRawContents() = - node { + cancellable { let ilReader = getReader () let ilModuleDef, ilAsmRefs = ilReader.ILModuleDef, ilReader.ILAssemblyRefs let data = RawFSharpAssemblyData(ilModuleDef, ilAsmRefs) :> IRawFSharpAssemblyData return ProjectAssemblyDataResult.Available data } + |> NodeCode.FromCancellable member x.TryGetLogicalTimeStamp _ = getStamp () |> Some member x.FileName = nm @@ -507,6 +508,9 @@ type BackgroundCompiler Activity.Tags.cache, cache.ToString() |] + let! ct = Async.CancellationToken + use _ = Cancellable.UsingToken(ct) + if cache then let hash = sourceText.GetHashCode() |> int64 @@ -548,6 +552,9 @@ type BackgroundCompiler "BackgroundCompiler.GetBackgroundParseResultsForFileInProject" [| Activity.Tags.fileName, fileName; Activity.Tags.userOpName, userOpName |] + let! ct = NodeCode.CancellationToken + use _ = Cancellable.UsingToken(ct) + let! builderOpt, creationDiags = getOrCreateBuilder (options, userOpName) match builderOpt with @@ -596,7 +603,7 @@ type BackgroundCompiler | parseResults, checkResults, _, priorTimeStamp when (match builder.GetCheckResultsBeforeFileInProjectEvenIfStale fileName with | None -> false - | Some (tcPrior) -> + | Some(tcPrior) -> tcPrior.ProjectTimeStamp = priorTimeStamp && builder.AreCheckResultsBeforeFileInProjectReady(fileName)) -> @@ -668,7 +675,7 @@ type BackgroundCompiler node { match! bc.GetCachedCheckFileResult(builder, fileName, sourceText, options) with - | Some (_, results) -> return FSharpCheckFileAnswer.Succeeded results + | Some(_, results) -> return FSharpCheckFileAnswer.Succeeded results | _ -> let lazyCheckFile = getCheckFileNode (parseResults, sourceText, fileName, options, fileVersion, builder, tcPrior, tcInfo, creationDiags) @@ -697,6 +704,9 @@ type BackgroundCompiler Activity.Tags.userOpName, userOpName |] + let! ct = NodeCode.CancellationToken + use _ = Cancellable.UsingToken(ct) + let! cachedResults = node { let! builderOpt, creationDiags = getAnyBuilder (options, userOpName) @@ -704,15 +714,15 @@ type BackgroundCompiler match builderOpt with | Some builder -> match! bc.GetCachedCheckFileResult(builder, fileName, sourceText, options) with - | Some (_, checkResults) -> return Some(builder, creationDiags, Some(FSharpCheckFileAnswer.Succeeded checkResults)) + | Some(_, checkResults) -> return Some(builder, creationDiags, Some(FSharpCheckFileAnswer.Succeeded checkResults)) | _ -> return Some(builder, creationDiags, None) | _ -> return None // the builder wasn't ready } match cachedResults with | None -> return None - | Some (_, _, Some x) -> return Some x - | Some (builder, creationDiags, None) -> + | Some(_, _, Some x) -> return Some x + | Some(builder, creationDiags, None) -> Trace.TraceInformation("FCS: {0}.{1} ({2})", userOpName, "CheckFileInProjectAllowingStaleCachedResults.CacheMiss", fileName) match builder.GetCheckResultsBeforeFileInProjectEvenIfStale fileName with @@ -739,6 +749,9 @@ type BackgroundCompiler Activity.Tags.userOpName, userOpName |] + let! ct = NodeCode.CancellationToken + use _ = Cancellable.UsingToken(ct) + let! builderOpt, creationDiags = getOrCreateBuilder (options, userOpName) match builderOpt with @@ -748,7 +761,7 @@ type BackgroundCompiler let! cachedResults = bc.GetCachedCheckFileResult(builder, fileName, sourceText, options) match cachedResults with - | Some (_, checkResults) -> return FSharpCheckFileAnswer.Succeeded checkResults + | Some(_, checkResults) -> return FSharpCheckFileAnswer.Succeeded checkResults | _ -> let! tcPrior = builder.GetCheckResultsBeforeFileInProject fileName let! tcInfo = tcPrior.GetOrComputeTcInfo() @@ -767,6 +780,9 @@ type BackgroundCompiler Activity.Tags.userOpName, userOpName |] + let! ct = NodeCode.CancellationToken + use _ = Cancellable.UsingToken(ct) + let! builderOpt, creationDiags = getOrCreateBuilder (options, userOpName) match builderOpt with @@ -779,7 +795,7 @@ type BackgroundCompiler let! cachedResults = bc.GetCachedCheckFileResult(builder, fileName, sourceText, options) match cachedResults with - | Some (parseResults, checkResults) -> return (parseResults, FSharpCheckFileAnswer.Succeeded checkResults) + | Some(parseResults, checkResults) -> return (parseResults, FSharpCheckFileAnswer.Succeeded checkResults) | _ -> let! tcPrior = builder.GetCheckResultsBeforeFileInProject fileName let! tcInfo = tcPrior.GetOrComputeTcInfo() @@ -822,6 +838,9 @@ type BackgroundCompiler Activity.Tags.userOpName, userOpName |] + let! ct = NodeCode.CancellationToken + use _ = Cancellable.UsingToken(ct) + let! builderOpt, _ = getOrCreateBuilder (options, userOpName) match builderOpt with @@ -841,6 +860,9 @@ type BackgroundCompiler Activity.Tags.userOpName, userOpName |] + let! ct = NodeCode.CancellationToken + use _ = Cancellable.UsingToken(ct) + let! builderOpt, creationDiags = getOrCreateBuilder (options, userOpName) match builderOpt with @@ -981,6 +1003,9 @@ type BackgroundCompiler Activity.Tags.userOpName, userOpName |] + let! ct = NodeCode.CancellationToken + use _ = Cancellable.UsingToken(ct) + let! builderOpt, _ = getOrCreateBuilder (options, userOpName) match builderOpt with @@ -1015,7 +1040,7 @@ type BackgroundCompiler match resOpt with | Some res -> match res.TryPeekValue() with - | ValueSome (a, b, c, _) -> Some(a, b, c) + | ValueSome(a, b, c, _) -> Some(a, b, c) | ValueNone -> None | None -> None | None -> None @@ -1023,6 +1048,9 @@ type BackgroundCompiler /// Parse and typecheck the whole project (the implementation, called recursively as project graph is evaluated) member private _.ParseAndCheckProjectImpl(options, userOpName) = node { + let! ct = NodeCode.CancellationToken + use _ = Cancellable.UsingToken(ct) + let! builderOpt, creationDiags = getOrCreateBuilder (options, userOpName) match builderOpt with @@ -1111,7 +1139,7 @@ type BackgroundCompiler match tryGetBuilderNode options with | Some lazyWork -> match lazyWork.TryPeekValue() with - | ValueSome (Some builder, _) -> Some(builder.GetLogicalTimeStampForProject(cache)) + | ValueSome(Some builder, _) -> Some(builder.GetLogicalTimeStampForProject(cache)) | _ -> None | _ -> None @@ -1156,6 +1184,9 @@ type BackgroundCompiler // Do we assume .NET Framework references for scripts? let assumeDotNetFramework = defaultArg assumeDotNetFramework true + let! ct = Cancellable.token () + use _ = Cancellable.UsingToken(ct) + let extraFlags = if previewEnabled then [| "--langversion:preview" |] @@ -1224,7 +1255,14 @@ type BackgroundCompiler let diags = loadClosure.LoadClosureRootFileDiagnostics |> List.map (fun (exn, isError) -> - FSharpDiagnostic.CreateFromException(exn, isError, range.Zero, false, options.OtherOptions |> Array.contains "--flaterrors", None)) + FSharpDiagnostic.CreateFromException( + exn, + isError, + range.Zero, + false, + options.OtherOptions |> Array.contains "--flaterrors", + None + )) return options, (diags @ diagnostics.Diagnostics) } @@ -1252,7 +1290,12 @@ type BackgroundCompiler lock gate (fun () -> options - |> Seq.iter (fun options -> incrementalBuildersCache.RemoveAnySimilar(AnyCallerThread, options))) + |> Seq.iter (fun options -> + incrementalBuildersCache.RemoveAnySimilar(AnyCallerThread, options) + + parseCacheLock.AcquireLock(fun ltok -> + for sourceFile in options.SourceFiles do + checkFileInProjectCache.RemoveAnySimilar(ltok, (sourceFile, 0L, options))))) member _.NotifyProjectCleaned(options: FSharpProjectOptions, userOpName) = use _ = @@ -1264,6 +1307,9 @@ type BackgroundCompiler |] async { + let! ct = Async.CancellationToken + use _ = Cancellable.UsingToken(ct) + let! ct = Async.CancellationToken // If there was a similar entry (as there normally will have been) then re-establish an empty builder . This // is a somewhat arbitrary choice - it will have the effect of releasing memory associated with the previous @@ -1416,7 +1462,7 @@ type FSharpChecker let useChangeNotifications = match documentSource with - | Some (DocumentSource.Custom _) -> true + | Some(DocumentSource.Custom _) -> true | _ -> false let useSyntaxTreeCache = defaultArg useSyntaxTreeCache true @@ -1439,7 +1485,7 @@ type FSharpChecker parallelReferenceResolution, captureIdentifiersWhenParsing, (match documentSource with - | Some (DocumentSource.Custom f) -> Some f + | Some(DocumentSource.Custom f) -> Some f | _ -> None), useChangeNotifications, useSyntaxTreeCache @@ -1509,6 +1555,9 @@ type FSharpChecker use _ = Activity.start "FSharpChecker.Compile" [| Activity.Tags.userOpName, _userOpName |] async { + let! ct = Async.CancellationToken + use _ = Cancellable.UsingToken(ct) + let ctok = CompilationThreadToken() return CompileHelpers.compileFromArgs (ctok, argv, legacyReferenceResolver, None, None) } @@ -1628,6 +1677,9 @@ type FSharpChecker let userOpName = defaultArg userOpName "Unknown" node { + let! ct = NodeCode.CancellationToken + use _ = Cancellable.UsingToken(ct) + if fastCheck <> Some true || not captureIdentifiersWhenParsing then return! backgroundCompiler.FindReferencesInFile(fileName, options, symbol, canInvalidateProject, userOpName) else diff --git a/src/fcs-fable/src/Compiler/Service/service.fsi b/src/fcs-fable/src/Compiler/Service/service.fsi index 1c0d0b118e..c70939b58b 100644 --- a/src/fcs-fable/src/Compiler/Service/service.fsi +++ b/src/fcs-fable/src/Compiler/Service/service.fsi @@ -56,8 +56,10 @@ type public FSharpChecker = ?enablePartialTypeChecking: bool * ?parallelReferenceResolution: bool * ?captureIdentifiersWhenParsing: bool * - [] ?documentSource: DocumentSource * - [] ?useSyntaxTreeCache: bool -> + [] ?documentSource: + DocumentSource * + [] ?useSyntaxTreeCache: + bool -> FSharpChecker /// @@ -423,6 +425,7 @@ type public FSharpChecker = [] static member Instance: FSharpChecker + member internal FrameworkImportsCache: FrameworkImportsCache member internal ReferenceResolver: LegacyReferenceResolver diff --git a/src/fcs-fable/src/Compiler/Symbols/Exprs.fs b/src/fcs-fable/src/Compiler/Symbols/Exprs.fs index d95b0daf0b..daae21431e 100644 --- a/src/fcs-fable/src/Compiler/Symbols/Exprs.fs +++ b/src/fcs-fable/src/Compiler/Symbols/Exprs.fs @@ -928,11 +928,12 @@ module FSharpExprConvert = let witnessInfo = traitInfo.GetWitnessInfo() let env = { env with suppressWitnesses = true } // First check if this is a witness in ReflectedDefinition code - if env.witnessesInScope.ContainsKey witnessInfo then - let witnessArgIdx = env.witnessesInScope[witnessInfo] + match env.witnessesInScope.TryGetValue witnessInfo with + | true, scopewitnessinfo -> + let witnessArgIdx = scopewitnessinfo E.WitnessArg(witnessArgIdx) // Otherwise it is a witness in a quotation literal - else + | false, _ -> //failwith "witness not found" E.WitnessArg(-1) @@ -1162,7 +1163,7 @@ module FSharpExprConvert = let ty = if isStatic then ty else mkFunTy g enclosingTy ty mkForallTyIfNeeded (typars1 @ typars2) ty - let argCount = List.sum (List.map List.length argTys) + (if isStatic then 0 else 1) + let argCount = (List.sumBy List.length argTys) + (if isStatic then 0 else 1) let key = ValLinkageFullKey({ MemberParentMangledName=memberParentName; MemberIsOverride=false; LogicalName=logicalName; TotalArgCount= argCount }, Some linkageType) let (PubPath p) = tcref.PublicPath.Value @@ -1274,7 +1275,7 @@ module FSharpExprConvert = let acc = match dfltOpt with | Some d -> ConvDecisionTreePrim cenv env dtreeRetTy d - | None -> wfail( "FSharp.Compiler.Service cannot yet return this kind of pattern match", m) + | None -> E.DecisionTreeSuccess(0, []) (csl, acc) ||> List.foldBack (ConvDecisionTreeCase (cenv: SymbolEnv) env m inpExpr dtreeRetTy) diff --git a/src/fcs-fable/src/Compiler/Symbols/Exprs.fsi b/src/fcs-fable/src/Compiler/Symbols/Exprs.fsi index 5c92be7002..c0d21e4773 100644 --- a/src/fcs-fable/src/Compiler/Symbols/Exprs.fsi +++ b/src/fcs-fable/src/Compiler/Symbols/Exprs.fsi @@ -129,7 +129,12 @@ module public FSharpExprPatterns = /// Like Call but also indicates witness arguments val (|CallWithWitnesses|_|): FSharpExpr -> - (FSharpExpr option * FSharpMemberOrFunctionOrValue * FSharpType list * FSharpType list * FSharpExpr list * FSharpExpr list) option + (FSharpExpr option * + FSharpMemberOrFunctionOrValue * + FSharpType list * + FSharpType list * + FSharpExpr list * + FSharpExpr list) option /// Matches expressions which are calls to object constructors val (|NewObject|_|): FSharpExpr -> (FSharpMemberOrFunctionOrValue * FSharpType list * FSharpExpr list) option @@ -228,7 +233,13 @@ module public FSharpExprPatterns = /// Matches try/with expressions val (|TryWith|_|): FSharpExpr -> - (FSharpExpr * FSharpMemberOrFunctionOrValue * FSharpExpr * FSharpMemberOrFunctionOrValue * FSharpExpr * DebugPointAtTry * DebugPointAtWith) option + (FSharpExpr * + FSharpMemberOrFunctionOrValue * + FSharpExpr * + FSharpMemberOrFunctionOrValue * + FSharpExpr * + DebugPointAtTry * + DebugPointAtWith) option /// Matches expressions which create an instance of a delegate type val (|NewDelegate|_|): FSharpExpr -> (FSharpType * FSharpExpr) option diff --git a/src/fcs-fable/src/Compiler/Symbols/FSharpDiagnostic.fs b/src/fcs-fable/src/Compiler/Symbols/FSharpDiagnostic.fs index 0320e8001a..3374a292dd 100644 --- a/src/fcs-fable/src/Compiler/Symbols/FSharpDiagnostic.fs +++ b/src/fcs-fable/src/Compiler/Symbols/FSharpDiagnostic.fs @@ -275,7 +275,7 @@ type DiagnosticsScope(flatErrors: bool) = // Here we only call errorRecovery to save the error message for later use by TryGetFirstErrorText. try errorRecovery e m - with _ -> + with RecoverableException _ -> () None match res with diff --git a/src/fcs-fable/src/Compiler/Symbols/SymbolHelpers.fs b/src/fcs-fable/src/Compiler/Symbols/SymbolHelpers.fs index e76f9e2542..ab0076847f 100644 --- a/src/fcs-fable/src/Compiler/Symbols/SymbolHelpers.fs +++ b/src/fcs-fable/src/Compiler/Symbols/SymbolHelpers.fs @@ -460,7 +460,7 @@ module internal SymbolHelpers = | Item.RecdField(RecdFieldInfo(_, RecdFieldRef(tcref1, n1))), Item.RecdField(RecdFieldInfo(_, RecdFieldRef(tcref2, n2))) -> (tyconRefEq g tcref1 tcref2) && (n1 = n2) // there is no direct function as in the previous case | Item.Property(info = pi1s), Item.Property(info = pi2s) -> - (pi1s, pi2s) ||> List.forall2 (fun pi1 pi2 -> PropInfo.PropInfosUseIdenticalDefinitions pi1 pi2) + (pi1s, pi2s) ||> List.forall2 PropInfo.PropInfosUseIdenticalDefinitions | Item.Event evt1, Item.Event evt2 -> EventInfo.EventInfosUseIdenticalDefinitions evt1 evt2 | Item.AnonRecdField(anon1, _, i1, _), Item.AnonRecdField(anon2, _, i2, _) -> @@ -469,7 +469,7 @@ module internal SymbolHelpers = (traitInfo1.MemberLogicalName = traitInfo2.MemberLogicalName) | Item.CtorGroup(_, meths1), Item.CtorGroup(_, meths2) -> (meths1, meths2) - ||> List.forall2 (fun minfo1 minfo2 -> MethInfo.MethInfosUseIdenticalDefinitions minfo1 minfo2) + ||> List.forall2 MethInfo.MethInfosUseIdenticalDefinitions | Item.UnqualifiedType tcrefs1, Item.UnqualifiedType tcrefs2 -> (tcrefs1, tcrefs2) ||> List.forall2 (fun tcref1 tcref2 -> tyconRefEq g tcref1 tcref2) diff --git a/src/fcs-fable/src/Compiler/Symbols/Symbols.fs b/src/fcs-fable/src/Compiler/Symbols/Symbols.fs index dc2772708b..08e9fac7d4 100644 --- a/src/fcs-fable/src/Compiler/Symbols/Symbols.fs +++ b/src/fcs-fable/src/Compiler/Symbols/Symbols.fs @@ -208,7 +208,7 @@ module Impl = type FSharpDisplayContext(denv: TcGlobals -> DisplayEnv) = member _.Contents g = denv g - static member Empty = FSharpDisplayContext(fun g -> DisplayEnv.Empty g) + static member Empty = FSharpDisplayContext DisplayEnv.Empty member _.WithShortTypeNames shortNames = FSharpDisplayContext(fun g -> { denv g with shortTypeNames = shortNames }) @@ -1674,7 +1674,7 @@ type FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) = let methods = if matchParameterNumber then methodInfos - |> List.filter (fun methodInfo -> not (methodInfo.NumArgs = m.NumArgs) ) + |> List.filter (fun methodInfo -> methodInfo.NumArgs <> m.NumArgs ) else methodInfos methods |> List.map (fun mi -> @@ -1770,6 +1770,13 @@ type FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) = | P p -> mkMethSym p.SetterMethod | E _ | M _ | C _ | V _ -> invalidOp "the value or member doesn't have an associated setter method" + member _.IsUnionCaseTester = + checkIsResolved() + match d with + | P p -> p.IsUnionCaseTester + | M m -> m.IsUnionCaseTester + | E _ | C _ | V _ -> invalidOp "the value or member is not a property" + member _.EventAddMethod = checkIsResolved() match d with diff --git a/src/fcs-fable/src/Compiler/Symbols/Symbols.fsi b/src/fcs-fable/src/Compiler/Symbols/Symbols.fsi index f465fd671d..4050073c70 100644 --- a/src/fcs-fable/src/Compiler/Symbols/Symbols.fsi +++ b/src/fcs-fable/src/Compiler/Symbols/Symbols.fsi @@ -84,6 +84,7 @@ type FSharpSymbol = static member internal Create: g: TcGlobals * thisCcu: CcuThunk * thisCcuTyp: ModuleOrNamespaceType * tcImports: TcImports * item: Item -> FSharpSymbol + static member internal Create: cenv: SymbolEnv * item: Item -> FSharpSymbol /// Computes if the symbol is accessible for the given accessibility rights @@ -834,6 +835,9 @@ type FSharpMemberOrFunctionOrValue = /// Get an associated setter method of the property member SetterMethod: FSharpMemberOrFunctionOrValue + /// Indicates if the property or getter method is part of a IsABC union case tester implied by a union case definition + member IsUnionCaseTester: bool + /// Get an associated add method of an event member EventAddMethod: FSharpMemberOrFunctionOrValue @@ -1062,6 +1066,7 @@ type FSharpType = internal new: g: TcGlobals * thisCcu: CcuThunk * thisCcuTyp: ModuleOrNamespaceType * tcImports: TcImports * ty: TType -> FSharpType + internal new: SymbolEnv * ty: TType -> FSharpType /// Indicates this is a named type in an unresolved assembly diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fs b/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fs index ac582666b6..cfe45ed00d 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fs @@ -98,13 +98,13 @@ module LexbufLocalXmlDocStore = | true, collector -> collector | _ -> let collector = box (XmlDocCollector()) - lexbuf.BufferLocalStore[ xmlDocKey ] <- collector + lexbuf.BufferLocalStore[xmlDocKey] <- collector collector |> unbox let ClearXmlDoc (lexbuf: Lexbuf) = - lexbuf.BufferLocalStore[ xmlDocKey ] <- box (XmlDocCollector()) + lexbuf.BufferLocalStore[xmlDocKey] <- box (XmlDocCollector()) /// Called from the lexer to save a single line of XML doc comment. let SaveXmlDocLine (lexbuf: Lexbuf, lineText, range: range) = @@ -173,8 +173,8 @@ type LexerIfdefExpression = let rec LexerIfdefEval (lookup: string -> bool) = function - | IfdefAnd (l, r) -> (LexerIfdefEval lookup l) && (LexerIfdefEval lookup r) - | IfdefOr (l, r) -> (LexerIfdefEval lookup l) || (LexerIfdefEval lookup r) + | IfdefAnd(l, r) -> (LexerIfdefEval lookup l) && (LexerIfdefEval lookup r) + | IfdefOr(l, r) -> (LexerIfdefEval lookup l) || (LexerIfdefEval lookup r) | IfdefNot e -> not (LexerIfdefEval lookup e) | IfdefId id -> lookup id @@ -189,7 +189,7 @@ module LexbufIfdefStore = | true, store -> store | _ -> let store = box (ResizeArray()) - lexbuf.BufferLocalStore[ ifDefKey ] <- store + lexbuf.BufferLocalStore[ifDefKey] <- store store |> unbox> @@ -203,8 +203,8 @@ module LexbufIfdefStore = let expr = let rec visit (expr: LexerIfdefExpression) : IfDirectiveExpression = match expr with - | LexerIfdefExpression.IfdefAnd (l, r) -> IfDirectiveExpression.And(visit l, visit r) - | LexerIfdefExpression.IfdefOr (l, r) -> IfDirectiveExpression.Or(visit l, visit r) + | LexerIfdefExpression.IfdefAnd(l, r) -> IfDirectiveExpression.And(visit l, visit r) + | LexerIfdefExpression.IfdefOr(l, r) -> IfDirectiveExpression.Or(visit l, visit r) | LexerIfdefExpression.IfdefNot e -> IfDirectiveExpression.Not(visit e) | LexerIfdefExpression.IfdefId id -> IfDirectiveExpression.Ident id @@ -238,7 +238,7 @@ module LexbufCommentStore = | true, store -> store | _ -> let store = box (ResizeArray()) - lexbuf.BufferLocalStore[ commentKey ] <- store + lexbuf.BufferLocalStore[commentKey] <- store store |> unbox> @@ -341,25 +341,25 @@ type LexerContinuation = member x.LexerIfdefStack = match x with - | LexCont.Token (ifdef = ifd) - | LexCont.IfDefSkip (ifdef = ifd) - | LexCont.String (ifdef = ifd) - | LexCont.Comment (ifdef = ifd) - | LexCont.SingleLineComment (ifdef = ifd) - | LexCont.StringInComment (ifdef = ifd) - | LexCont.EndLine (ifdef = ifd) - | LexCont.MLOnly (ifdef = ifd) -> ifd + | LexCont.Token(ifdef = ifd) + | LexCont.IfDefSkip(ifdef = ifd) + | LexCont.String(ifdef = ifd) + | LexCont.Comment(ifdef = ifd) + | LexCont.SingleLineComment(ifdef = ifd) + | LexCont.StringInComment(ifdef = ifd) + | LexCont.EndLine(ifdef = ifd) + | LexCont.MLOnly(ifdef = ifd) -> ifd member x.LexerInterpStringNesting = match x with - | LexCont.Token (nesting = nesting) - | LexCont.IfDefSkip (nesting = nesting) - | LexCont.String (nesting = nesting) - | LexCont.Comment (nesting = nesting) - | LexCont.SingleLineComment (nesting = nesting) - | LexCont.StringInComment (nesting = nesting) - | LexCont.EndLine (nesting = nesting) - | LexCont.MLOnly (nesting = nesting) -> nesting + | LexCont.Token(nesting = nesting) + | LexCont.IfDefSkip(nesting = nesting) + | LexCont.String(nesting = nesting) + | LexCont.Comment(nesting = nesting) + | LexCont.SingleLineComment(nesting = nesting) + | LexCont.StringInComment(nesting = nesting) + | LexCont.EndLine(nesting = nesting) + | LexCont.MLOnly(nesting = nesting) -> nesting and LexCont = LexerContinuation @@ -429,7 +429,8 @@ let mkSynMemberDefnGetSet (parseState: IParseState) (opt_inline: range option) (mWith: range) - (classDefnMemberGetSetElements: (range option * SynAttributeList list * (SynPat * range) * (range option * SynReturnInfo) option * range option * SynExpr * range) list) + (classDefnMemberGetSetElements: + (range option * SynAttributeList list * (SynPat * range) * (range option * SynReturnInfo) option * range option * SynExpr * range) list) (mAnd: range option) (mWhole: range) (propertyNameBindingPat: SynPat) @@ -496,18 +497,18 @@ let mkSynMemberDefnGetSet Some(memFlagsBuilder SynMemberKind.Member), trivia) - let (SynBinding (accessibility = vis; isInline = isInline; attributes = attrs; headPat = pv; range = mBindLhs)) = + let (SynBinding(accessibility = vis; isInline = isInline; attributes = attrs; headPat = pv; range = mBindLhs)) = binding let memberKind = let getset = let rec go p = match p with - | SynPat.LongIdent(longDotId = SynLongIdent ([ id ], _, _)) -> id.idText - | SynPat.Named (SynIdent (nm, _), _, _, _) - | SynPat.As (_, SynPat.Named (SynIdent (nm, _), _, _, _), _) -> nm.idText - | SynPat.Typed (p, _, _) -> go p - | SynPat.Attrib (p, _, _) -> go p + | SynPat.LongIdent(longDotId = SynLongIdent([ id ], _, _)) -> id.idText + | SynPat.Named(SynIdent(nm, _), _, _, _) + | SynPat.As(_, SynPat.Named(SynIdent(nm, _), _, _, _), _) -> nm.idText + | SynPat.Typed(p, _, _) -> go p + | SynPat.Attrib(p, _, _) -> go p | _ -> raiseParseErrorAt mBindLhs (FSComp.SR.parsInvalidDeclarationSyntax ()) go pv @@ -564,14 +565,14 @@ let mkSynMemberDefnGetSet Some(memFlagsBuilder memberKind), trivia) - let (SynBinding (vis, _, isInline, _, attrs, doc, valSynData, pv, rhsRetInfo, rhsExpr, mBindLhs, spBind, trivia)) = + let (SynBinding(vis, _, isInline, _, attrs, doc, valSynData, pv, rhsRetInfo, rhsExpr, mBindLhs, spBind, trivia)) = binding let mWholeBindLhs = (mBindLhs, attrs) ||> unionRangeWithListBy (fun (a: SynAttributeList) -> a.Range) - let (SynValData (valInfo = valSynInfo)) = valSynData + let (SynValData(valInfo = valSynInfo)) = valSynData // Setters have all arguments tupled in their internal TAST form, though they don't appear to be // tupled from the syntax @@ -584,34 +585,34 @@ let mkSynMemberDefnGetSet | _ -> SynInfo.unnamedTopArg match memberKind, valSynInfo, memFlags.IsInstance with - | SynMemberKind.PropertyGet, SynValInfo ([], _ret), false - | SynMemberKind.PropertyGet, SynValInfo ([ _ ], _ret), true -> + | SynMemberKind.PropertyGet, SynValInfo([], _ret), false + | SynMemberKind.PropertyGet, SynValInfo([ _ ], _ret), true -> raiseParseErrorAt mWholeBindLhs (FSComp.SR.parsGetterMustHaveAtLeastOneArgument ()) - | SynMemberKind.PropertyGet, SynValInfo (thisArg :: indexOrUnitArgs :: rest, ret), true -> + | SynMemberKind.PropertyGet, SynValInfo(thisArg :: indexOrUnitArgs :: rest, ret), true -> if not rest.IsEmpty then reportParseErrorAt mWholeBindLhs (FSComp.SR.parsGetterAtMostOneArgument ()) SynValInfo([ thisArg; indexOrUnitArgs ], ret) - | SynMemberKind.PropertyGet, SynValInfo (indexOrUnitArgs :: rest, ret), false -> + | SynMemberKind.PropertyGet, SynValInfo(indexOrUnitArgs :: rest, ret), false -> if not rest.IsEmpty then reportParseErrorAt mWholeBindLhs (FSComp.SR.parsGetterAtMostOneArgument ()) SynValInfo([ indexOrUnitArgs ], ret) - | SynMemberKind.PropertySet, SynValInfo ([ thisArg; valueArg ], ret), true -> + | SynMemberKind.PropertySet, SynValInfo([ thisArg; valueArg ], ret), true -> SynValInfo([ thisArg; adjustValueArg valueArg ], ret) - | SynMemberKind.PropertySet, SynValInfo (thisArg :: indexArgs :: valueArg :: rest, ret), true -> + | SynMemberKind.PropertySet, SynValInfo(thisArg :: indexArgs :: valueArg :: rest, ret), true -> if not rest.IsEmpty then reportParseErrorAt mWholeBindLhs (FSComp.SR.parsSetterAtMostTwoArguments ()) SynValInfo([ thisArg; indexArgs @ adjustValueArg valueArg ], ret) - | SynMemberKind.PropertySet, SynValInfo ([ valueArg ], ret), false -> SynValInfo([ adjustValueArg valueArg ], ret) + | SynMemberKind.PropertySet, SynValInfo([ valueArg ], ret), false -> SynValInfo([ adjustValueArg valueArg ], ret) - | SynMemberKind.PropertySet, SynValInfo (indexArgs :: valueArg :: rest, ret), _ -> + | SynMemberKind.PropertySet, SynValInfo(indexArgs :: valueArg :: rest, ret), _ -> if not rest.IsEmpty then reportParseErrorAt mWholeBindLhs (FSComp.SR.parsSetterAtMostTwoArguments ()) @@ -621,7 +622,7 @@ let mkSynMemberDefnGetSet // should be unreachable, cover just in case raiseParseErrorAt mWholeBindLhs (FSComp.SR.parsInvalidProperty ()) - let valSynData = SynValData(Some(memFlags), valSynInfo, None, None) + let valSynData = SynValData(Some(memFlags), valSynInfo, None) // Fold together the information from the first lambda pattern and the get/set binding // This uses the 'this' variable from the first and the patterns for the get/set binding, @@ -644,14 +645,14 @@ let mkSynMemberDefnGetSet Some(memFlagsBuilder SynMemberKind.Member), trivia) - let (SynBinding (_, _, _, _, _, doc2, _, bindingPatOuter, _, _, _, _, _)) = + let (SynBinding(_, _, _, _, _, doc2, _, bindingPatOuter, _, _, _, _, _)) = bindingOuter let lidOuter, lidVisOuter = match bindingPatOuter with - | SynPat.LongIdent (lid, _, None, SynArgPats.Pats [], lidVisOuter, _m) -> lid, lidVisOuter - | SynPat.Named (SynIdent (id, _), _, visOuter, _m) - | SynPat.As (_, SynPat.Named (SynIdent (id, _), _, visOuter, _m), _) -> SynLongIdent([ id ], [], [ None ]), visOuter + | SynPat.LongIdent(lid, _, None, SynArgPats.Pats [], lidVisOuter, _m) -> lid, lidVisOuter + | SynPat.Named(SynIdent(id, _), _, visOuter, _m) + | SynPat.As(_, SynPat.Named(SynIdent(id, _), _, visOuter, _m), _) -> SynLongIdent([ id ], [], [ None ]), visOuter | _ -> raiseParseErrorAt mWholeBindLhs (FSComp.SR.parsInvalidDeclarationSyntax ()) // Merge the visibility from the outer point with the inner point, e.g. @@ -669,17 +670,18 @@ let mkSynMemberDefnGetSet // Replace the "get" or the "set" with the right name let rec go p = match p with - | SynPat.LongIdent (longDotId = SynLongIdent ([ id ], _, _) - typarDecls = tyargs - argPats = SynArgPats.Pats args - accessibility = lidVisInner - range = m) -> + | SynPat.LongIdent( + longDotId = SynLongIdent([ id ], _, _) + typarDecls = tyargs + argPats = SynArgPats.Pats args + accessibility = lidVisInner + range = m) -> // Setters have all arguments tupled in their internal form, though they don't // appear to be tupled from the syntax. Somewhat unfortunate let args = if id.idText = "set" then match args with - | [ SynPat.Paren (SynPat.Tuple (false, indexPats, commas, _), indexPatRange); valuePat ] when + | [ SynPat.Paren(SynPat.Tuple(false, indexPats, commas, _), indexPatRange); valuePat ] when id.idText = "set" -> [ @@ -692,13 +694,13 @@ let mkSynMemberDefnGetSet args SynPat.LongIdent(lidOuter, Some id, tyargs, SynArgPats.Pats args, mergeLidVisOuter lidVisInner, m), Some id - | SynPat.Named (_, _, lidVisInner, m) - | SynPat.As (_, SynPat.Named (_, _, lidVisInner, m), _) -> + | SynPat.Named(_, _, lidVisInner, m) + | SynPat.As(_, SynPat.Named(_, _, lidVisInner, m), _) -> SynPat.LongIdent(lidOuter, None, None, SynArgPats.Pats [], mergeLidVisOuter lidVisInner, m), None - | SynPat.Typed (p, ty, m) -> + | SynPat.Typed(p, ty, m) -> let p, id = go p SynPat.Typed(p, ty, m), id - | SynPat.Attrib (p, attribs, m) -> + | SynPat.Attrib(p, attribs, m) -> let p, id = go p SynPat.Attrib(p, attribs, m), id | SynPat.Wild m -> SynPat.Wild(m), None @@ -732,10 +734,10 @@ let mkSynMemberDefnGetSet match classDefnMemberGetSetElements with | [ h ] -> match tryMkSynMemberDefnMember h with - | Some (memberDefn, getSetIdentOpt) -> + | Some(memberDefn, getSetIdentOpt) -> match memberDefn, getSetIdentOpt with | SynMemberDefn.Member _, None -> [ memberDefn ] - | SynMemberDefn.Member (binding, m), Some getOrSet -> + | SynMemberDefn.Member(binding, m), Some getOrSet -> if getOrSet.idText = "get" then let trivia = { @@ -765,8 +767,8 @@ let mkSynMemberDefnGetSet let setter = tryMkSynMemberDefnMember s match getter, setter with - | Some (SynMemberDefn.Member (getBinding, m1), GetIdent mGet), Some (SynMemberDefn.Member (setBinding, m2), SetIdent mSet) - | Some (SynMemberDefn.Member (setBinding, m1), SetIdent mSet), Some (SynMemberDefn.Member (getBinding, m2), GetIdent mGet) -> + | Some(SynMemberDefn.Member(getBinding, m1), GetIdent mGet), Some(SynMemberDefn.Member(setBinding, m2), SetIdent mSet) + | Some(SynMemberDefn.Member(setBinding, m1), SetIdent mSet), Some(SynMemberDefn.Member(getBinding, m2), GetIdent mGet) -> let range = unionRanges m1 m2 let trivia = @@ -779,8 +781,8 @@ let mkSynMemberDefnGetSet } [ SynMemberDefn.GetSetMember(Some getBinding, Some setBinding, range, trivia) ] - | Some (SynMemberDefn.Member (binding, m), getOrSet), None - | None, Some (SynMemberDefn.Member (binding, m), getOrSet) -> + | Some(SynMemberDefn.Member(binding, m), getOrSet), None + | None, Some(SynMemberDefn.Member(binding, m), getOrSet) -> let trivia = match getOrSet with | GetIdent mGet -> @@ -828,21 +830,21 @@ let mkSynMemberDefnGetSet let adjustHatPrefixToTyparLookup mFull rightExpr = let rec take inp = match inp with - | SynExpr.Ident (typarIdent) - | SynExpr.LongIdent (false, SynLongIdent ([ typarIdent ], _, _), None, _) -> + | SynExpr.Ident(typarIdent) + | SynExpr.LongIdent(false, SynLongIdent([ typarIdent ], _, _), None, _) -> let typar = SynTypar(typarIdent, TyparStaticReq.HeadType, false) SynExpr.Typar(typar, mFull) - | SynExpr.LongIdent (false, SynLongIdent ((typarIdent :: items), (dotm :: dots), (_ :: itemTrivias)), None, _) -> + | SynExpr.LongIdent(false, SynLongIdent((typarIdent :: items), (dotm :: dots), (_ :: itemTrivias)), None, _) -> let typar = SynTypar(typarIdent, TyparStaticReq.HeadType, false) let lookup = SynLongIdent(items, dots, itemTrivias) SynExpr.DotGet(SynExpr.Typar(typar, mFull), dotm, lookup, mFull) - | SynExpr.App (isAtomic, false, funcExpr, argExpr, m) -> + | SynExpr.App(isAtomic, false, funcExpr, argExpr, m) -> let funcExpr2 = take funcExpr SynExpr.App(isAtomic, false, funcExpr2, argExpr, unionRanges funcExpr2.Range m) - | SynExpr.DotGet (leftExpr, dotm, lookup, m) -> + | SynExpr.DotGet(leftExpr, dotm, lookup, m) -> let leftExpr2 = take leftExpr SynExpr.DotGet(leftExpr2, dotm, lookup, m) - | SynExpr.DotIndexedGet (leftExpr, indexArg, dotm, m) -> + | SynExpr.DotIndexedGet(leftExpr, indexArg, dotm, m) -> let leftExpr2 = take leftExpr SynExpr.DotIndexedGet(leftExpr2, indexArg, dotm, m) | _ -> @@ -931,46 +933,45 @@ let unionRangeWithPos (r: range) p = /// Report a good error at the end of file, e.g. for non-terminated strings let checkEndOfFileError t = match t with - | LexCont.IfDefSkip (_, _, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInHashIf ()) + | LexCont.IfDefSkip(_, _, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInHashIf ()) - | LexCont.String (_, _, LexerStringStyle.SingleQuote, kind, _, m) -> + | LexCont.String(_, _, LexerStringStyle.SingleQuote, kind, _, m) -> if kind.IsInterpolated then reportParseErrorAt m (FSComp.SR.parsEofInInterpolatedString ()) else reportParseErrorAt m (FSComp.SR.parsEofInString ()) - | LexCont.String (_, _, LexerStringStyle.ExtendedInterpolated, kind, _, m) - | LexCont.String (_, _, LexerStringStyle.TripleQuote, kind, _, m) -> + | LexCont.String(_, _, LexerStringStyle.ExtendedInterpolated, kind, _, m) + | LexCont.String(_, _, LexerStringStyle.TripleQuote, kind, _, m) -> if kind.IsInterpolated then reportParseErrorAt m (FSComp.SR.parsEofInInterpolatedTripleQuoteString ()) else reportParseErrorAt m (FSComp.SR.parsEofInTripleQuoteString ()) - | LexCont.String (_, _, LexerStringStyle.Verbatim, kind, _, m) -> + | LexCont.String(_, _, LexerStringStyle.Verbatim, kind, _, m) -> if kind.IsInterpolated then reportParseErrorAt m (FSComp.SR.parsEofInInterpolatedVerbatimString ()) else reportParseErrorAt m (FSComp.SR.parsEofInVerbatimString ()) - | LexCont.Comment (_, _, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInComment ()) + | LexCont.Comment(_, _, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInComment ()) - | LexCont.SingleLineComment (_, _, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInComment ()) + | LexCont.SingleLineComment(_, _, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInComment ()) - | LexCont.StringInComment (_, _, LexerStringStyle.SingleQuote, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInStringInComment ()) + | LexCont.StringInComment(_, _, LexerStringStyle.SingleQuote, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInStringInComment ()) - | LexCont.StringInComment (_, _, LexerStringStyle.Verbatim, _, m) -> - reportParseErrorAt m (FSComp.SR.parsEofInVerbatimStringInComment ()) + | LexCont.StringInComment(_, _, LexerStringStyle.Verbatim, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInVerbatimStringInComment ()) - | LexCont.StringInComment (_, _, LexerStringStyle.ExtendedInterpolated, _, m) - | LexCont.StringInComment (_, _, LexerStringStyle.TripleQuote, _, m) -> + | LexCont.StringInComment(_, _, LexerStringStyle.ExtendedInterpolated, _, m) + | LexCont.StringInComment(_, _, LexerStringStyle.TripleQuote, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInTripleQuoteStringInComment ()) - | LexCont.MLOnly (_, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInIfOcaml ()) + | LexCont.MLOnly(_, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInIfOcaml ()) - | LexCont.EndLine (_, _, LexerEndlineContinuation.Skip (_, m)) -> reportParseErrorAt m (FSComp.SR.parsEofInDirective ()) + | LexCont.EndLine(_, _, LexerEndlineContinuation.Skip(_, m)) -> reportParseErrorAt m (FSComp.SR.parsEofInDirective ()) - | LexCont.EndLine (endifs, nesting, LexerEndlineContinuation.Token) - | LexCont.Token (endifs, nesting) -> + | LexCont.EndLine(endifs, nesting, LexerEndlineContinuation.Token) + | LexCont.Token(endifs, nesting) -> match endifs with | [] -> () | (_, m) :: _ -> reportParseErrorAt m (FSComp.SR.parsNoHashEndIfFound ()) @@ -987,7 +988,7 @@ let mkClassMemberLocalBindings initialRangeOpt, attrs, vis, - BindingSetPreAttrs (_, isRec, isUse, declsPreAttrs, bindingSetRange) + BindingSetPreAttrs(_, isRec, isUse, declsPreAttrs, bindingSetRange) ) = let ignoredFreeAttrs, decls = declsPreAttrs attrs vis @@ -996,7 +997,7 @@ let mkClassMemberLocalBindings | None -> bindingSetRange | Some m -> unionRanges m bindingSetRange // decls could have a leading attribute - |> fun m -> (m, decls) ||> unionRangeWithListBy (fun (SynBinding (range = m)) -> m) + |> fun m -> (m, decls) ||> unionRangeWithListBy (fun (SynBinding(range = m)) -> m) if not (isNil ignoredFreeAttrs) then warning (Error(FSComp.SR.parsAttributesIgnored (), mWhole)) @@ -1007,11 +1008,11 @@ let mkClassMemberLocalBindings let decls = match initialRangeOpt, decls with | _, [] -> [] - | Some mStatic, SynBinding (a0, k, il, im, a, x, v, h, ri, e, m, dp, trivia) :: rest -> + | Some mStatic, SynBinding(a0, k, il, im, a, x, v, h, ri, e, m, dp, trivia) :: rest -> // prepend static keyword to existing leading keyword. let trivia = match trivia.LeadingKeyword with - | SynLeadingKeyword.LetRec (mLet, mRec) -> + | SynLeadingKeyword.LetRec(mLet, mRec) -> { trivia with LeadingKeyword = SynLeadingKeyword.StaticLetRec(mStatic, mLet, mRec) } @@ -1030,12 +1031,12 @@ let mkClassMemberLocalBindings SynMemberDefn.LetBindings(decls, isStatic, isRec, mWhole) -let mkLocalBindings (mWhole, BindingSetPreAttrs (_, isRec, isUse, declsPreAttrs, _), mIn, body: SynExpr) = +let mkLocalBindings (mWhole, BindingSetPreAttrs(_, isRec, isUse, declsPreAttrs, _), mIn, body: SynExpr) = let ignoredFreeAttrs, decls = declsPreAttrs [] None let mWhole = match decls with - | SynBinding (xmlDoc = xmlDoc) :: _ -> unionRangeWithXmlDoc xmlDoc mWhole + | SynBinding(xmlDoc = xmlDoc) :: _ -> unionRangeWithXmlDoc xmlDoc mWhole | _ -> mWhole if not (isNil ignoredFreeAttrs) then @@ -1051,14 +1052,14 @@ let mkLocalBindings (mWhole, BindingSetPreAttrs (_, isRec, isUse, declsPreAttrs, SynExpr.LetOrUse(isRec, isUse, decls, body, mWhole, { InKeyword = mIn }) -let mkDefnBindings (mWhole, BindingSetPreAttrs (_, isRec, isUse, declsPreAttrs, _bindingSetRange), attrs, vis, attrsm) = +let mkDefnBindings (mWhole, BindingSetPreAttrs(_, isRec, isUse, declsPreAttrs, _bindingSetRange), attrs, vis, attrsm) = if isUse then warning (Error(FSComp.SR.parsUseBindingsIllegalInModules (), mWhole)) let freeAttrs, decls = declsPreAttrs attrs vis // decls might have an extended range due to leading attributes let mWhole = - (mWhole, decls) ||> unionRangeWithListBy (fun (SynBinding (range = m)) -> m) + (mWhole, decls) ||> unionRangeWithListBy (fun (SynBinding(range = m)) -> m) let letDecls = [ SynModuleDecl.Let(isRec, decls, mWhole) ] @@ -1073,9 +1074,8 @@ let mkDefnBindings (mWhole, BindingSetPreAttrs (_, isRec, isUse, declsPreAttrs, let idOfPat (parseState: IParseState) m p = match p with | SynPat.Wild r when parseState.LexBuffer.SupportsFeature LanguageFeature.WildCardInForLoop -> mkSynId r "_" - | SynPat.Named (SynIdent (id, _), false, _, _) -> id - | SynPat.LongIdent (longDotId = SynLongIdent ([ id ], _, _); typarDecls = None; argPats = SynArgPats.Pats []; accessibility = None) -> - id + | SynPat.Named(SynIdent(id, _), false, _, _) -> id + | SynPat.LongIdent(longDotId = SynLongIdent([ id ], _, _); typarDecls = None; argPats = SynArgPats.Pats []; accessibility = None) -> id | _ -> raiseParseErrorAt m (FSComp.SR.parsIntegerForLoopRequiresSimpleIdentifier ()) let checkForMultipleAugmentations m a1 a2 = @@ -1090,10 +1090,10 @@ let rangeOfLongIdent (lid: LongIdent) = let appendValToLeadingKeyword mVal leadingKeyword = match leadingKeyword with - | SynLeadingKeyword.StaticMember (mStatic, mMember) -> SynLeadingKeyword.StaticMemberVal(mStatic, mMember, mVal) + | SynLeadingKeyword.StaticMember(mStatic, mMember) -> SynLeadingKeyword.StaticMemberVal(mStatic, mMember, mVal) | SynLeadingKeyword.Member mMember -> SynLeadingKeyword.MemberVal(mMember, mVal) | SynLeadingKeyword.Override mOverride -> SynLeadingKeyword.OverrideVal(mOverride, mVal) - | SynLeadingKeyword.Default (mDefault) -> SynLeadingKeyword.DefaultVal(mDefault, mVal) + | SynLeadingKeyword.Default(mDefault) -> SynLeadingKeyword.DefaultVal(mDefault, mVal) | _ -> leadingKeyword let mkSynUnionCase attributes (access: SynAccess option) id kind mDecl (xmlDoc, mBar) = @@ -1111,7 +1111,7 @@ let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDo let memberRange = match getSetOpt with | None -> unionRanges rangeStart expr.Range |> unionRangeWithXmlDoc xmlDoc - | Some (getSet: GetSetKeywords) -> + | Some(getSet: GetSetKeywords) -> unionRanges rangeStart expr.Range |> unionRangeWithXmlDoc xmlDoc |> unionRanges getSet.Range @@ -1145,20 +1145,71 @@ let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDo trivia ) -let mkValField mVal mRhs mut access ident (typ: SynType) xmlDoc rangeStart attribs mStaticOpt = - let isStatic = Option.isSome mStaticOpt - let mValDecl = unionRanges rangeStart typ.Range |> unionRangeWithXmlDoc xmlDoc +let mkSynField + parseState + (idOpt: Ident option) + (t: SynType option) + (isMutable: range option) + (vis: SynAccess option) + (attributes: SynAttributes) + (mStatic: range option) + (rangeStart: range) + (leadingKeyword: SynLeadingKeyword option) + = + + let t, mStart = + match t with + | Some value -> value, rangeStart + | None -> + + let mType, mStart = + idOpt + |> Option.map _.idRange + |> Option.orElseWith (fun _ -> vis |> Option.map (fun v -> v.Range)) + |> Option.orElse isMutable + |> Option.orElseWith (fun _ -> leadingKeyword |> Option.map (fun k -> k.Range)) + |> Option.orElseWith (fun _ -> attributes |> List.tryLast |> Option.map (fun l -> l.Range)) + |> Option.map (fun m -> m, rangeStart) + |> Option.defaultWith (fun _ -> rangeStart.StartRange, rangeStart.StartRange) + + SynType.FromParseError(mType.EndRange), mStart + + let mWhole = unionRanges mStart t.Range + let xmlDoc = grabXmlDocAtRangeStart (parseState, attributes, mWhole) + let mWhole = unionRangeWithXmlDoc xmlDoc mWhole + + SynField( + attributes, + Option.isSome mStatic, + idOpt, + t, + Option.isSome isMutable, + xmlDoc, + vis, + mWhole, + { + LeadingKeyword = leadingKeyword + MutableKeyword = isMutable + } + ) +let mkValField + parseState + mVal + (isMutable: range option) + access + (idOpt: Ident option) + (typ: SynType option) + (rangeStart: range) + attribs + mStaticOpt + = let leadingKeyword = match mStaticOpt with | None -> SynLeadingKeyword.Val mVal | Some mStatic -> SynLeadingKeyword.StaticVal(mStatic, mVal) - let fld = - SynField(attribs, isStatic, Some ident, typ, mut, xmlDoc, access, mRhs, { LeadingKeyword = Some leadingKeyword }) + let field = + mkSynField parseState idOpt typ isMutable access attribs mStaticOpt rangeStart (Some leadingKeyword) - SynMemberDefn.ValField(fld, mValDecl) - -let mkSynField parseState idOpt t isMutable vis attributes isStatic mWhole leadingKeyword = - let xmlDoc = grabXmlDocAtRangeStart (parseState, attributes, mWhole) - SynField(attributes, isStatic, idOpt, t, isMutable, xmlDoc, vis, mWhole, { LeadingKeyword = leadingKeyword }) + SynMemberDefn.ValField(field, field.Range) diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fsi b/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fsi index ebde1ae5e8..9add16af68 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fsi +++ b/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fsi @@ -178,7 +178,14 @@ val mkSynMemberDefnGetSet: parseState: IParseState -> opt_inline: range option -> mWith: range -> - classDefnMemberGetSetElements: (range option * SynAttributeList list * (SynPat * range) * (range option * SynReturnInfo) option * range option * SynExpr * range) list -> + classDefnMemberGetSetElements: + (range option * + SynAttributeList list * + (SynPat * range) * + (range option * SynReturnInfo) option * + range option * + SynExpr * + range) list -> mAnd: range option -> mWhole: range -> propertyNameBindingPat: SynPat -> @@ -273,14 +280,13 @@ val mkAutoPropDefn: SynMemberDefn val mkValField: + parseState: IParseState -> mVal: range -> - mRhs: range -> - mut: bool -> + isMutable: range option -> access: SynAccess option -> - ident: Ident -> - typ: SynType -> - xmlDoc: PreXmlDoc -> - range -> + idOpt: Ident option -> + typ: SynType option -> + rangeStart: range -> SynAttributes -> range option -> SynMemberDefn @@ -288,11 +294,11 @@ val mkValField: val mkSynField: parseState: IParseState -> idOpt: Ident option -> - t: SynType -> - isMutable: bool -> + t: SynType option -> + isMutable: range option -> vis: SynAccess option -> attributes: SynAttributeList list -> - isStatic: bool -> - mWhole: range -> + mStatic: range option -> + rangeStart: range -> leadingKeyword: SynLeadingKeyword option -> SynField diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/PrettyNaming.fs b/src/fcs-fable/src/Compiler/SyntaxTree/PrettyNaming.fs index 021af10afb..559e9b2d33 100755 --- a/src/fcs-fable/src/Compiler/SyntaxTree/PrettyNaming.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/PrettyNaming.fs @@ -288,6 +288,7 @@ let IsIdentifierName (name: string) = && IsIdentifierFirstCharacter name[0] && let rec loop i = (i >= nameLen || (IsIdentifierPartCharacter(name[i]) && loop (i + 1))) in + loop 1 let rec isCoreActivePatternName (name: string) idx seenNonOpChar = @@ -484,7 +485,7 @@ let decompileCustomOpName = | None -> // Couldn't decompile, so just return the original 'opName'. opName - | Some (opChar, opCharName) -> + | Some(opChar, opCharName) -> // 'opCharName' matched the current position in 'opName'. // Append the corresponding operator character to the StringBuilder // and continue decompiling at the index following this instance of 'opCharName'. @@ -569,7 +570,8 @@ let ConvertValLogicalNameToDisplayName isBaseVal name = let ConvertLogicalNameToDisplayLayout nonOpLayout name = if DoesIdentifierNeedBackticks name then leftL (TaggedText.tagPunctuation "``") - ^^ wordL (TaggedText.tagOperator name) ^^ rightL (TaggedText.tagPunctuation "``") + ^^ wordL (TaggedText.tagOperator name) + ^^ rightL (TaggedText.tagPunctuation "``") else nonOpLayout name @@ -583,10 +585,12 @@ let ConvertValLogicalNameToDisplayLayout isBaseVal nonOpLayout name = ConvertLogicalNameToDisplayLayout nonOpLayout name elif nm.StartsWithOrdinal "*" || nm.EndsWithOrdinal "*" then wordL (TaggedText.tagPunctuation "(") - ^^ wordL (TaggedText.tagOperator nm) ^^ wordL (TaggedText.tagPunctuation ")") + ^^ wordL (TaggedText.tagOperator nm) + ^^ wordL (TaggedText.tagPunctuation ")") else leftL (TaggedText.tagPunctuation "(") - ^^ wordL (TaggedText.tagOperator nm) ^^ rightL (TaggedText.tagPunctuation ")") + ^^ wordL (TaggedText.tagOperator nm) + ^^ rightL (TaggedText.tagPunctuation ")") elif name = "get_Zero" then ConvertLogicalNameToDisplayLayout nonOpLayout "Zero" else @@ -953,13 +957,13 @@ let IllegalCharactersInTypeAndNamespaceNames = type ActivePatternInfo = | APInfo of bool * (string * range) list * range - member x.IsTotal = let (APInfo (p, _, _)) = x in p + member x.IsTotal = let (APInfo(p, _, _)) = x in p - member x.ActiveTags = let (APInfo (_, tags, _)) = x in List.map fst tags + member x.ActiveTags = let (APInfo(_, tags, _)) = x in List.map fst tags - member x.ActiveTagsWithRanges = let (APInfo (_, tags, _)) = x in tags + member x.ActiveTagsWithRanges = let (APInfo(_, tags, _)) = x in tags - member x.Range = let (APInfo (_, _, m)) = x in m + member x.Range = let (APInfo(_, _, m)) = x in m let ActivePatternInfoOfValName nm (m: range) = // Note: The approximate range calculations in this code assume the name is of the form "(|A|B|)" not "(| A | B |)" @@ -1005,7 +1009,7 @@ let tryDemangleStaticStringArg (mangledText: string) = match splitAroundQuotationWithCount mangledText '=' 2 with | [| nm; v |] -> if v.Length >= 2 then - Some(nm, v[ 1 .. v.Length - 2 ].Replace("\\\\", "\\").Replace("\\\"", "\"")) + Some(nm, v[1 .. v.Length - 2].Replace("\\\\", "\\").Replace("\\\"", "\"")) else Some(nm, v) | _ -> None diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fs index bfe0ef550d..97f40bee62 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fs @@ -25,26 +25,26 @@ type SynLongIdent = member this.Range = match this with - | SynLongIdent ([], _, _) -> failwith "rangeOfLidwd" - | SynLongIdent ([ id ], [], _) -> id.idRange - | SynLongIdent ([ id ], [ m ], _) -> unionRanges id.idRange m - | SynLongIdent (h :: t, [], _) -> unionRanges h.idRange (List.last t).idRange - | SynLongIdent (h :: t, dotRanges, _) -> unionRanges h.idRange (List.last t).idRange |> unionRanges (List.last dotRanges) + | SynLongIdent([], _, _) -> failwith "rangeOfLidwd" + | SynLongIdent([ id ], [], _) -> id.idRange + | SynLongIdent([ id ], [ m ], _) -> unionRanges id.idRange m + | SynLongIdent(h :: t, [], _) -> unionRanges h.idRange (List.last t).idRange + | SynLongIdent(h :: t, dotRanges, _) -> unionRanges h.idRange (List.last t).idRange |> unionRanges (List.last dotRanges) member this.LongIdent = match this with - | SynLongIdent (lid, _, _) -> lid + | SynLongIdent(lid, _, _) -> lid member this.Dots = match this with - | SynLongIdent (dotRanges = dots) -> dots + | SynLongIdent(dotRanges = dots) -> dots member this.Trivia = match this with - | SynLongIdent (trivia = trivia) -> List.choose id trivia + | SynLongIdent(trivia = trivia) -> List.choose id trivia member this.IdentsWithTrivia = - let (SynLongIdent (lid, _, trivia)) = this + let (SynLongIdent(lid, _, trivia)) = this if lid.Length = trivia.Length then List.zip lid trivia |> List.map SynIdent @@ -57,13 +57,13 @@ type SynLongIdent = member this.ThereIsAnExtraDotAtTheEnd = match this with - | SynLongIdent (lid, dots, _) -> lid.Length = dots.Length + | SynLongIdent(lid, dots, _) -> lid.Length = dots.Length member this.RangeWithoutAnyExtraDot = match this with - | SynLongIdent ([], _, _) -> failwith "rangeOfLidwd" - | SynLongIdent ([ id ], _, _) -> id.idRange - | SynLongIdent (h :: t, dotRanges, _) -> + | SynLongIdent([], _, _) -> failwith "rangeOfLidwd" + | SynLongIdent([ id ], _, _) -> id.idRange + | SynLongIdent(h :: t, dotRanges, _) -> let nonExtraDots = if dotRanges.Length = t.Length then dotRanges @@ -78,7 +78,7 @@ module SynLongIdentHelpers = [] let (|LongIdentWithDots|) = function - | SynLongIdent (lid, dots, _) -> lid, dots + | SynLongIdent(lid, dots, _) -> lid, dots [] let LongIdentWithDots (lid, dots) = @@ -102,7 +102,7 @@ type SynTypar = member this.Range = match this with - | SynTypar (id, _, _) -> id.idRange + | SynTypar(id, _, _) -> id.idRange [] type SynStringKind = @@ -164,9 +164,9 @@ type SynConst = member c.Range dflt = match c with - | SynConst.String (_, _, m0) - | SynConst.Bytes (_, _, m0) - | SynConst.SourceIdentifier (_, _, m0) -> m0 + | SynConst.String(_, _, m0) + | SynConst.Bytes(_, _, m0) + | SynConst.SourceIdentifier(_, _, m0) -> m0 | _ -> dflt [] @@ -342,18 +342,18 @@ type SynTypeConstraint = member x.Range = match x with - | WhereTyparIsValueType (range = range) - | WhereTyparIsReferenceType (range = range) - | WhereTyparIsUnmanaged (range = range) - | WhereTyparSupportsNull (range = range) - | WhereTyparIsComparable (range = range) - | WhereTyparIsEquatable (range = range) - | WhereTyparDefaultsToType (range = range) - | WhereTyparSubtypeOfType (range = range) - | WhereTyparSupportsMember (range = range) - | WhereTyparIsEnum (range = range) - | WhereTyparIsDelegate (range = range) -> range - | WhereSelfConstrained (range = range) -> range + | WhereTyparIsValueType(range = range) + | WhereTyparIsReferenceType(range = range) + | WhereTyparIsUnmanaged(range = range) + | WhereTyparSupportsNull(range = range) + | WhereTyparIsComparable(range = range) + | WhereTyparIsEquatable(range = range) + | WhereTyparDefaultsToType(range = range) + | WhereTyparSubtypeOfType(range = range) + | WhereTyparSupportsMember(range = range) + | WhereTyparIsEnum(range = range) + | WhereTyparIsDelegate(range = range) -> range + | WhereSelfConstrained(range = range) -> range [] type SynTyparDecls = @@ -363,23 +363,23 @@ type SynTyparDecls = member x.TyparDecls = match x with - | PostfixList (decls = decls) - | PrefixList (decls = decls) -> decls - | SinglePrefix (decl, _) -> [ decl ] + | PostfixList(decls = decls) + | PrefixList(decls = decls) -> decls + | SinglePrefix(decl, _) -> [ decl ] member x.Constraints = match x with - | PostfixList (decls = decls; constraints = constraints) -> + | PostfixList(decls = decls; constraints = constraints) -> // Synthesize SynTypeConstraints implied with any intersection constraints in SynTyparDecl // The parser makes sure we're only dealing with hash constraints here let intersectionConstraints = decls - |> List.collect (fun (SynTyparDecl (typar = tp; intersectionConstraints = tys)) -> + |> List.collect (fun (SynTyparDecl(typar = tp; intersectionConstraints = tys)) -> tys |> List.map (fun ty -> let ty = match ty with - | SynType.HashConstraint (ty, _) -> ty + | SynType.HashConstraint(ty, _) -> ty | _ -> ty SynTypeConstraint.WhereTyparSubtypeOfType(tp, ty, ty.Range))) @@ -389,9 +389,9 @@ type SynTyparDecls = member x.Range = match x with - | PostfixList (range = range) - | PrefixList (range = range) - | SinglePrefix (range = range) -> range + | PostfixList(range = range) + | PrefixList(range = range) + | SinglePrefix(range = range) -> range [] type SynTupleTypeSegment = @@ -402,8 +402,8 @@ type SynTupleTypeSegment = member this.Range = match this with | SynTupleTypeSegment.Type t -> t.Range - | SynTupleTypeSegment.Star (range = range) - | SynTupleTypeSegment.Slash (range = range) -> range + | SynTupleTypeSegment.Star(range = range) + | SynTupleTypeSegment.Slash(range = range) -> range [] type SynType = @@ -464,25 +464,25 @@ type SynType = member x.Range = match x with - | SynType.App (range = m) - | SynType.LongIdentApp (range = m) - | SynType.Tuple (range = m) - | SynType.Array (range = m) - | SynType.AnonRecd (range = m) - | SynType.Fun (range = m) - | SynType.Var (range = m) - | SynType.Anon (range = m) - | SynType.WithGlobalConstraints (range = m) - | SynType.StaticConstant (range = m) - | SynType.StaticConstantExpr (range = m) - | SynType.StaticConstantNamed (range = m) - | SynType.HashConstraint (range = m) - | SynType.MeasurePower (range = m) - | SynType.Paren (range = m) - | SynType.SignatureParameter (range = m) - | SynType.Or (range = m) - | SynType.Intersection (range = m) - | SynType.FromParseError (range = m) -> m + | SynType.App(range = m) + | SynType.LongIdentApp(range = m) + | SynType.Tuple(range = m) + | SynType.Array(range = m) + | SynType.AnonRecd(range = m) + | SynType.Fun(range = m) + | SynType.Var(range = m) + | SynType.Anon(range = m) + | SynType.WithGlobalConstraints(range = m) + | SynType.StaticConstant(range = m) + | SynType.StaticConstantExpr(range = m) + | SynType.StaticConstantNamed(range = m) + | SynType.HashConstraint(range = m) + | SynType.MeasurePower(range = m) + | SynType.Paren(range = m) + | SynType.SignatureParameter(range = m) + | SynType.Or(range = m) + | SynType.Intersection(range = m) + | SynType.FromParseError(range = m) -> m | SynType.LongIdent lidwd -> lidwd.Range [] @@ -740,93 +740,93 @@ type SynExpr = member e.Range = match e with - | SynExpr.Paren (_, leftParenRange, rightParenRange, r) -> + | SynExpr.Paren(_, leftParenRange, rightParenRange, r) -> match rightParenRange with | Some rightParenRange when leftParenRange.FileIndex <> rightParenRange.FileIndex -> leftParenRange | _ -> r - | SynExpr.Quote (range = m) - | SynExpr.Const (range = m) - | SynExpr.Typed (range = m) - | SynExpr.Tuple (range = m) - | SynExpr.AnonRecd (range = m) - | SynExpr.ArrayOrList (range = m) - | SynExpr.Record (range = m) - | SynExpr.New (range = m) - | SynExpr.ObjExpr (range = m) - | SynExpr.While (range = m) - | SynExpr.For (range = m) - | SynExpr.ForEach (range = m) - | SynExpr.ComputationExpr (range = m) - | SynExpr.ArrayOrListComputed (range = m) - | SynExpr.Lambda (range = m) - | SynExpr.Match (range = m) - | SynExpr.MatchLambda (range = m) - | SynExpr.Do (range = m) - | SynExpr.Assert (range = m) - | SynExpr.App (range = m) - | SynExpr.TypeApp (range = m) - | SynExpr.LetOrUse (range = m) - | SynExpr.TryWith (range = m) - | SynExpr.TryFinally (range = m) - | SynExpr.Sequential (range = m) - | SynExpr.SequentialOrImplicitYield (range = m) - | SynExpr.ArbitraryAfterError (range = m) - | SynExpr.FromParseError (range = m) - | SynExpr.DiscardAfterMissingQualificationAfterDot (range = m) - | SynExpr.IfThenElse (range = m) - | SynExpr.LongIdent (range = m) - | SynExpr.LongIdentSet (range = m) - | SynExpr.NamedIndexedPropertySet (range = m) - | SynExpr.DotIndexedGet (range = m) - | SynExpr.DotIndexedSet (range = m) - | SynExpr.DotGet (range = m) - | SynExpr.DotLambda (range = m) - | SynExpr.DotSet (range = m) - | SynExpr.Set (range = m) - | SynExpr.DotNamedIndexedPropertySet (range = m) - | SynExpr.LibraryOnlyUnionCaseFieldGet (range = m) - | SynExpr.LibraryOnlyUnionCaseFieldSet (range = m) - | SynExpr.LibraryOnlyILAssembly (range = m) - | SynExpr.LibraryOnlyStaticOptimization (range = m) - | SynExpr.IndexRange (range = m) - | SynExpr.IndexFromEnd (range = m) - | SynExpr.TypeTest (range = m) - | SynExpr.Upcast (range = m) - | SynExpr.AddressOf (range = m) - | SynExpr.Downcast (range = m) - | SynExpr.JoinIn (range = m) - | SynExpr.InferredUpcast (range = m) - | SynExpr.InferredDowncast (range = m) - | SynExpr.Null (range = m) - | SynExpr.Lazy (range = m) - | SynExpr.TraitCall (range = m) - | SynExpr.ImplicitZero (range = m) - | SynExpr.YieldOrReturn (range = m) - | SynExpr.YieldOrReturnFrom (range = m) - | SynExpr.LetOrUseBang (range = m) - | SynExpr.MatchBang (range = m) - | SynExpr.DoBang (range = m) - | SynExpr.WhileBang (range = m) - | SynExpr.Fixed (range = m) - | SynExpr.InterpolatedString (range = m) - | SynExpr.Dynamic (range = m) -> m + | SynExpr.Quote(range = m) + | SynExpr.Const(range = m) + | SynExpr.Typed(range = m) + | SynExpr.Tuple(range = m) + | SynExpr.AnonRecd(range = m) + | SynExpr.ArrayOrList(range = m) + | SynExpr.Record(range = m) + | SynExpr.New(range = m) + | SynExpr.ObjExpr(range = m) + | SynExpr.While(range = m) + | SynExpr.For(range = m) + | SynExpr.ForEach(range = m) + | SynExpr.ComputationExpr(range = m) + | SynExpr.ArrayOrListComputed(range = m) + | SynExpr.Lambda(range = m) + | SynExpr.Match(range = m) + | SynExpr.MatchLambda(range = m) + | SynExpr.Do(range = m) + | SynExpr.Assert(range = m) + | SynExpr.App(range = m) + | SynExpr.TypeApp(range = m) + | SynExpr.LetOrUse(range = m) + | SynExpr.TryWith(range = m) + | SynExpr.TryFinally(range = m) + | SynExpr.Sequential(range = m) + | SynExpr.SequentialOrImplicitYield(range = m) + | SynExpr.ArbitraryAfterError(range = m) + | SynExpr.FromParseError(range = m) + | SynExpr.DiscardAfterMissingQualificationAfterDot(range = m) + | SynExpr.IfThenElse(range = m) + | SynExpr.LongIdent(range = m) + | SynExpr.LongIdentSet(range = m) + | SynExpr.NamedIndexedPropertySet(range = m) + | SynExpr.DotIndexedGet(range = m) + | SynExpr.DotIndexedSet(range = m) + | SynExpr.DotGet(range = m) + | SynExpr.DotLambda(range = m) + | SynExpr.DotSet(range = m) + | SynExpr.Set(range = m) + | SynExpr.DotNamedIndexedPropertySet(range = m) + | SynExpr.LibraryOnlyUnionCaseFieldGet(range = m) + | SynExpr.LibraryOnlyUnionCaseFieldSet(range = m) + | SynExpr.LibraryOnlyILAssembly(range = m) + | SynExpr.LibraryOnlyStaticOptimization(range = m) + | SynExpr.IndexRange(range = m) + | SynExpr.IndexFromEnd(range = m) + | SynExpr.TypeTest(range = m) + | SynExpr.Upcast(range = m) + | SynExpr.AddressOf(range = m) + | SynExpr.Downcast(range = m) + | SynExpr.JoinIn(range = m) + | SynExpr.InferredUpcast(range = m) + | SynExpr.InferredDowncast(range = m) + | SynExpr.Null(range = m) + | SynExpr.Lazy(range = m) + | SynExpr.TraitCall(range = m) + | SynExpr.ImplicitZero(range = m) + | SynExpr.YieldOrReturn(range = m) + | SynExpr.YieldOrReturnFrom(range = m) + | SynExpr.LetOrUseBang(range = m) + | SynExpr.MatchBang(range = m) + | SynExpr.DoBang(range = m) + | SynExpr.WhileBang(range = m) + | SynExpr.Fixed(range = m) + | SynExpr.InterpolatedString(range = m) + | SynExpr.Dynamic(range = m) -> m | SynExpr.Ident id -> id.idRange - | SynExpr.Typar (range = m) -> m - | SynExpr.DebugPoint (_, _, innerExpr) -> innerExpr.Range + | SynExpr.Typar(range = m) -> m + | SynExpr.DebugPoint(_, _, innerExpr) -> innerExpr.Range member e.RangeWithoutAnyExtraDot = match e with - | SynExpr.DiscardAfterMissingQualificationAfterDot (expr, _, _) -> expr.Range + | SynExpr.DiscardAfterMissingQualificationAfterDot(expr, _, _) -> expr.Range | _ -> e.Range member e.RangeOfFirstPortion = match e with // these are better than just .Range, and also commonly applicable inside queries - | SynExpr.Paren (_, m, _, _) -> m - | SynExpr.Sequential (_, _, e1, _, _) - | SynExpr.SequentialOrImplicitYield (_, e1, _, _, _) - | SynExpr.App (_, _, e1, _, _) -> e1.RangeOfFirstPortion - | SynExpr.ForEach (pat = pat; range = r) -> + | SynExpr.Paren(_, m, _, _) -> m + | SynExpr.Sequential(_, _, e1, _, _) + | SynExpr.SequentialOrImplicitYield(_, e1, _, _, _) + | SynExpr.App(_, _, e1, _, _) -> e1.RangeOfFirstPortion + | SynExpr.ForEach(pat = pat; range = r) -> let e = (pat.Range: range).Start withEnd e r | _ -> e.Range @@ -876,9 +876,9 @@ type SynSimplePat = member x.Range = match x with - | SynSimplePat.Id (range = range) - | SynSimplePat.Typed (range = range) - | SynSimplePat.Attrib (range = range) -> range + | SynSimplePat.Id(range = range) + | SynSimplePat.Typed(range = range) + | SynSimplePat.Attrib(range = range) -> range [] type SynSimplePatAlternativeIdInfo = @@ -900,7 +900,7 @@ type SynSimplePats = member x.Range = match x with - | SynSimplePats.SimplePats (range = range) -> range + | SynSimplePats.SimplePats(range = range) -> range [] type SynArgPats = @@ -911,7 +911,7 @@ type SynArgPats = member x.Patterns = match x with | Pats pats -> pats - | NamePatPairs (pats = pats) -> pats |> List.map (fun (_, _, pat) -> pat) + | NamePatPairs(pats = pats) -> pats |> List.map (fun (_, _, pat) -> pat) [] type SynPat = @@ -969,26 +969,26 @@ type SynPat = member p.Range = match p with - | SynPat.Const (range = m) - | SynPat.Wild (range = m) - | SynPat.Named (range = m) - | SynPat.Or (range = m) - | SynPat.ListCons (range = m) - | SynPat.Ands (range = m) - | SynPat.As (range = m) - | SynPat.LongIdent (range = m) - | SynPat.ArrayOrList (range = m) - | SynPat.Tuple (range = m) - | SynPat.Typed (range = m) - | SynPat.Attrib (range = m) - | SynPat.Record (range = m) - | SynPat.Null (range = m) - | SynPat.IsInst (range = m) - | SynPat.QuoteExpr (range = m) - | SynPat.InstanceMember (range = m) - | SynPat.OptionalVal (range = m) - | SynPat.Paren (range = m) - | SynPat.FromParseError (range = m) -> m + | SynPat.Const(range = m) + | SynPat.Wild(range = m) + | SynPat.Named(range = m) + | SynPat.Or(range = m) + | SynPat.ListCons(range = m) + | SynPat.Ands(range = m) + | SynPat.As(range = m) + | SynPat.LongIdent(range = m) + | SynPat.ArrayOrList(range = m) + | SynPat.Tuple(range = m) + | SynPat.Typed(range = m) + | SynPat.Attrib(range = m) + | SynPat.Record(range = m) + | SynPat.Null(range = m) + | SynPat.IsInst(range = m) + | SynPat.QuoteExpr(range = m) + | SynPat.InstanceMember(range = m) + | SynPat.OptionalVal(range = m) + | SynPat.Paren(range = m) + | SynPat.FromParseError(range = m) -> m [] type SynInterfaceImpl = @@ -1011,14 +1011,14 @@ type SynMatchClause = member this.RangeOfGuardAndRhs = match this with - | SynMatchClause (whenExpr = eo; resultExpr = e) -> + | SynMatchClause(whenExpr = eo; resultExpr = e) -> match eo with | None -> e.Range | Some x -> unionRanges e.Range x.Range member this.Range = match this with - | SynMatchClause (range = m) -> m + | SynMatchClause(range = m) -> m [] type SynAttribute = @@ -1046,13 +1046,9 @@ type SynAttributes = SynAttributeList list [] type SynValData = - | SynValData of - memberFlags: SynMemberFlags option * - valInfo: SynValInfo * - thisIdOpt: Ident option * - transformedFromProperty: Ident option + | SynValData of memberFlags: SynMemberFlags option * valInfo: SynValInfo * thisIdOpt: Ident option - member x.SynValInfo = (let (SynValData (valInfo = synValInfo)) = x in synValInfo) + member x.SynValInfo = (let (SynValData(valInfo = synValInfo)) = x in synValInfo) [] type SynBinding = @@ -1075,12 +1071,12 @@ type SynBinding = // - for everything else, the 'range' member that appears last/second-to-last is the 'full range' of the whole tree construct // - but for Binding, the 'range' is only the range of the left-hand-side, the right-hand-side range is in the SynExpr // - so we use explicit names to avoid confusion - member x.RangeOfBindingWithoutRhs = let (SynBinding (range = m)) = x in m + member x.RangeOfBindingWithoutRhs = let (SynBinding(range = m)) = x in m member x.RangeOfBindingWithRhs = - let (SynBinding (expr = e; range = m)) = x in unionRanges e.Range m + let (SynBinding(expr = e; range = m)) = x in unionRanges e.Range m - member x.RangeOfHeadPattern = let (SynBinding (headPat = headPat)) = x in headPat.Range + member x.RangeOfHeadPattern = let (SynBinding(headPat = headPat)) = x in headPat.Range [] type SynBindingReturnInfo = @@ -1152,11 +1148,11 @@ type SynMemberSig = member d.Range = match d with - | SynMemberSig.Member (range = m) - | SynMemberSig.Interface (range = m) - | SynMemberSig.Inherit (range = m) - | SynMemberSig.ValField (range = m) - | SynMemberSig.NestedType (range = m) -> m + | SynMemberSig.Member(range = m) + | SynMemberSig.Interface(range = m) + | SynMemberSig.Inherit(range = m) + | SynMemberSig.ValField(range = m) + | SynMemberSig.NestedType(range = m) -> m [] type SynTypeDefnKind = @@ -1203,13 +1199,13 @@ type SynTypeDefnSimpleRepr = member this.Range = match this with - | Union (range = m) - | Enum (range = m) - | Record (range = m) - | General (range = m) - | LibraryOnlyILAssembly (range = m) - | TypeAbbrev (range = m) - | None (range = m) -> m + | Union(range = m) + | Enum(range = m) + | Record(range = m) + | General(range = m) + | LibraryOnlyILAssembly(range = m) + | TypeAbbrev(range = m) + | None(range = m) -> m | Exception t -> t.Range [] @@ -1225,7 +1221,7 @@ type SynEnumCase = member this.Range = match this with - | SynEnumCase (range = m) -> m + | SynEnumCase(range = m) -> m [] type SynUnionCase = @@ -1241,7 +1237,7 @@ type SynUnionCase = member this.Range = match this with - | SynUnionCase (range = m) -> m + | SynUnionCase(range = m) -> m [] type SynUnionCaseKind = @@ -1261,8 +1257,8 @@ type SynTypeDefnSigRepr = member this.Range = match this with - | ObjectModel (range = m) - | Simple (range = m) -> m + | ObjectModel(range = m) + | Simple(range = m) -> m | Exception e -> e.Range [] @@ -1277,7 +1273,7 @@ type SynTypeDefnSig = member this.Range = match this with - | SynTypeDefnSig (range = m) -> m + | SynTypeDefnSig(range = m) -> m [] type SynField = @@ -1292,6 +1288,10 @@ type SynField = range: range * trivia: SynFieldTrivia + member this.Range = + match this with + | SynField(range = range) -> range + [] type SynComponentInfo = | SynComponentInfo of @@ -1306,7 +1306,7 @@ type SynComponentInfo = member this.Range = match this with - | SynComponentInfo (range = m) -> m + | SynComponentInfo(range = m) -> m [] type SynValSig = @@ -1324,18 +1324,18 @@ type SynValSig = range: range * trivia: SynValSigTrivia - member x.RangeOfId = let (SynValSig(ident = SynIdent (id, _))) = x in id.idRange + member x.RangeOfId = let (SynValSig(ident = SynIdent(id, _))) = x in id.idRange - member x.SynInfo = let (SynValSig (arity = v)) = x in v + member x.SynInfo = let (SynValSig(arity = v)) = x in v - member x.SynType = let (SynValSig (synType = ty)) = x in ty + member x.SynType = let (SynValSig(synType = ty)) = x in ty [] type SynValInfo = | SynValInfo of curriedArgInfos: SynArgInfo list list * returnInfo: SynArgInfo - member x.CurriedArgInfos = (let (SynValInfo (args, _)) = x in args) + member x.CurriedArgInfos = (let (SynValInfo(args, _)) = x in args) member x.ArgNames = x.CurriedArgInfos @@ -1349,9 +1349,9 @@ type SynArgInfo = | SynArgInfo of attributes: SynAttributes * optional: bool * ident: Ident option - member x.Ident: Ident option = let (SynArgInfo (_, _, id)) = x in id + member x.Ident: Ident option = let (SynArgInfo(_, _, id)) = x in id - member x.Attributes: SynAttributes = let (SynArgInfo (attrs, _, _)) = x in attrs + member x.Attributes: SynAttributes = let (SynArgInfo(attrs, _, _)) = x in attrs [] type SynValTyparDecls = SynValTyparDecls of typars: SynTyparDecls option * canInfer: bool @@ -1362,7 +1362,7 @@ type SynReturnInfo = member this.Range = match this with - | SynReturnInfo (range = m) -> m + | SynReturnInfo(range = m) -> m [] type SynExceptionDefnRepr = @@ -1377,7 +1377,7 @@ type SynExceptionDefnRepr = member this.Range = match this with - | SynExceptionDefnRepr (range = m) -> m + | SynExceptionDefnRepr(range = m) -> m [] type SynExceptionDefn = @@ -1386,7 +1386,7 @@ type SynExceptionDefn = member this.Range = match this with - | SynExceptionDefn (range = m) -> m + | SynExceptionDefn(range = m) -> m [] type SynTypeDefnRepr = @@ -1399,8 +1399,8 @@ type SynTypeDefnRepr = member this.Range = match this with - | ObjectModel (range = m) - | Simple (range = m) -> m + | ObjectModel(range = m) + | Simple(range = m) -> m | Exception t -> t.Range [] @@ -1415,7 +1415,7 @@ type SynTypeDefn = member this.Range = match this with - | SynTypeDefn (range = m) -> m + | SynTypeDefn(range = m) -> m [] type SynMemberDefn = @@ -1469,18 +1469,18 @@ type SynMemberDefn = member d.Range = match d with - | SynMemberDefn.Member (range = m) - | SynMemberDefn.GetSetMember (range = m) - | SynMemberDefn.Interface (range = m) - | SynMemberDefn.Open (range = m) - | SynMemberDefn.LetBindings (range = m) - | SynMemberDefn.ImplicitCtor (range = m) - | SynMemberDefn.ImplicitInherit (range = m) - | SynMemberDefn.AbstractSlot (range = m) - | SynMemberDefn.Inherit (range = m) - | SynMemberDefn.ValField (range = m) - | SynMemberDefn.AutoProperty (range = m) - | SynMemberDefn.NestedType (range = m) -> m + | SynMemberDefn.Member(range = m) + | SynMemberDefn.GetSetMember(range = m) + | SynMemberDefn.Interface(range = m) + | SynMemberDefn.Open(range = m) + | SynMemberDefn.LetBindings(range = m) + | SynMemberDefn.ImplicitCtor(range = m) + | SynMemberDefn.ImplicitInherit(range = m) + | SynMemberDefn.AbstractSlot(range = m) + | SynMemberDefn.Inherit(range = m) + | SynMemberDefn.ValField(range = m) + | SynMemberDefn.AutoProperty(range = m) + | SynMemberDefn.NestedType(range = m) -> m type SynMemberDefns = SynMemberDefn list @@ -1515,16 +1515,16 @@ type SynModuleDecl = member d.Range = match d with - | SynModuleDecl.ModuleAbbrev (range = m) - | SynModuleDecl.NestedModule (range = m) - | SynModuleDecl.Let (range = m) - | SynModuleDecl.Expr (range = m) - | SynModuleDecl.Types (range = m) - | SynModuleDecl.Exception (range = m) - | SynModuleDecl.Open (range = m) - | SynModuleDecl.HashDirective (range = m) - | SynModuleDecl.NamespaceFragment (SynModuleOrNamespace (range = m)) - | SynModuleDecl.Attributes (range = m) -> m + | SynModuleDecl.ModuleAbbrev(range = m) + | SynModuleDecl.NestedModule(range = m) + | SynModuleDecl.Let(range = m) + | SynModuleDecl.Expr(range = m) + | SynModuleDecl.Types(range = m) + | SynModuleDecl.Exception(range = m) + | SynModuleDecl.Open(range = m) + | SynModuleDecl.HashDirective(range = m) + | SynModuleDecl.NamespaceFragment(SynModuleOrNamespace(range = m)) + | SynModuleDecl.Attributes(range = m) -> m [] type SynOpenDeclTarget = @@ -1535,8 +1535,8 @@ type SynOpenDeclTarget = member this.Range = match this with - | ModuleOrNamespace (range = m) -> m - | Type (range = m) -> m + | ModuleOrNamespace(range = m) -> m + | Type(range = m) -> m [] type SynExceptionSig = @@ -1568,14 +1568,14 @@ type SynModuleSigDecl = member d.Range = match d with - | SynModuleSigDecl.ModuleAbbrev (range = m) - | SynModuleSigDecl.NestedModule (range = m) - | SynModuleSigDecl.Val (range = m) - | SynModuleSigDecl.Types (range = m) - | SynModuleSigDecl.Exception (range = m) - | SynModuleSigDecl.Open (range = m) - | SynModuleSigDecl.NamespaceFragment (SynModuleOrNamespaceSig.SynModuleOrNamespaceSig (range = m)) - | SynModuleSigDecl.HashDirective (range = m) -> m + | SynModuleSigDecl.ModuleAbbrev(range = m) + | SynModuleSigDecl.NestedModule(range = m) + | SynModuleSigDecl.Val(range = m) + | SynModuleSigDecl.Types(range = m) + | SynModuleSigDecl.Exception(range = m) + | SynModuleSigDecl.Open(range = m) + | SynModuleSigDecl.NamespaceFragment(SynModuleOrNamespaceSig.SynModuleOrNamespaceSig(range = m)) + | SynModuleSigDecl.HashDirective(range = m) -> m [] type SynModuleOrNamespaceKind = @@ -1608,7 +1608,7 @@ type SynModuleOrNamespace = member this.Range = match this with - | SynModuleOrNamespace (range = m) -> m + | SynModuleOrNamespace(range = m) -> m [] type SynModuleOrNamespaceSig = @@ -1625,7 +1625,7 @@ type SynModuleOrNamespaceSig = member this.Range = match this with - | SynModuleOrNamespaceSig (range = m) -> m + | SynModuleOrNamespaceSig(range = m) -> m [] type ParsedHashDirectiveArgument = @@ -1634,8 +1634,8 @@ type ParsedHashDirectiveArgument = member this.Range = match this with - | ParsedHashDirectiveArgument.String (range = m) - | ParsedHashDirectiveArgument.SourceIdentifier (range = m) -> m + | ParsedHashDirectiveArgument.String(range = m) + | ParsedHashDirectiveArgument.SourceIdentifier(range = m) -> m [] type ParsedHashDirective = ParsedHashDirective of ident: string * args: ParsedHashDirectiveArgument list * range: range @@ -1710,26 +1710,26 @@ type ParsedImplFileInput = identifiers: Set member x.QualifiedName = - (let (ParsedImplFileInput (qualifiedNameOfFile = qualNameOfFile)) = x in qualNameOfFile) + (let (ParsedImplFileInput(qualifiedNameOfFile = qualNameOfFile)) = x in qualNameOfFile) member x.ScopedPragmas = - (let (ParsedImplFileInput (scopedPragmas = scopedPragmas)) = x in scopedPragmas) + (let (ParsedImplFileInput(scopedPragmas = scopedPragmas)) = x in scopedPragmas) member x.HashDirectives = - (let (ParsedImplFileInput (hashDirectives = hashDirectives)) = x in hashDirectives) + (let (ParsedImplFileInput(hashDirectives = hashDirectives)) = x in hashDirectives) - member x.FileName = (let (ParsedImplFileInput (fileName = fileName)) = x in fileName) + member x.FileName = (let (ParsedImplFileInput(fileName = fileName)) = x in fileName) - member x.Contents = (let (ParsedImplFileInput (contents = contents)) = x in contents) + member x.Contents = (let (ParsedImplFileInput(contents = contents)) = x in contents) - member x.IsScript = (let (ParsedImplFileInput (isScript = isScript)) = x in isScript) + member x.IsScript = (let (ParsedImplFileInput(isScript = isScript)) = x in isScript) member x.IsLastCompiland = - (let (ParsedImplFileInput (flags = (isLastCompiland, _))) = x in isLastCompiland) + (let (ParsedImplFileInput(flags = (isLastCompiland, _))) = x in isLastCompiland) - member x.IsExe = (let (ParsedImplFileInput (flags = (_, isExe))) = x in isExe) + member x.IsExe = (let (ParsedImplFileInput(flags = (_, isExe))) = x in isExe) - member x.Trivia = (let (ParsedImplFileInput (trivia = trivia)) = x in trivia) + member x.Trivia = (let (ParsedImplFileInput(trivia = trivia)) = x in trivia) [] type ParsedSigFileInput = @@ -1743,19 +1743,19 @@ type ParsedSigFileInput = identifiers: Set member x.QualifiedName = - (let (ParsedSigFileInput (qualifiedNameOfFile = qualNameOfFile)) = x in qualNameOfFile) + (let (ParsedSigFileInput(qualifiedNameOfFile = qualNameOfFile)) = x in qualNameOfFile) member x.ScopedPragmas = - (let (ParsedSigFileInput (scopedPragmas = scopedPragmas)) = x in scopedPragmas) + (let (ParsedSigFileInput(scopedPragmas = scopedPragmas)) = x in scopedPragmas) member x.HashDirectives = - (let (ParsedSigFileInput (hashDirectives = hashDirectives)) = x in hashDirectives) + (let (ParsedSigFileInput(hashDirectives = hashDirectives)) = x in hashDirectives) - member x.FileName = (let (ParsedSigFileInput (fileName = fileName)) = x in fileName) + member x.FileName = (let (ParsedSigFileInput(fileName = fileName)) = x in fileName) - member x.Contents = (let (ParsedSigFileInput (contents = contents)) = x in contents) + member x.Contents = (let (ParsedSigFileInput(contents = contents)) = x in contents) - member x.Trivia = (let (ParsedSigFileInput (trivia = trivia)) = x in trivia) + member x.Trivia = (let (ParsedSigFileInput(trivia = trivia)) = x in trivia) [] type ParsedInput = @@ -1780,12 +1780,12 @@ type ParsedInput = member inp.Range = match inp with - | ParsedInput.ImplFile (ParsedImplFileInput(contents = SynModuleOrNamespace (range = m) :: _)) - | ParsedInput.SigFile (ParsedSigFileInput(contents = SynModuleOrNamespaceSig (range = m) :: _)) -> m + | ParsedInput.ImplFile(ParsedImplFileInput(contents = SynModuleOrNamespace(range = m) :: _)) + | ParsedInput.SigFile(ParsedSigFileInput(contents = SynModuleOrNamespaceSig(range = m) :: _)) -> m | _ -> rangeN inp.FileName 0 [] member inp.Identifiers = match inp with - | ParsedInput.ImplFile (ParsedImplFileInput (identifiers = identifiers)) - | ParsedInput.SigFile (ParsedSigFileInput (identifiers = identifiers)) -> identifiers + | ParsedInput.ImplFile(ParsedImplFileInput(identifiers = identifiers)) + | ParsedInput.SigFile(ParsedSigFileInput(identifiers = identifiers)) -> identifiers diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fsi index d2eed167c4..72e4a9d216 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fsi +++ b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fsi @@ -1195,13 +1195,7 @@ type SynAttributes = SynAttributeList list /// Represents extra information about the declaration of a value [] type SynValData = - | SynValData of - memberFlags: SynMemberFlags option * - valInfo: SynValInfo * - thisIdOpt: Ident option * - /// Is only populated during type-checking when an property has both a getter and setter. - /// It is used to track the fact that the getter and setter are part of the same property when they are desugared. - transformedFromProperty: Ident option + | SynValData of memberFlags: SynMemberFlags option * valInfo: SynValInfo * thisIdOpt: Ident option member SynValInfo: SynValInfo @@ -1459,6 +1453,9 @@ type SynField = range: range * trivia: SynFieldTrivia + /// Gets the syntax range of this construct + member Range: range + /// Represents the syntax tree associated with the name of a type definition or module /// in signature or implementation. /// diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fs b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fs index bb53d5fd73..4f25985461 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fs @@ -65,19 +65,19 @@ let mkSynCompGenSimplePatVar id = let rec pushUnaryArg expr arg = match expr with - | SynExpr.App (ExprAtomicFlag.Atomic, infix, SynExpr.Ident ident, x1, m1) -> + | SynExpr.App(ExprAtomicFlag.Atomic, infix, SynExpr.Ident ident, x1, m1) -> SynExpr.App( ExprAtomicFlag.Atomic, infix, - SynExpr.LongIdent(false, SynLongIdent(arg :: ident :: [], [ ident.idRange ], [ None ]), None, ident.idRange), + SynExpr.LongIdent(false, SynLongIdent(arg :: [ ident ], [ ident.idRange ], [ None ]), None, ident.idRange), x1, m1 ) - | SynExpr.App (ExprAtomicFlag.Atomic, - infix, - SynExpr.LongIdent (isOptional, SynLongIdent (id, dotRanges, trivia), altNameRefCell, range), - x1, - m1) -> + | SynExpr.App(ExprAtomicFlag.Atomic, + infix, + SynExpr.LongIdent(isOptional, SynLongIdent(id, dotRanges, trivia), altNameRefCell, range), + x1, + m1) -> SynExpr.App( ExprAtomicFlag.Atomic, infix, @@ -85,35 +85,40 @@ let rec pushUnaryArg expr arg = x1, m1 ) - | SynExpr.App (ExprAtomicFlag.Atomic, infix, (SynExpr.App (_) as innerApp), x1, m1) -> + | SynExpr.App(ExprAtomicFlag.Atomic, infix, (SynExpr.App(_) as innerApp), x1, m1) -> SynExpr.App(ExprAtomicFlag.Atomic, infix, (pushUnaryArg innerApp arg), x1, m1) - | SynExpr.App (ExprAtomicFlag.Atomic, infix, SynExpr.DotGet (synExpr, rangeOfDot, synLongIdent, range), x1, m1) -> + | SynExpr.App(ExprAtomicFlag.Atomic, infix, SynExpr.DotGet(synExpr, rangeOfDot, synLongIdent, range), x1, m1) -> SynExpr.App(ExprAtomicFlag.Atomic, infix, SynExpr.DotGet((pushUnaryArg synExpr arg), rangeOfDot, synLongIdent, range), x1, m1) - | SynExpr.App (ExprAtomicFlag.Atomic, infix, innerExpr, x1, m1) -> + | SynExpr.App(ExprAtomicFlag.Atomic, infix, innerExpr, x1, m1) -> SynExpr.App(ExprAtomicFlag.Atomic, infix, pushUnaryArg innerExpr arg, x1, m1) - | SynExpr.Ident ident -> SynExpr.LongIdent(false, SynLongIdent(arg :: ident :: [], [ ident.idRange ], [ None ]), None, ident.idRange) - | SynExpr.LongIdent (isOptional, SynLongIdent (id, dotRanges, trivia), altNameRefCell, range) -> + | SynExpr.Ident ident -> SynExpr.LongIdent(false, SynLongIdent(arg :: [ ident ], [ ident.idRange ], [ None ]), None, ident.idRange) + | SynExpr.LongIdent(isOptional, SynLongIdent(id, dotRanges, trivia), altNameRefCell, range) -> SynExpr.LongIdent(isOptional, SynLongIdent(arg :: id, dotRanges, trivia), altNameRefCell, range) - | SynExpr.DotGet (synExpr, rangeOfDot, synLongIdent, range) -> SynExpr.DotGet(pushUnaryArg synExpr arg, rangeOfDot, synLongIdent, range) - | SynExpr.DotIndexedGet (objectExpr, indexArgs, dotRange, range) -> + | SynExpr.DotGet(synExpr, rangeOfDot, synLongIdent, range) -> SynExpr.DotGet(pushUnaryArg synExpr arg, rangeOfDot, synLongIdent, range) + | SynExpr.DotIndexedGet(objectExpr, indexArgs, dotRange, range) -> SynExpr.DotIndexedGet(pushUnaryArg objectExpr arg, indexArgs, dotRange, range) - | _ -> expr + | SynExpr.TypeApp(innerExpr, mLess, tyargs, mCommas, mGreater, mTypars, m) -> + let innerExpr = pushUnaryArg innerExpr arg + SynExpr.TypeApp(innerExpr, mLess, tyargs, mCommas, mGreater, mTypars, m) + | _ -> + errorR (Error(FSComp.SR.tcDotLambdaAtNotSupportedExpression (), expr.Range)) + expr let (|SynSingleIdent|_|) x = match x with - | SynLongIdent ([ id ], _, _) -> Some id + | SynLongIdent([ id ], _, _) -> Some id | _ -> None /// Match a long identifier, including the case for single identifiers which gets a more optimized node in the syntax tree. let (|LongOrSingleIdent|_|) inp = match inp with - | SynExpr.LongIdent (isOpt, lidwd, altId, _m) -> Some(isOpt, lidwd, altId, lidwd.RangeWithoutAnyExtraDot) + | SynExpr.LongIdent(isOpt, lidwd, altId, _m) -> Some(isOpt, lidwd, altId, lidwd.RangeWithoutAnyExtraDot) | SynExpr.Ident id -> Some(false, SynLongIdent([ id ], [], [ None ]), None, id.idRange) - | SynExpr.DiscardAfterMissingQualificationAfterDot (synExpr, dotRange, _) -> + | SynExpr.DiscardAfterMissingQualificationAfterDot(synExpr, dotRange, _) -> match synExpr with | SynExpr.Ident ident -> Some(false, SynLongIdent([ ident ], [ dotRange ], [ None ]), None, ident.idRange) - | SynExpr.LongIdent (false, SynLongIdent (idents, dotRanges, trivia), _, range) -> + | SynExpr.LongIdent(false, SynLongIdent(idents, dotRanges, trivia), _, range) -> Some(false, SynLongIdent(idents, dotRanges @ [ dotRange ], trivia), None, range) | _ -> None @@ -121,44 +126,44 @@ let (|LongOrSingleIdent|_|) inp = let (|SingleIdent|_|) inp = match inp with - | SynExpr.LongIdent (false, SynSingleIdent (id), None, _) -> Some id + | SynExpr.LongIdent(false, SynSingleIdent(id), None, _) -> Some id | SynExpr.Ident id -> Some id | _ -> None let (|SynBinOp|_|) input = match input with - | SynExpr.App (ExprAtomicFlag.NonAtomic, - false, - SynExpr.App (ExprAtomicFlag.NonAtomic, true, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ synId ])), x1, _m1), - x2, - _m2) -> Some(synId, x1, x2) + | SynExpr.App(ExprAtomicFlag.NonAtomic, + false, + SynExpr.App(ExprAtomicFlag.NonAtomic, true, SynExpr.LongIdent(longDotId = SynLongIdent(id = [ synId ])), x1, _m1), + x2, + _m2) -> Some(synId, x1, x2) | _ -> None let (|SynPipeRight|_|) input = match input with - | SynBinOp (synId, x1, x2) when synId.idText = "op_PipeRight" -> Some(x1, x2) + | SynBinOp(synId, x1, x2) when synId.idText = "op_PipeRight" -> Some(x1, x2) | _ -> None let (|SynPipeRight2|_|) input = match input with - | SynBinOp (synId, SynExpr.Paren (SynExpr.Tuple (false, [ x1a; x1b ], _, _), _, _, _), x2) when synId.idText = "op_PipeRight2" -> + | SynBinOp(synId, SynExpr.Paren(SynExpr.Tuple(false, [ x1a; x1b ], _, _), _, _, _), x2) when synId.idText = "op_PipeRight2" -> Some(x1a, x1b, x2) | _ -> None let (|SynPipeRight3|_|) input = match input with - | SynBinOp (synId, SynExpr.Paren (SynExpr.Tuple (false, [ x1a; x1b; x1c ], _, _), _, _, _), x2) when synId.idText = "op_PipeRight3" -> + | SynBinOp(synId, SynExpr.Paren(SynExpr.Tuple(false, [ x1a; x1b; x1c ], _, _), _, _, _), x2) when synId.idText = "op_PipeRight3" -> Some(x1a, x1b, x1c, x2) | _ -> None let (|SynAndAlso|_|) input = match input with - | SynBinOp (synId, x1, x2) when synId.idText = "op_BooleanAnd" -> Some(x1, x2) + | SynBinOp(synId, x1, x2) when synId.idText = "op_BooleanAnd" -> Some(x1, x2) | _ -> None let (|SynOrElse|_|) input = match input with - | SynBinOp (synId, x1, x2) when synId.idText = "op_BooleanOr" -> Some(x1, x2) + | SynBinOp(synId, x1, x2) when synId.idText = "op_BooleanOr" -> Some(x1, x2) | _ -> None /// This affects placement of debug points @@ -174,7 +179,7 @@ let rec IsControlFlowExpression e = | SynExpr.LetOrUse _ | SynExpr.Sequential _ // Treat "ident { ... }" as a control flow expression - | SynExpr.App (_, _, SynExpr.Ident _, SynExpr.ComputationExpr _, _) + | SynExpr.App(_, _, SynExpr.Ident _, SynExpr.ComputationExpr _, _) | SynExpr.IfThenElse _ | SynExpr.LetOrUseBang _ | SynExpr.Match _ @@ -183,7 +188,7 @@ let rec IsControlFlowExpression e = | SynExpr.For _ | SynExpr.ForEach _ | SynExpr.While _ -> true - | SynExpr.Typed (e, _, _) -> IsControlFlowExpression e + | SynExpr.Typed(e, _, _) -> IsControlFlowExpression e | _ -> false // The syntactic criteria for when a debug point for a 'let' is extended to include @@ -205,8 +210,9 @@ let IsDebugPointBinding synPat synExpr = not (IsControlFlowExpression synExpr) && let isFunction = match synPat with - | SynPat.LongIdent (argPats = SynArgPats.Pats args; typarDecls = typarDecls) when not args.IsEmpty || typarDecls.IsSome -> true + | SynPat.LongIdent(argPats = SynArgPats.Pats args; typarDecls = typarDecls) when not args.IsEmpty || typarDecls.IsSome -> true | _ -> false in + not isFunction let inline unionRangeWithXmlDoc (xmlDoc: PreXmlDoc) range = @@ -233,56 +239,56 @@ let mkSynPatMaybeVar lidwd vis m = /// Extract the argument for patterns corresponding to the declaration of 'new ... = ...' let (|SynPatForConstructorDecl|_|) x = match x with - | SynPat.LongIdent (longDotId = SynSingleIdent _; argPats = SynArgPats.Pats [ arg ]) -> Some arg + | SynPat.LongIdent(longDotId = SynSingleIdent _; argPats = SynArgPats.Pats [ arg ]) -> Some arg | _ -> None /// Recognize the '()' in 'new()' let (|SynPatForNullaryArgs|_|) x = match x with - | SynPat.Paren (SynPat.Const (SynConst.Unit, _), _) -> Some() + | SynPat.Paren(SynPat.Const(SynConst.Unit, _), _) -> Some() | _ -> None let (|SynExprErrorSkip|) (p: SynExpr) = match p with - | SynExpr.FromParseError (p, _) -> p + | SynExpr.FromParseError(p, _) -> p | _ -> p let (|SynExprParen|_|) (e: SynExpr) = match e with - | SynExpr.Paren (SynExprErrorSkip e, a, b, c) -> Some(e, a, b, c) + | SynExpr.Paren(SynExprErrorSkip e, a, b, c) -> Some(e, a, b, c) | _ -> None let (|SynPatErrorSkip|) (p: SynPat) = match p with - | SynPat.FromParseError (p, _) -> p + | SynPat.FromParseError(p, _) -> p | _ -> p /// Push non-simple parts of a patten match over onto the r.h.s. of a lambda. /// Return a simple pattern and a function to build a match on the r.h.s. if the pattern is complex let rec SimplePatOfPat (synArgNameGenerator: SynArgNameGenerator) p = match p with - | SynPat.Typed (p', ty, m) -> + | SynPat.Typed(p', ty, m) -> let p2, laterF = SimplePatOfPat synArgNameGenerator p' SynSimplePat.Typed(p2, ty, m), laterF - | SynPat.Attrib (p', attribs, m) -> + | SynPat.Attrib(p', attribs, m) -> let p2, laterF = SimplePatOfPat synArgNameGenerator p' SynSimplePat.Attrib(p2, attribs, m), laterF - | SynPat.Named (SynIdent (v, _), thisV, _, m) -> SynSimplePat.Id(v, None, false, thisV, false, m), None + | SynPat.Named(SynIdent(v, _), thisV, _, m) -> SynSimplePat.Id(v, None, false, thisV, false, m), None - | SynPat.OptionalVal (v, m) -> SynSimplePat.Id(v, None, false, false, true, m), None + | SynPat.OptionalVal(v, m) -> SynSimplePat.Id(v, None, false, false, true, m), None - | SynPat.Paren (p, _) -> SimplePatOfPat synArgNameGenerator p + | SynPat.Paren(p, _) -> SimplePatOfPat synArgNameGenerator p - | SynPat.FromParseError (p, _) -> SimplePatOfPat synArgNameGenerator p + | SynPat.FromParseError(p, _) -> SimplePatOfPat synArgNameGenerator p | _ -> let m = p.Range let isCompGen, altNameRefCell, id, item = match p with - | SynPat.LongIdent (longDotId = SynSingleIdent (id); typarDecls = None; argPats = SynArgPats.Pats []; accessibility = None) -> + | SynPat.LongIdent(longDotId = SynSingleIdent(id); typarDecls = None; argPats = SynArgPats.Pats []; accessibility = None) -> // The pattern is 'V' or some other capitalized identifier. // It may be a real variable, in which case we want to maintain its name. // But it may also be a nullary union case or some other identifier. @@ -292,8 +298,8 @@ let rec SimplePatOfPat (synArgNameGenerator: SynArgNameGenerator) p = let item = mkSynIdGetWithAlt m id altNameRefCell false, altNameRefCell, id, item - | SynPat.Named (SynIdent (ident, _), _, _, _) - | SynPat.As (_, SynPat.Named (SynIdent (ident, _), _, _, _), _) -> + | SynPat.Named(SynIdent(ident, _), _, _, _) + | SynPat.As(_, SynPat.Named(SynIdent(ident, _), _, _, _), _) -> // named pats should be referred to as their name in docs, tooltips, etc. let item = mkSynIdGet m ident.idText false, None, ident, item @@ -335,11 +341,11 @@ let composeFunOpt funOpt1 funOpt2 = let rec SimplePatsOfPat synArgNameGenerator p = match p with - | SynPat.FromParseError (p, _) -> SimplePatsOfPat synArgNameGenerator p + | SynPat.FromParseError(p, _) -> SimplePatsOfPat synArgNameGenerator p - | SynPat.Tuple (false, ps, commas, m) + | SynPat.Tuple(false, ps, commas, m) - | SynPat.Paren (SynPat.Tuple (false, ps, commas, _), m) -> + | SynPat.Paren(SynPat.Tuple(false, ps, commas, _), m) -> let sps = List.map (SimplePatOfPat synArgNameGenerator) ps let ps2, laterF = @@ -347,9 +353,9 @@ let rec SimplePatsOfPat synArgNameGenerator p = SynSimplePats.SimplePats(ps2, commas, m), laterF - | SynPat.Paren (SynPat.Const (SynConst.Unit, m), _) + | SynPat.Paren(SynPat.Const(SynConst.Unit, m), _) - | SynPat.Const (SynConst.Unit, m) -> SynSimplePats.SimplePats([], [], m), None + | SynPat.Const(SynConst.Unit, m) -> SynSimplePats.SimplePats([], [], m), None | _ -> let m = p.Range @@ -459,11 +465,11 @@ let mkSynQMarkSet m a b c = mkSynTrifix m qmarkSet a b c let mkSynDotParenGet mLhs mDot a b = match b with - | SynExpr.Tuple (false, [ _; _ ], _, _) -> + | SynExpr.Tuple(false, [ _; _ ], _, _) -> errorR (Deprecated(FSComp.SR.astDeprecatedIndexerNotation (), mLhs)) SynExpr.Const(SynConst.Unit, mLhs) - | SynExpr.Tuple (false, [ _; _; _ ], _, _) -> + | SynExpr.Tuple(false, [ _; _; _ ], _, _) -> errorR (Deprecated(FSComp.SR.astDeprecatedIndexerNotation (), mLhs)) SynExpr.Const(SynConst.Unit, mLhs) @@ -482,23 +488,23 @@ let mkSynAssign (l: SynExpr) (r: SynExpr) = match l with //| SynExpr.Paren (l2, m2) -> mkSynAssign m l2 r - | LongOrSingleIdent (false, v, None, _) -> SynExpr.LongIdentSet(v, r, m) - | SynExpr.DotGet (e, _, v, _) -> SynExpr.DotSet(e, v, r, m) - | SynExpr.DotIndexedGet (e1, e2, mDot, mLeft) -> SynExpr.DotIndexedSet(e1, e2, r, mLeft, mDot, m) - | SynExpr.LibraryOnlyUnionCaseFieldGet (x, y, z, _) -> SynExpr.LibraryOnlyUnionCaseFieldSet(x, y, z, r, m) - | SynExpr.App (_, _, SynExpr.App (_, _, SingleIdent nm, a, _), b, _) when nm.idText = opNameQMark -> mkSynQMarkSet m a b r - | SynExpr.App (_, _, SynExpr.App (_, _, SingleIdent nm, a, _), b, _) when nm.idText = opNameParenGet -> mkSynDotParenSet m a b r - | SynExpr.App (_, _, SynExpr.LongIdent (false, v, None, _), x, _) -> SynExpr.NamedIndexedPropertySet(v, x, r, m) - | SynExpr.App (_, _, SynExpr.DotGet (e, _, v, _), x, _) -> SynExpr.DotNamedIndexedPropertySet(e, v, x, r, m) + | LongOrSingleIdent(false, v, None, _) -> SynExpr.LongIdentSet(v, r, m) + | SynExpr.DotGet(e, _, v, _) -> SynExpr.DotSet(e, v, r, m) + | SynExpr.DotIndexedGet(e1, e2, mDot, mLeft) -> SynExpr.DotIndexedSet(e1, e2, r, mLeft, mDot, m) + | SynExpr.LibraryOnlyUnionCaseFieldGet(x, y, z, _) -> SynExpr.LibraryOnlyUnionCaseFieldSet(x, y, z, r, m) + | SynExpr.App(_, _, SynExpr.App(_, _, SingleIdent nm, a, _), b, _) when nm.idText = opNameQMark -> mkSynQMarkSet m a b r + | SynExpr.App(_, _, SynExpr.App(_, _, SingleIdent nm, a, _), b, _) when nm.idText = opNameParenGet -> mkSynDotParenSet m a b r + | SynExpr.App(_, _, SynExpr.LongIdent(false, v, None, _), x, _) -> SynExpr.NamedIndexedPropertySet(v, x, r, m) + | SynExpr.App(_, _, SynExpr.DotGet(e, _, v, _), x, _) -> SynExpr.DotNamedIndexedPropertySet(e, v, x, r, m) | l -> SynExpr.Set(l, r, m) -let mkSynDot mDot m l (SynIdent (r, rTrivia)) = +let mkSynDot mDot m l (SynIdent(r, rTrivia)) = match l with - | SynExpr.LongIdent (isOpt, SynLongIdent (lid, dots, trivia), None, _) -> + | SynExpr.LongIdent(isOpt, SynLongIdent(lid, dots, trivia), None, _) -> // REVIEW: MEMORY PERFORMANCE: This list operation is memory intensive (we create a lot of these list nodes) SynExpr.LongIdent(isOpt, SynLongIdent(lid @ [ r ], dots @ [ mDot ], trivia @ [ rTrivia ]), None, m) | SynExpr.Ident id -> SynExpr.LongIdent(false, SynLongIdent([ id; r ], [ mDot ], [ None; rTrivia ]), None, m) - | SynExpr.DotGet (e, dm, SynLongIdent (lid, dots, trivia), _) -> + | SynExpr.DotGet(e, dm, SynLongIdent(lid, dots, trivia), _) -> // REVIEW: MEMORY PERFORMANCE: This is memory intensive (we create a lot of these list nodes) SynExpr.DotGet(e, dm, SynLongIdent(lid @ [ r ], dots @ [ mDot ], trivia @ [ rTrivia ]), m) | expr -> SynExpr.DotGet(expr, mDot, SynLongIdent([ r ], [], [ rTrivia ]), m) @@ -521,7 +527,7 @@ let mkAttributeList attrs range : SynAttributeList list = [ { Attributes = attrs; Range = range } ] let ConcatAttributesLists (attrsLists: SynAttributeList list) = - attrsLists |> List.map (fun x -> x.Attributes) |> List.concat + attrsLists |> List.collect (fun x -> x.Attributes) let (|Attributes|) synAttributes = ConcatAttributesLists synAttributes @@ -533,7 +539,7 @@ let (|TyparsAndConstraints|) (typarDecls: SynTyparDecls option) = |> Option.map (fun x -> x.TyparDecls, x.Constraints) |> Option.defaultValue ([], []) -let (|ValTyparDecls|) (SynValTyparDecls (typarDecls, canInfer)) = +let (|ValTyparDecls|) (SynValTyparDecls(typarDecls, canInfer)) = typarDecls |> Option.map (fun x -> x.TyparDecls, x.Constraints, canInfer) |> Option.defaultValue ([], [], canInfer) @@ -543,7 +549,7 @@ let rangeOfNonNilAttrs (attrs: SynAttributes) = let rec stripParenTypes synType = match synType with - | SynType.Paren (innerType, _) -> stripParenTypes innerType + | SynType.Paren(innerType, _) -> stripParenTypes innerType | _ -> synType let (|StripParenTypes|) synType = stripParenTypes synType @@ -567,29 +573,29 @@ module SynInfo = let selfMetadata = unnamedTopArg /// Determine if a syntactic information represents a member without arguments (which is implicitly a property getter) - let HasNoArgs (SynValInfo (args, _)) = isNil args + let HasNoArgs (SynValInfo(args, _)) = isNil args /// Check if one particular argument is an optional argument. Used when adjusting the /// types of optional arguments for function and member signatures. - let IsOptionalArg (SynArgInfo (_, isOpt, _)) = isOpt + let IsOptionalArg (SynArgInfo(_, isOpt, _)) = isOpt /// Check if there are any optional arguments in the syntactic argument information. Used when adjusting the /// types of optional arguments for function and member signatures. - let HasOptionalArgs (SynValInfo (args, _)) = + let HasOptionalArgs (SynValInfo(args, _)) = List.exists (List.exists IsOptionalArg) args /// Add a parameter entry to the syntactic value information to represent the '()' argument to a property getter. This is /// used for the implicit '()' argument in property getter signature specifications. - let IncorporateEmptyTupledArgForPropertyGetter (SynValInfo (args, retInfo)) = SynValInfo([] :: args, retInfo) + let IncorporateEmptyTupledArgForPropertyGetter (SynValInfo(args, retInfo)) = SynValInfo([] :: args, retInfo) /// Add a parameter entry to the syntactic value information to represent the 'this' argument. This is /// used for the implicit 'this' argument in member signature specifications. - let IncorporateSelfArg (SynValInfo (args, retInfo)) = + let IncorporateSelfArg (SynValInfo(args, retInfo)) = SynValInfo(selfMetadata :: args, retInfo) /// Add a parameter entry to the syntactic value information to represent the value argument for a property setter. This is /// used for the implicit value argument in property setter signature specifications. - let IncorporateSetterArg (SynValInfo (args, retInfo)) = + let IncorporateSetterArg (SynValInfo(args, retInfo)) = let args = match args with | [] -> [ unnamedTopArg ] @@ -599,22 +605,22 @@ module SynInfo = SynValInfo(args, retInfo) /// Get the argument counts for each curried argument group. Used in some adhoc places in tc.fs. - let AritiesOfArgs (SynValInfo (args, _)) = List.map List.length args + let AritiesOfArgs (SynValInfo(args, _)) = List.map List.length args /// Get the argument attributes from the syntactic information for an argument. - let AttribsOfArgData (SynArgInfo (Attributes attribs, _, _)) = attribs + let AttribsOfArgData (SynArgInfo(Attributes attribs, _, _)) = attribs /// Infer the syntactic argument info for a single argument from a simple pattern. let rec InferSynArgInfoFromSimplePat attribs p = match p with - | SynSimplePat.Id (nm, _, isCompGen, _, isOpt, _) -> SynArgInfo(attribs, isOpt, (if isCompGen then None else Some nm)) - | SynSimplePat.Typed (a, _, _) -> InferSynArgInfoFromSimplePat attribs a - | SynSimplePat.Attrib (a, attribs2, _) -> InferSynArgInfoFromSimplePat (attribs @ attribs2) a + | SynSimplePat.Id(nm, _, isCompGen, _, isOpt, _) -> SynArgInfo(attribs, isOpt, (if isCompGen then None else Some nm)) + | SynSimplePat.Typed(a, _, _) -> InferSynArgInfoFromSimplePat attribs a + | SynSimplePat.Attrib(a, attribs2, _) -> InferSynArgInfoFromSimplePat (attribs @ attribs2) a /// Infer the syntactic argument info for one or more arguments one or more simple patterns. let rec InferSynArgInfoFromSimplePats x = match x with - | SynSimplePats.SimplePats (pats = ps) -> List.map (InferSynArgInfoFromSimplePat []) ps + | SynSimplePats.SimplePats(pats = ps) -> List.map (InferSynArgInfoFromSimplePat []) ps /// Infer the syntactic argument info for one or more arguments a pattern. let InferSynArgInfoFromPat p = @@ -649,7 +655,7 @@ module SynInfo = else let rec loop e = match e with - | SynExpr.Lambda (fromMethod = false; args = spats; body = rest) -> InferSynArgInfoFromSimplePats spats :: loop rest + | SynExpr.Lambda(fromMethod = false; args = spats; body = rest) -> InferSynArgInfoFromSimplePats spats :: loop rest | _ -> [] loop origRhsExpr @@ -657,11 +663,11 @@ module SynInfo = let InferSynReturnData (retInfo: SynReturnInfo option) = match retInfo with | None -> unnamedRetVal - | Some (SynReturnInfo ((_, retInfo), _)) -> retInfo + | Some(SynReturnInfo((_, retInfo), _)) -> retInfo let private emptySynValInfo = SynValInfo([], unnamedRetVal) - let emptySynValData = SynValData(None, emptySynValInfo, None, None) + let emptySynValData = SynValData(None, emptySynValInfo, None) let emptySynArgInfo = SynArgInfo([], false, None) @@ -672,12 +678,12 @@ module SynInfo = let infosForExplicitArgs = match pat with - | Some (SynPat.LongIdent(argPats = SynArgPats.Pats curriedArgs)) -> List.map InferSynArgInfoFromPat curriedArgs + | Some(SynPat.LongIdent(argPats = SynArgPats.Pats curriedArgs)) -> List.map InferSynArgInfoFromPat curriedArgs | _ -> [] let explicitArgsAreSimple = match pat with - | Some (SynPat.LongIdent(argPats = SynArgPats.Pats curriedArgs)) -> List.forall isSimplePattern curriedArgs + | Some(SynPat.LongIdent(argPats = SynArgPats.Pats curriedArgs)) -> List.forall isSimplePattern curriedArgs | _ -> true let retInfo = InferSynReturnData retInfo @@ -691,7 +697,7 @@ module SynInfo = @ (if explicitArgsAreSimple then infosForLambdaArgs else []) let infosForArgs = AdjustArgsForUnitElimination infosForArgs - SynValData(None, SynValInfo(infosForArgs, retInfo), None, None) + SynValData(None, SynValInfo(infosForArgs, retInfo), None) | Some memFlags -> let infosForObjArgs = if memFlags.IsInstance then [ selfMetadata ] else [] @@ -700,7 +706,7 @@ module SynInfo = let infosForArgs = AdjustArgsForUnitElimination infosForArgs let argInfos = infosForObjArgs @ infosForArgs - SynValData(Some memFlags, SynValInfo(argInfos, retInfo), None, None) + SynValData(Some memFlags, SynValInfo(argInfos, retInfo), None) let mkSynBindingRhs staticOptimizations rhsExpr mRhs retInfo = let rhsExpr = @@ -708,7 +714,7 @@ let mkSynBindingRhs staticOptimizations rhsExpr mRhs retInfo = let rhsExpr, retTyOpt = match retInfo with - | Some (mColon, SynReturnInfo ((ty, SynArgInfo (rAttribs, _, _)), tym)) -> + | Some(mColon, SynReturnInfo((ty, SynArgInfo(rAttribs, _, _)), tym)) -> SynExpr.Typed(rhsExpr, ty, rhsExpr.Range), Some(SynBindingReturnInfo(ty, tym, rAttribs, { ColonRange = mColon })) | None -> rhsExpr, None @@ -725,13 +731,6 @@ let mkSynBinding let mBind = unionRangeWithXmlDoc xmlDoc mBind SynBinding(vis, SynBindingKind.Normal, isInline, isMutable, attrs, xmlDoc, info, headPat, retTyOpt, rhsExpr, mBind, spBind, trivia) -let updatePropertyIdentInSynBinding - propertyIdent - (SynBinding (vis, kind, ii, im, attr, xmlDoc, SynValData (memberFlags, valInfo, thisIdOpt, _), p, ri, e, m, dp, t)) - = - let valData = SynValData(memberFlags, valInfo, thisIdOpt, Some propertyIdent) - SynBinding(vis, kind, ii, im, attr, xmlDoc, valData, p, ri, e, m, dp, t) - let NonVirtualMemberFlags k : SynMemberFlags = { MemberKind = k @@ -812,13 +811,13 @@ let unionBindingAndMembers (bindings: SynBinding list) (members: SynMemberDefn l yield! List.choose (function - | SynMemberDefn.Member (b, _) -> Some b + | SynMemberDefn.Member(b, _) -> Some b | _ -> None) members ] let rec synExprContainsError inpExpr = - let rec walkBind (SynBinding (expr = synExpr)) = walkExpr synExpr + let rec walkBind (SynBinding(expr = synExpr)) = walkExpr synExpr and walkExprs es = es |> List.exists walkExpr @@ -826,7 +825,7 @@ let rec synExprContainsError inpExpr = and walkMatchClauses cl = cl - |> List.exists (fun (SynMatchClause (whenExpr = whenExpr; resultExpr = e)) -> walkExprOpt whenExpr || walkExpr e) + |> List.exists (fun (SynMatchClause(whenExpr = whenExpr; resultExpr = e)) -> walkExprOpt whenExpr || walkExpr e) and walkExprOpt eOpt = eOpt |> Option.exists walkExpr @@ -848,91 +847,91 @@ let rec synExprContainsError inpExpr = | SynExpr.Const _ | SynExpr.Dynamic _ -> false - | SynExpr.TypeTest (e, _, _) - | SynExpr.Upcast (e, _, _) - | SynExpr.AddressOf (_, e, _, _) - | SynExpr.ComputationExpr (_, e, _) - | SynExpr.ArrayOrListComputed (_, e, _) - | SynExpr.Typed (e, _, _) - | SynExpr.Do (e, _) - | SynExpr.Assert (e, _) - | SynExpr.DotGet (e, _, _, _) - | SynExpr.LongIdentSet (_, e, _) - | SynExpr.New (_, _, e, _) - | SynExpr.TypeApp (e, _, _, _, _, _, _) - | SynExpr.LibraryOnlyUnionCaseFieldGet (e, _, _, _) - | SynExpr.Downcast (e, _, _) - | SynExpr.InferredUpcast (e, _) - | SynExpr.InferredDowncast (e, _) - | SynExpr.Lazy (e, _) - | SynExpr.TraitCall (_, _, e, _) - | SynExpr.YieldOrReturn (_, e, _) - | SynExpr.YieldOrReturnFrom (_, e, _) - | SynExpr.DoBang (e, _) - | SynExpr.Fixed (e, _) - | SynExpr.DebugPoint (_, _, e) - | SynExpr.Paren (e, _, _, _) -> walkExpr e - - | SynExpr.NamedIndexedPropertySet (_, e1, e2, _) - | SynExpr.DotSet (e1, _, e2, _) - | SynExpr.Set (e1, e2, _) - | SynExpr.LibraryOnlyUnionCaseFieldSet (e1, _, _, e2, _) - | SynExpr.JoinIn (e1, _, e2, _) - | SynExpr.App (_, _, e1, e2, _) -> walkExpr e1 || walkExpr e2 - - | SynExpr.ArrayOrList (_, es, _) - | SynExpr.Tuple (_, es, _, _) -> walkExprs es - - | SynExpr.AnonRecd (copyInfo = origExpr; recordFields = flds) -> + | SynExpr.TypeTest(e, _, _) + | SynExpr.Upcast(e, _, _) + | SynExpr.AddressOf(_, e, _, _) + | SynExpr.ComputationExpr(_, e, _) + | SynExpr.ArrayOrListComputed(_, e, _) + | SynExpr.Typed(e, _, _) + | SynExpr.Do(e, _) + | SynExpr.Assert(e, _) + | SynExpr.DotGet(e, _, _, _) + | SynExpr.LongIdentSet(_, e, _) + | SynExpr.New(_, _, e, _) + | SynExpr.TypeApp(e, _, _, _, _, _, _) + | SynExpr.LibraryOnlyUnionCaseFieldGet(e, _, _, _) + | SynExpr.Downcast(e, _, _) + | SynExpr.InferredUpcast(e, _) + | SynExpr.InferredDowncast(e, _) + | SynExpr.Lazy(e, _) + | SynExpr.TraitCall(_, _, e, _) + | SynExpr.YieldOrReturn(_, e, _) + | SynExpr.YieldOrReturnFrom(_, e, _) + | SynExpr.DoBang(e, _) + | SynExpr.Fixed(e, _) + | SynExpr.DebugPoint(_, _, e) + | SynExpr.Paren(e, _, _, _) -> walkExpr e + + | SynExpr.NamedIndexedPropertySet(_, e1, e2, _) + | SynExpr.DotSet(e1, _, e2, _) + | SynExpr.Set(e1, e2, _) + | SynExpr.LibraryOnlyUnionCaseFieldSet(e1, _, _, e2, _) + | SynExpr.JoinIn(e1, _, e2, _) + | SynExpr.App(_, _, e1, e2, _) -> walkExpr e1 || walkExpr e2 + + | SynExpr.ArrayOrList(_, es, _) + | SynExpr.Tuple(_, es, _, _) -> walkExprs es + + | SynExpr.AnonRecd(copyInfo = origExpr; recordFields = flds) -> (match origExpr with - | Some (e, _) -> walkExpr e + | Some(e, _) -> walkExpr e | None -> false) || walkExprs (List.map (fun (_, _, e) -> e) flds) - | SynExpr.Record (_, origExpr, fs, _) -> + | SynExpr.Record(_, origExpr, fs, _) -> (match origExpr with - | Some (e, _) -> walkExpr e + | Some(e, _) -> walkExpr e | None -> false) - || (let flds = fs |> List.choose (fun (SynExprRecordField (expr = v)) -> v) + || (let flds = fs |> List.choose (fun (SynExprRecordField(expr = v)) -> v) walkExprs flds) - | SynExpr.ObjExpr (bindings = bs; members = ms; extraImpls = is) -> + | SynExpr.ObjExpr(bindings = bs; members = ms; extraImpls = is) -> let bs = unionBindingAndMembers bs ms let binds = [ - for SynInterfaceImpl (bindings = bs) in is do + for SynInterfaceImpl(bindings = bs) in is do yield! bs ] walkBinds bs || walkBinds binds - | SynExpr.ForEach (_, _, _, _, _, e1, e2, _) - | SynExpr.While (_, e1, e2, _) - | SynExpr.WhileBang (_, e1, e2, _) -> walkExpr e1 || walkExpr e2 + | SynExpr.ForEach(_, _, _, _, _, e1, e2, _) + | SynExpr.While(_, e1, e2, _) + | SynExpr.WhileBang(_, e1, e2, _) -> walkExpr e1 || walkExpr e2 - | SynExpr.For (identBody = e1; toBody = e2; doBody = e3) -> walkExpr e1 || walkExpr e2 || walkExpr e3 + | SynExpr.For(identBody = e1; toBody = e2; doBody = e3) -> walkExpr e1 || walkExpr e2 || walkExpr e3 - | SynExpr.MatchLambda (_, _, cl, _, _) -> walkMatchClauses cl + | SynExpr.MatchLambda(_, _, cl, _, _) -> walkMatchClauses cl - | SynExpr.Lambda (body = e) -> walkExpr e + | SynExpr.Lambda(body = e) -> walkExpr e - | SynExpr.Match (expr = e; clauses = cl) - | SynExpr.MatchBang (expr = e; clauses = cl) -> walkExpr e || walkMatchClauses cl + | SynExpr.Match(expr = e; clauses = cl) + | SynExpr.MatchBang(expr = e; clauses = cl) -> walkExpr e || walkMatchClauses cl - | SynExpr.LetOrUse (bindings = bs; body = e) -> walkBinds bs || walkExpr e + | SynExpr.LetOrUse(bindings = bs; body = e) -> walkBinds bs || walkExpr e - | SynExpr.TryWith (tryExpr = e; withCases = cl) -> walkExpr e || walkMatchClauses cl + | SynExpr.TryWith(tryExpr = e; withCases = cl) -> walkExpr e || walkMatchClauses cl - | SynExpr.TryFinally (tryExpr = e1; finallyExpr = e2) -> walkExpr e1 || walkExpr e2 + | SynExpr.TryFinally(tryExpr = e1; finallyExpr = e2) -> walkExpr e1 || walkExpr e2 - | SynExpr.Sequential (_, _, e1, e2, _) -> walkExpr e1 || walkExpr e2 + | SynExpr.Sequential(_, _, e1, e2, _) -> walkExpr e1 || walkExpr e2 - | SynExpr.SequentialOrImplicitYield (_, e1, e2, _, _) -> walkExpr e1 || walkExpr e2 + | SynExpr.SequentialOrImplicitYield(_, e1, e2, _, _) -> walkExpr e1 || walkExpr e2 - | SynExpr.IfThenElse (ifExpr = e1; thenExpr = e2; elseExpr = e3opt) -> walkExpr e1 || walkExpr e2 || walkExprOpt e3opt + | SynExpr.IfThenElse(ifExpr = e1; thenExpr = e2; elseExpr = e3opt) -> walkExpr e1 || walkExpr e2 || walkExprOpt e3opt - | SynExpr.IndexRange (expr1, _, expr2, _, _, _) -> + | SynExpr.IndexRange(expr1, _, expr2, _, _, _) -> (match expr1 with | Some e -> walkExpr e | None -> false) @@ -940,28 +939,28 @@ let rec synExprContainsError inpExpr = | Some e -> walkExpr e | None -> false) - | SynExpr.IndexFromEnd (e, _) -> walkExpr e + | SynExpr.IndexFromEnd(e, _) -> walkExpr e - | SynExpr.DotIndexedGet (e1, indexArgs, _, _) -> walkExpr e1 || walkExpr indexArgs + | SynExpr.DotIndexedGet(e1, indexArgs, _, _) -> walkExpr e1 || walkExpr indexArgs - | SynExpr.DotIndexedSet (e1, indexArgs, e2, _, _, _) -> walkExpr e1 || walkExpr indexArgs || walkExpr e2 + | SynExpr.DotIndexedSet(e1, indexArgs, e2, _, _, _) -> walkExpr e1 || walkExpr indexArgs || walkExpr e2 - | SynExpr.DotNamedIndexedPropertySet (e1, _, e2, e3, _) -> walkExpr e1 || walkExpr e2 || walkExpr e3 + | SynExpr.DotNamedIndexedPropertySet(e1, _, e2, e3, _) -> walkExpr e1 || walkExpr e2 || walkExpr e3 - | SynExpr.LetOrUseBang (rhs = e1; body = e2; andBangs = es) -> + | SynExpr.LetOrUseBang(rhs = e1; body = e2; andBangs = es) -> walkExpr e1 || walkExprs [ - for SynExprAndBang (body = e) in es do + for SynExprAndBang(body = e) in es do yield e ] || walkExpr e2 - | SynExpr.InterpolatedString (parts, _, _m) -> + | SynExpr.InterpolatedString(parts, _, _m) -> parts |> List.choose (function | SynInterpolatedStringPart.String _ -> None - | SynInterpolatedStringPart.FillExpr (x, _) -> Some x) + | SynInterpolatedStringPart.FillExpr(x, _) -> Some x) |> walkExprs walkExpr inpExpr @@ -969,25 +968,25 @@ let rec synExprContainsError inpExpr = let (|ParsedHashDirectiveArguments|) (input: ParsedHashDirectiveArgument list) = List.map (function - | ParsedHashDirectiveArgument.String (s, _, _) -> s - | ParsedHashDirectiveArgument.SourceIdentifier (_, v, _) -> v) + | ParsedHashDirectiveArgument.String(s, _, _) -> s + | ParsedHashDirectiveArgument.SourceIdentifier(_, v, _) -> v) input -let prependIdentInLongIdentWithTrivia (SynIdent (ident, identTrivia)) mDot lid = +let prependIdentInLongIdentWithTrivia (SynIdent(ident, identTrivia)) mDot lid = match lid with - | SynLongIdent (lid, dots, trivia) -> SynLongIdent(ident :: lid, mDot :: dots, identTrivia :: trivia) + | SynLongIdent(lid, dots, trivia) -> SynLongIdent(ident :: lid, mDot :: dots, identTrivia :: trivia) let mkDynamicArgExpr expr = match expr with | SynExpr.Ident ident -> let con = SynConst.String(ident.idText, SynStringKind.Regular, ident.idRange) SynExpr.Const(con, con.Range ident.idRange) - | SynExpr.Paren (expr = e) -> e + | SynExpr.Paren(expr = e) -> e | e -> e let rec normalizeTuplePat pats commas : SynPat list * range List = match pats with - | SynPat.Tuple (false, innerPats, innerCommas, _) :: rest -> + | SynPat.Tuple(false, innerPats, innerCommas, _) :: rest -> let innerPats, innerCommas = normalizeTuplePat (List.rev innerPats) (List.rev innerCommas) @@ -999,28 +998,20 @@ let rec desugarGetSetMembers (memberDefns: SynMemberDefns) = memberDefns |> List.collect (fun md -> match md with - | SynMemberDefn.GetSetMember (Some (SynBinding(headPat = SynPat.LongIdent (longDotId = lid)) as getBinding), - Some (SynBinding _ as setBinding), - m, - { - GetKeyword = Some mGet - SetKeyword = Some mSet - }) -> - let lastIdent = List.last lid.LongIdent - + | SynMemberDefn.GetSetMember(Some(SynBinding _ as getBinding), + Some(SynBinding _ as setBinding), + m, + { + GetKeyword = Some mGet + SetKeyword = Some mSet + }) -> if Position.posLt mGet.Start mSet.Start then - [ - SynMemberDefn.Member(updatePropertyIdentInSynBinding lastIdent getBinding, m) - SynMemberDefn.Member(updatePropertyIdentInSynBinding lastIdent setBinding, m) - ] + [ SynMemberDefn.Member(getBinding, m); SynMemberDefn.Member(setBinding, m) ] else - [ - SynMemberDefn.Member(updatePropertyIdentInSynBinding lastIdent setBinding, m) - SynMemberDefn.Member(updatePropertyIdentInSynBinding lastIdent getBinding, m) - ] - | SynMemberDefn.GetSetMember (Some binding, None, m, _) - | SynMemberDefn.GetSetMember (None, Some binding, m, _) -> [ SynMemberDefn.Member(binding, m) ] - | SynMemberDefn.Interface (interfaceType, withKeyword, members, m) -> + [ SynMemberDefn.Member(setBinding, m); SynMemberDefn.Member(getBinding, m) ] + | SynMemberDefn.GetSetMember(Some binding, None, m, _) + | SynMemberDefn.GetSetMember(None, Some binding, m, _) -> [ SynMemberDefn.Member(binding, m) ] + | SynMemberDefn.Interface(interfaceType, withKeyword, members, m) -> let members = Option.map desugarGetSetMembers members [ SynMemberDefn.Interface(interfaceType, withKeyword, members, m) ] | md -> [ md ]) @@ -1033,7 +1024,7 @@ let getTypeFromTuplePath (path: SynTupleTypeSegment list) : SynType list = let (|MultiDimensionArrayType|_|) (t: SynType) = match t with - | SynType.App (StripParenTypes (SynType.LongIdent (SynLongIdent ([ identifier ], _, _))), _, [ elementType ], _, _, true, m) -> + | SynType.App(StripParenTypes(SynType.LongIdent(SynLongIdent([ identifier ], _, _))), _, [ elementType ], _, _, true, m) -> if System.Text.RegularExpressions.Regex.IsMatch(identifier.idText, "^array\d\d?d$") then let rank = identifier.idText @@ -1050,8 +1041,8 @@ let (|MultiDimensionArrayType|_|) (t: SynType) = let (|TypesForTypar|) (t: SynType) = let rec visit continuation t = match t with - | SynType.Paren (innerT, _) -> visit continuation innerT - | SynType.Or (lhsT, rhsT, _, _) -> visit (fun lhsTs -> [ yield! lhsTs; yield rhsT ] |> continuation) lhsT + | SynType.Paren(innerT, _) -> visit continuation innerT + | SynType.Or(lhsT, rhsT, _, _) -> visit (fun lhsTs -> [ yield! lhsTs; yield rhsT ] |> continuation) lhsT | _ -> continuation [ t ] visit id t diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fsi b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fsi index 337e9d135c..03fc0be628 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fsi +++ b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fsi @@ -292,8 +292,6 @@ val mkSynBinding: trivia: SynBindingTrivia -> SynBinding -val updatePropertyIdentInSynBinding: propertyIdent: Ident -> SynBinding -> SynBinding - val NonVirtualMemberFlags: k: SynMemberKind -> SynMemberFlags val CtorMemberFlags: SynMemberFlags diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fs b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fs index 999f93d29a..7330ac9b69 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fs @@ -151,7 +151,7 @@ type SynTypeDefnLeadingKeyword = match this with | SynTypeDefnLeadingKeyword.Type range | SynTypeDefnLeadingKeyword.And range -> range - | SynTypeDefnLeadingKeyword.StaticType (staticRange, typeRange) -> Range.unionRanges staticRange typeRange + | SynTypeDefnLeadingKeyword.StaticType(staticRange, typeRange) -> Range.unionRanges staticRange typeRange | SynTypeDefnLeadingKeyword.Synthetic -> failwith "Getting range from synthetic keyword" [] @@ -228,20 +228,20 @@ type SynLeadingKeyword = | New m | Do m | Static m -> m - | LetRec (m1, m2) - | UseRec (m1, m2) - | AbstractMember (m1, m2) - | StaticMember (m1, m2) - | StaticAbstract (m1, m2) - | StaticAbstractMember (m1, _, m2) - | StaticVal (m1, m2) - | StaticLet (m1, m2) - | StaticLetRec (m1, _, m2) - | StaticDo (m1, m2) - | DefaultVal (m1, m2) - | MemberVal (m1, m2) - | OverrideVal (m1, m2) - | StaticMemberVal (m1, _, m2) -> Range.unionRanges m1 m2 + | LetRec(m1, m2) + | UseRec(m1, m2) + | AbstractMember(m1, m2) + | StaticMember(m1, m2) + | StaticAbstract(m1, m2) + | StaticAbstractMember(m1, _, m2) + | StaticVal(m1, m2) + | StaticLet(m1, m2) + | StaticLetRec(m1, _, m2) + | StaticDo(m1, m2) + | DefaultVal(m1, m2) + | MemberVal(m1, m2) + | OverrideVal(m1, m2) + | StaticMemberVal(m1, _, m2) -> Range.unionRanges m1 m2 | Synthetic -> Range.Zero [] @@ -356,7 +356,7 @@ type GetSetKeywords = match x with | Get m | Set m -> m - | GetSet (mG, mS) -> + | GetSet(mG, mS) -> if Range.rangeBeforePos mG mS.Start then Range.unionRanges mG mS else @@ -383,9 +383,14 @@ type SynMemberDefnAbstractSlotTrivia = type SynFieldTrivia = { LeadingKeyword: SynLeadingKeyword option + MutableKeyword: range option } - static member Zero: SynFieldTrivia = { LeadingKeyword = None } + static member Zero: SynFieldTrivia = + { + LeadingKeyword = None + MutableKeyword = None + } [] type SynTypeOrTrivia = { OrKeyword: range } diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fsi b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fsi index d30816e697..137f543280 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fsi +++ b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fsi @@ -486,6 +486,8 @@ type SynFieldTrivia = { /// Used leading keyword of SynField LeadingKeyword: SynLeadingKeyword option + /// The syntax range of the `mutable` keyword + MutableKeyword: range option } static member Zero: SynFieldTrivia diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/UnicodeLexing.fs b/src/fcs-fable/src/Compiler/SyntaxTree/UnicodeLexing.fs index 06593e32f0..8af188efa8 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/UnicodeLexing.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/UnicodeLexing.fs @@ -10,16 +10,28 @@ type Lexbuf = LexBuffer let StringAsLexbuf (reportLibraryOnlyFeatures, langVersion, strictIndentation, s: string) = #if FABLE_COMPILER - LexBuffer.FromString (reportLibraryOnlyFeatures, langVersion, strictIndentation, s) + LexBuffer + .FromString(reportLibraryOnlyFeatures, langVersion, strictIndentation, s) #else - LexBuffer.FromChars (reportLibraryOnlyFeatures, langVersion, strictIndentation, s.ToCharArray()) + LexBuffer + .FromChars(reportLibraryOnlyFeatures, langVersion, strictIndentation, s.ToCharArray()) #endif let FunctionAsLexbuf (reportLibraryOnlyFeatures, langVersion, strictIndentation, bufferFiller) = - LexBuffer.FromFunction (reportLibraryOnlyFeatures, langVersion, strictIndentation, bufferFiller) +#if FABLE_COMPILER + LexBuffer +#else + LexBuffer +#endif + .FromFunction(reportLibraryOnlyFeatures, langVersion, strictIndentation, bufferFiller) let SourceTextAsLexbuf (reportLibraryOnlyFeatures, langVersion, strictIndentation, sourceText) = - LexBuffer.FromSourceText (reportLibraryOnlyFeatures, langVersion, strictIndentation, sourceText) +#if FABLE_COMPILER + LexBuffer +#else + LexBuffer +#endif + .FromSourceText(reportLibraryOnlyFeatures, langVersion, strictIndentation, sourceText) #if !FABLE_COMPILER diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/XmlDoc.fs b/src/fcs-fable/src/Compiler/SyntaxTree/XmlDoc.fs index cd0e9d40db..ca2c21a6de 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/XmlDoc.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/XmlDoc.fs @@ -31,7 +31,8 @@ type XmlDoc(unprocessedLines: string[], range: range) = lines else [ "" ] - @ (lines |> List.map Internal.Utilities.XmlAdapters.escape) @ [ "" ] + @ (lines |> List.map Internal.Utilities.XmlAdapters.escape) + @ [ "" ] /// Get the lines before insertion of implicit summary tags and encoding member _.UnprocessedLines = unprocessedLines @@ -79,6 +80,7 @@ type XmlDoc(unprocessedLines: string[], range: range) = match paramNamesOpt with | None -> () | Some paramNames -> + for p in xml.Descendants(XName.op_Implicit "param") do match p.Attribute(XName.op_Implicit "name") with | null -> warning (Error(FSComp.SR.xmlDocMissingParameterName (), doc.Range)) @@ -97,6 +99,7 @@ type XmlDoc(unprocessedLines: string[], range: range) = ] if paramsWithDocs.Length > 0 then + for p in paramNames do if not (paramsWithDocs |> List.contains p) then warning (Error(FSComp.SR.xmlDocMissingParameter (p), doc.Range)) @@ -253,10 +256,10 @@ type PreXmlDoc = member x.ToXmlDoc(check: bool, paramNamesOpt: string list option) = match x with - | PreXmlDirect (lines, m) -> XmlDoc(lines, m) - | PreXmlMerge (a, b) -> XmlDoc.Merge (a.ToXmlDoc(check, paramNamesOpt)) (b.ToXmlDoc(check, paramNamesOpt)) + | PreXmlDirect(lines, m) -> XmlDoc(lines, m) + | PreXmlMerge(a, b) -> XmlDoc.Merge (a.ToXmlDoc(check, paramNamesOpt)) (b.ToXmlDoc(check, paramNamesOpt)) | PreXmlDocEmpty -> XmlDoc.Empty - | PreXmlDoc (pos, collector) -> + | PreXmlDoc(pos, collector) -> let preLines = collector.LinesBefore pos if preLines.Length = 0 then @@ -275,24 +278,24 @@ type PreXmlDoc = member x.Range = match x with - | PreXmlDirect (_, m) -> m - | PreXmlMerge (part1, part2) -> + | PreXmlDirect(_, m) -> m + | PreXmlMerge(part1, part2) -> if part1.IsEmpty then part2.Range elif part2.IsEmpty then part1.Range else unionRanges part1.Range part2.Range | PreXmlDocEmpty -> Range.Zero - | PreXmlDoc (pos, collector) -> collector.LinesRange pos + | PreXmlDoc(pos, collector) -> collector.LinesRange pos member x.IsEmpty = match x with - | PreXmlDirect (lines, _) -> lines |> Array.forall String.IsNullOrWhiteSpace - | PreXmlMerge (a, b) -> a.IsEmpty && b.IsEmpty + | PreXmlDirect(lines, _) -> lines |> Array.forall String.IsNullOrWhiteSpace + | PreXmlMerge(a, b) -> a.IsEmpty && b.IsEmpty | PreXmlDocEmpty -> true - | PreXmlDoc (pos, collector) -> not (collector.HasComments pos) + | PreXmlDoc(pos, collector) -> not (collector.HasComments pos) member x.MarkAsInvalid() = match x with - | PreXmlDoc (pos, collector) -> collector.SetXmlDocValidity(pos, false) + | PreXmlDoc(pos, collector) -> collector.SetXmlDocValidity(pos, false) | _ -> () static member CreateFromGrabPoint(collector: XmlDocCollector, grabPointPos) = diff --git a/src/fcs-fable/src/Compiler/TypedTree/TcGlobals.fs b/src/fcs-fable/src/Compiler/TypedTree/TcGlobals.fs old mode 100755 new mode 100644 index 5e84b5ebfa..3a9a8ae519 --- a/src/fcs-fable/src/Compiler/TypedTree/TcGlobals.fs +++ b/src/fcs-fable/src/Compiler/TypedTree/TcGlobals.fs @@ -461,7 +461,7 @@ type TcGlobals( let makeIntrinsicValRefGeneral isKnown (enclosingEntity, logicalName, memberParentName, compiledNameOpt, typars, (argTys, retTy)) = let ty = mkForallTyIfNeeded typars (mkIteratedFunTy (List.map mkSmallRefTupledTy argTys) retTy) let isMember = Option.isSome memberParentName - let argCount = if isMember then List.sum (List.map List.length argTys) else 0 + let argCount = if isMember then List.sumBy List.length argTys else 0 let linkageType = if isMember then Some ty else None let key = ValLinkageFullKey({ MemberParentMangledName=memberParentName; MemberIsOverride=false; LogicalName=logicalName; TotalArgCount= argCount }, linkageType) let vref = IntrinsicValRef(enclosingEntity, logicalName, isMember, ty, key) @@ -880,11 +880,15 @@ type TcGlobals( let v_check_this_info = makeIntrinsicValRef(fslib_MFIntrinsicFunctions_nleref, "CheckThis" , None , None , [vara], ([[varaTy]], varaTy)) let v_quote_to_linq_lambda_info = makeIntrinsicValRef(fslib_MFLinqRuntimeHelpersQuotationConverter_nleref, "QuotationToLambdaExpression" , None , None , [vara], ([[mkQuotedExprTy varaTy]], mkLinqExpressionTy varaTy)) + let tref_DebuggerNonUserCodeAttribute = findSysILTypeRef tname_DebuggerNonUserCodeAttribute + let v_DebuggerNonUserCodeAttribute_tcr = splitILTypeName tname_DebuggerNonUserCodeAttribute ||> findSysTyconRef + let tref_DebuggableAttribute = findSysILTypeRef tname_DebuggableAttribute - let tref_CompilerGeneratedAttribute = findSysILTypeRef tname_CompilerGeneratedAttribute + let tref_CompilerGeneratedAttribute = findSysILTypeRef tname_CompilerGeneratedAttribute + let v_CompilerGeneratedAttribute_tcr = splitILTypeName tname_CompilerGeneratedAttribute ||> findSysTyconRef let tref_InternalsVisibleToAttribute = findSysILTypeRef tname_InternalsVisibleToAttribute - let debuggerNonUserCodeAttribute = mkILCustomAttribute (findSysILTypeRef tname_DebuggerNonUserCodeAttribute, [], [], []) + let debuggerNonUserCodeAttribute = mkILCustomAttribute (tref_DebuggerNonUserCodeAttribute, [], [], []) let compilerGeneratedAttribute = mkILCustomAttribute (tref_CompilerGeneratedAttribute, [], [], []) let generatedAttributes = if noDebugAttributes then [||] else [| compilerGeneratedAttribute; debuggerNonUserCodeAttribute |] let compilerGlobalState = CompilerGlobalState() @@ -898,6 +902,18 @@ type TcGlobals( | [||] -> mkILCustomAttrsFromArray generatedAttributes | attrs -> mkILCustomAttrsFromArray (Array.append attrs generatedAttributes) + let addValGeneratedAttrs (v: Val) m = + if not noDebugAttributes then + let attrs = [ + Attrib(v_CompilerGeneratedAttribute_tcr, ILAttrib compilerGeneratedAttribute.Method.MethodRef, [], [], false, None, m) + Attrib(v_DebuggerNonUserCodeAttribute_tcr, ILAttrib debuggerNonUserCodeAttribute.Method.MethodRef, [], [], false, None, m) + Attrib(v_DebuggerNonUserCodeAttribute_tcr, ILAttrib debuggerNonUserCodeAttribute.Method.MethodRef, [], [], true, None, m) + ] + + match v.Attribs with + | [] -> v.SetAttribs attrs + | _ -> v.SetAttribs (attrs @ v.Attribs) + let addMethodGeneratedAttrs (mdef:ILMethodDef) = mdef.With(customAttrs = addGeneratedAttrs mdef.CustomAttrs) let addPropertyGeneratedAttrs (pdef:ILPropertyDef) = pdef.With(customAttrs = addGeneratedAttrs pdef.CustomAttrs) @@ -1063,7 +1079,7 @@ type TcGlobals( #if FABLE_COMPILER for key in embeddedILTypeDefs.Keys do #else - for key in embeddedILTypeDefs.Keys.OrderBy(fun k -> k) do + for key in embeddedILTypeDefs.Keys.OrderBy id do #endif match (embeddedILTypeDefs.TryRemove(key)) with | true, ilTypeDef -> yield ilTypeDef @@ -1429,6 +1445,7 @@ type TcGlobals( member val attrib_ParamArrayAttribute = findSysAttrib "System.ParamArrayAttribute" member val attrib_IDispatchConstantAttribute = tryFindSysAttrib "System.Runtime.CompilerServices.IDispatchConstantAttribute" member val attrib_IUnknownConstantAttribute = tryFindSysAttrib "System.Runtime.CompilerServices.IUnknownConstantAttribute" + member val attrib_RequiresLocationAttribute = findSysAttrib "System.Runtime.CompilerServices.RequiresLocationAttribute" // We use 'findSysAttrib' here because lookup on attribute is done by name comparison, and can proceed // even if the type is not found in a system assembly. @@ -1824,6 +1841,8 @@ type TcGlobals( member _.AddGeneratedAttributes attrs = addGeneratedAttrs attrs + member _.AddValGeneratedAttributes v = addValGeneratedAttrs v + member _.AddMethodGeneratedAttributes mdef = addMethodGeneratedAttrs mdef member _.AddPropertyGeneratedAttributes mdef = addPropertyGeneratedAttrs mdef diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypeProviders.fs b/src/fcs-fable/src/Compiler/TypedTree/TypeProviders.fs index dff177e296..9eb7609189 100644 --- a/src/fcs-fable/src/Compiler/TypedTree/TypeProviders.fs +++ b/src/fcs-fable/src/Compiler/TypedTree/TypeProviders.fs @@ -121,7 +121,7 @@ let CreateTypeProvider ( let getReferencedAssemblies () = resolutionEnvironment.GetReferencedAssemblies() |> Array.distinct - if typeProviderImplementationType.GetConstructor([| typeof |]) <> null then + if not(isNull(typeProviderImplementationType.GetConstructor([| typeof |]))) then // Create the TypeProviderConfig to pass to the type provider constructor let e = @@ -146,7 +146,7 @@ let CreateTypeProvider ( #endif protect (fun () -> Activator.CreateInstance(typeProviderImplementationType, [| box e|]) :?> ITypeProvider ) - elif typeProviderImplementationType.GetConstructor [| |] <> null then + elif not(isNull(typeProviderImplementationType.GetConstructor [| |])) then protect (fun () -> Activator.CreateInstance typeProviderImplementationType :?> ITypeProvider ) else @@ -300,7 +300,7 @@ type ProvidedTypeComparer() = type ProvidedTypeContext = | NoEntries // The dictionaries are safe because the ProvidedType with the ProvidedTypeContext are only accessed one thread at a time during type-checking. - | Entries of ConcurrentDictionary * Lazy> + | Entries of ConcurrentDictionary * InterruptibleLazy> static member Empty = NoEntries @@ -334,9 +334,11 @@ type ProvidedTypeContext = match ctxt with | NoEntries -> NoEntries | Entries(d1, d2) -> - Entries(d1, lazy (let dict = ConcurrentDictionary(ProvidedTypeComparer.Instance) - for KeyValue (st, tcref) in d2.Force() do dict.TryAdd(st, f tcref) |> ignore - dict)) + Entries(d1, InterruptibleLazy(fun _ -> + let dict = ConcurrentDictionary(ProvidedTypeComparer.Instance) + for KeyValue (st, tcref) in d2.Force() do dict.TryAdd(st, f tcref) |> ignore + dict + )) [] type ProvidedType (x: Type, ctxt: ProvidedTypeContext) = @@ -1174,7 +1176,7 @@ let TryResolveProvidedType(resolver: Tainted, m, moduleOrNamespac match ResolveProvidedType(resolver, m, moduleOrNamespace, typeName) with | Tainted.Null -> None | Tainted.NonNull ty -> Some ty - with e -> + with RecoverableException e -> errorRecovery e m None diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fs b/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fs index 5bb15c26b4..c244a0ab48 100644 --- a/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fs +++ b/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fs @@ -232,9 +232,13 @@ type ValFlags(flags: int64) = member x.WithIgnoresByrefScope = ValFlags(flags ||| 0b10000000000000000000L) member x.InlineIfLambda = (flags &&& 0b100000000000000000000L) <> 0L - + member x.WithInlineIfLambda = ValFlags(flags ||| 0b100000000000000000000L) + member x.IsImplied = (flags &&& 0b1000000000000000000000L) <> 0L + + member x.WithIsImplied = ValFlags(flags ||| 0b1000000000000000000000L) + /// Get the flags as included in the F# binary metadata member x.PickledBits = // Clear the RecursiveValInfo, only used during inference and irrelevant across assembly boundaries @@ -2898,6 +2902,9 @@ type Val = /// Get the inline declaration on a parameter or other non-function-declaration value, used for optimization member x.InlineIfLambda = x.val_flags.InlineIfLambda + /// Determines if the values is implied by another construct, e.g. a `IsA` property is implied by the union case for A + member x.IsImplied = x.val_flags.IsImplied + /// Indicates whether the inline declaration for the value indicate that the value must be inlined? member x.MustInline = x.InlineInfo.MustInline @@ -2908,8 +2915,8 @@ type Val = /// Indicates that this value's getter or setter are generated by the compiler member x.GetterOrSetterIsCompilerGenerated = - x.MemberInfo |> Option.exists (fun m -> m.MemberFlags.GetterOrSetterIsCompilerGenerated = true) - + x.MemberInfo |> Option.exists (fun m -> m.MemberFlags.GetterOrSetterIsCompilerGenerated) + /// Get the declared attributes for the value member x.Attribs = match x.val_opt_data with @@ -3138,6 +3145,8 @@ type Val = member x.SetInlineIfLambda() = x.val_flags <- x.val_flags.WithInlineIfLambda + member x.SetIsImplied() = x.val_flags <- x.val_flags.WithIsImplied + member x.SetValReprInfo info = match x.val_opt_data with | Some optData -> optData.val_repr_info <- info @@ -4048,6 +4057,9 @@ type ValRef = /// Get the inline declaration on the value member x.InlineInfo = x.Deref.InlineInfo + /// Determines if the values is implied by another construct, e.g. a `IsA` property is implied by the union case for A + member x.IsImplied = x.Deref.IsImplied + /// Get the inline declaration on a parameter or other non-function-declaration value, used for optimization member x.InlineIfLambda = x.Deref.InlineIfLambda @@ -5889,7 +5901,7 @@ type Construct() = entity_typars= LazyWithContext.NotLazy [] entity_tycon_repr = repr entity_tycon_tcaug=TyconAugmentation.Create() - entity_modul_type = MaybeLazy.Lazy (lazy ModuleOrNamespaceType(Namespace true, QueueList.ofList [], QueueList.ofList [])) + entity_modul_type = MaybeLazy.Lazy(InterruptibleLazy(fun _ -> ModuleOrNamespaceType(Namespace true, QueueList.ofList [], QueueList.ofList []))) // Generated types get internal accessibility entity_pubpath = Some pubpath entity_cpath = Some cpath diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fsi b/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fsi index 7f83f68000..3489535158 100644 --- a/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fsi +++ b/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fsi @@ -111,6 +111,8 @@ type ValFlags = member InlineInfo: ValInline + member IsImplied: bool + member IsCompiledAsStaticPropertyWithoutField: bool member IsCompilerGenerated: bool @@ -144,6 +146,8 @@ type ValFlags = member WithInlineIfLambda: ValFlags + member WithIsImplied: ValFlags + member WithIsCompiledAsStaticPropertyWithoutField: ValFlags member WithIsFixed: ValFlags @@ -1933,6 +1937,8 @@ type Val = member SetInlineIfLambda: unit -> unit + member SetIsImplied: unit -> unit + member SetIsCompiledAsStaticPropertyWithoutField: unit -> unit member SetIsCompilerGenerated: v: bool -> unit @@ -2045,6 +2051,9 @@ type Val = /// Get the inline declaration on the value member InlineInfo: ValInline + /// Determines if the values is implied by another construct, e.g. a `IsA` property is implied by the union case for A + member IsImplied: bool + /// Indicates if this is a 'base' value? member IsBaseVal: bool @@ -2780,6 +2789,9 @@ type ValRef = /// Get the inline declaration on a parameter or other non-function-declaration value, used for optimization member InlineIfLambda: bool + /// Determines if the values is implied by another construct, e.g. a `IsA` property is implied by the union case for A + member IsImplied: bool + /// Get the inline declaration on the value member InlineInfo: ValInline @@ -3524,7 +3536,9 @@ type Expr = /// | Quote of quotedExpr: Expr * - quotationInfo: ((ILTypeRef list * TTypes * Exprs * QuotationPickler.ExprData) * (ILTypeRef list * TTypes * Exprs * QuotationPickler.ExprData)) option ref * + quotationInfo: + ((ILTypeRef list * TTypes * Exprs * QuotationPickler.ExprData) * + (ILTypeRef list * TTypes * Exprs * QuotationPickler.ExprData)) option ref * isFromQueryExpression: bool * range: Text.range * quotedType: TType diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fs b/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fs index 3e6b4cc845..2034d5ecb2 100644 --- a/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fs +++ b/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fs @@ -53,6 +53,10 @@ type TyparMap<'T> = member tm.ContainsKey (tp: Typar) = let (TPMap m) = tm m.ContainsKey(tp.Stamp) + + member tm.TryGetValue (tp: Typar) = + let (TPMap m) = tm + m.TryGetValue(tp.Stamp) member tm.TryFind (tp: Typar) = let (TPMap m) = tm @@ -72,6 +76,7 @@ type TyconRefMap<'T>(imap: StampMap<'T>) = member _.Add (tcref: TyconRef) x = TyconRefMap (imap.Add (tcref.Stamp, x)) member _.Remove (tcref: TyconRef) = TyconRefMap (imap.Remove tcref.Stamp) member _.IsEmpty = imap.IsEmpty + member _.TryGetValue (tcref: TyconRef) = imap.TryGetValue tcref.Stamp static member Empty: TyconRefMap<'T> = TyconRefMap Map.empty static member OfList vs = (vs, TyconRefMap<'T>.Empty) ||> List.foldBack (fun (x, y) acc -> acc.Add x y) @@ -1076,8 +1081,8 @@ and structnessAEquiv un1 un2 = and measureAEquiv g aenv un1 un2 = let vars1 = ListMeasureVarOccs un1 - let trans tp1 = if aenv.EquivTypars.ContainsKey tp1 then destAnyParTy g aenv.EquivTypars[tp1] else tp1 - let remapTyconRef tcref = if aenv.EquivTycons.ContainsKey tcref then aenv.EquivTycons[tcref] else tcref + let trans tp1 = match aenv.EquivTypars.TryGetValue tp1 with true, etv -> destAnyParTy g etv | false, _ -> tp1 + let remapTyconRef tcref = match aenv.EquivTycons.TryGetValue tcref with true, tval -> tval | false, _ -> tcref let vars1R = List.map trans vars1 let vars2 = ListSet.subtract typarEq (ListMeasureVarOccs un2) vars1R let cons1 = ListMeasureConOccsAfterRemapping g remapTyconRef un1 @@ -2932,7 +2937,7 @@ module PrettyTypes = let tys, cxs = (PrettifyThings g List.fold List.map (x |> List.map snd)) List.zip (List.map fst x) tys, cxs - let PrettifyCurriedTypes g x = PrettifyThings g (fun f -> List.fold (List.fold f)) List.mapSquared x + let PrettifyCurriedTypes g x = PrettifyThings g (List.fold >> List.fold) List.mapSquared x let PrettifyCurriedSigTypes g x = PrettifyThings g (fun f -> foldPair (List.fold (List.fold f), f)) (fun f -> mapPair (List.mapSquared f, f)) x // Badly formed code may instantiate rigid declared typars to types. @@ -2987,7 +2992,7 @@ module PrettyTypes = let PrettifyInst g x = PrettifyThings g - (fun f -> foldTyparInst f) + (foldTyparInst) (fun f -> mapTyparInst g f) x @@ -3077,7 +3082,7 @@ type GenericParameterStyle = [] type DisplayEnv = { includeStaticParametersInTypeNames: bool - openTopPathsSorted: Lazy + openTopPathsSorted: InterruptibleLazy openTopPathsRaw: string list list shortTypeNames: bool suppressNestedTypes: bool @@ -3107,7 +3112,7 @@ type DisplayEnv = member x.SetOpenPaths paths = { x with - openTopPathsSorted = (lazy (paths |> List.sortWith (fun p1 p2 -> -(compare p1 p2)))) + openTopPathsSorted = (InterruptibleLazy(fun _ -> paths |> List.sortWith (fun p1 p2 -> -(compare p1 p2)))) openTopPathsRaw = paths } @@ -3522,6 +3527,14 @@ let TyconRefHasAttribute g m attribSpec tcref = (fun _ -> Some ()) |> Option.isSome +let HasDefaultAugmentationAttribute g (tcref: TyconRef) = + match TryFindFSharpAttribute g g.attrib_DefaultAugmentationAttribute tcref.Attribs with + | Some(Attrib(_, _, [ AttribBoolArg b ], _, _, _, _)) -> b + | Some (Attrib(_, _, _, _, _, _, m)) -> + errorR(Error(FSComp.SR.ilDefaultAugmentationAttributeCouldNotBeDecoded(), m)) + true + | _ -> true + /// Check if a type definition has an attribute with a specific full name let TyconRefHasAttributeByName (m: range) attrFullName (tcref: TyconRef) = ignore m @@ -4934,8 +4947,7 @@ let IsHidden setF accessF remapF = Zset.contains x (setF mhi) || // Recurse... check rest (remapF rpi x)) - fun mrmi x -> - check mrmi x + check let IsHiddenTycon mrmi x = IsHidden (fun mhi -> mhi.HiddenTycons) (fun tc -> tc.Accessibility) (fun rpi x -> (remapTyconRef rpi.tyconRefRemap (mkLocalTyconRef x)).Deref) mrmi x @@ -5177,7 +5189,7 @@ and accFreeInInterfaceImpl opts (ty, overrides) acc = and accFreeInExpr (opts: FreeVarOptions) x acc = match x with - | Expr.Let _ -> accFreeInExprLinear opts x acc (fun e -> e) + | Expr.Let _ -> accFreeInExprLinear opts x acc id | _ -> accFreeInExprNonLinear opts x acc and accFreeInExprLinear (opts: FreeVarOptions) x acc contf = @@ -5771,7 +5783,7 @@ and remapExprImpl (ctxt: RemapContext) (compgen: ValCopyFlag) (tmenv: Remap) exp | Expr.Sequential _ | Expr.Let _ | Expr.DebugPoint _ -> - remapLinearExpr ctxt compgen tmenv expr (fun x -> x) + remapLinearExpr ctxt compgen tmenv expr id // Binding constructs - see also dtrees below | Expr.Lambda (_, ctorThisValOpt, baseValOpt, vs, b, m, bodyTy) -> @@ -7069,7 +7081,7 @@ let rec mkExprAddrOfExprAux g mustTakeAddress useReadonlyForGenericArrayAddress let mkExprAddrOfExpr g mustTakeAddress useReadonlyForGenericArrayAddress mut e addrExprVal m = let optBind, addre, readonly, writeonly = mkExprAddrOfExprAux g mustTakeAddress useReadonlyForGenericArrayAddress mut e addrExprVal m match optBind with - | None -> (fun x -> x), addre, readonly, writeonly + | None -> id, addre, readonly, writeonly | Some (tmp, rval) -> (fun x -> mkCompGenLet m tmp rval x), addre, readonly, writeonly let mkTupleFieldGet g (tupInfo, e, tinst, i, m) = @@ -7978,7 +7990,7 @@ let tref_SourceConstructFlags (g: TcGlobals) = mkILTyRef (g.fslibCcu.ILScopeRef, let mkCompilationMappingAttrPrim (g: TcGlobals) k nums = mkILCustomAttribute (tref_CompilationMappingAttr g, ((mkILNonGenericValueTy (tref_SourceConstructFlags g)) :: (nums |> List.map (fun _ -> g.ilg.typ_Int32))), - ((k :: nums) |> List.map (fun n -> ILAttribElem.Int32 n)), + ((k :: nums) |> List.map (ILAttribElem.Int32)), []) let mkCompilationMappingAttr g kind = mkCompilationMappingAttrPrim g kind [] @@ -7989,7 +8001,7 @@ let mkCompilationMappingAttrWithVariantNumAndSeqNum g kind varNum seqNum = mkCom let mkCompilationArgumentCountsAttr (g: TcGlobals) nums = mkILCustomAttribute (tref_CompilationArgumentCountsAttr g, [ mkILArr1DTy g.ilg.typ_Int32 ], - [ILAttribElem.Array (g.ilg.typ_Int32, List.map (fun n -> ILAttribElem.Int32 n) nums)], + [ILAttribElem.Array (g.ilg.typ_Int32, List.map (ILAttribElem.Int32) nums)], []) let mkCompilationSourceNameAttr (g: TcGlobals) n = @@ -8446,7 +8458,7 @@ let AdjustPossibleSubsumptionExpr g (expr: Expr) (suppliedArgs: Expr list) : (Ex binderBuilder, expr else if typeEquiv g (mkRefTupledTy g actualTys) argExprTy then - (fun tm -> tm), argExpr + id, argExpr else let detupledArgs, argTys = @@ -8464,7 +8476,7 @@ let AdjustPossibleSubsumptionExpr g (expr: Expr) (suppliedArgs: Expr list) : (Ex // let f (x, y) = 1 // and we're not building lambdas, just coerce the arguments in place if detupledArgs.Length = actualTys.Length then - (fun tm -> tm), CoerceDetupled argTys detupledArgs actualTys + id, CoerceDetupled argTys detupledArgs actualTys else // In this case there is a tuple mismatch. // f p @@ -8544,13 +8556,13 @@ let AdjustPossibleSubsumptionExpr g (expr: Expr) (suppliedArgs: Expr list) : (Ex match suppliedArg with | Some arg -> let binderBuilder, inpsAsActualArg = CoerceTupled niceNames arg actualArgTys - let lambdaBuilder = (fun tm -> tm) + let lambdaBuilder = id lambdaBuilder, binderBuilder, inpsAsActualArg | None -> let inpsAsVars, inpsAsExprs = (niceNames, inpArgTys) ||> List.map2 (fun nm ty -> mkCompGenLocal appm nm ty) |> List.unzip let inpsAsActualArg = CoerceDetupled inpArgTys inpsAsExprs actualArgTys let lambdaBuilder = (fun tm -> mkMultiLambda appm inpsAsVars (tm, tyOfExpr g tm)) - let binderBuilder = (fun tm -> tm) + let binderBuilder = id lambdaBuilder, binderBuilder, inpsAsActualArg) |> List.unzip3 @@ -8950,7 +8962,7 @@ let rec TypeHasDefaultValue g m ty = // Note this includes fields implied by the use of the implicit class construction syntax tcref.AllInstanceFieldsAsList // We can ignore fields with the DefaultValue(false) attribute - |> List.filter (fun fld -> not (TryFindFSharpBoolAttribute g g.attrib_DefaultValueAttribute fld.FieldAttribs = Some false)) + |> List.filter (fun fld -> TryFindFSharpBoolAttribute g g.attrib_DefaultValueAttribute fld.FieldAttribs <> Some false) flds |> List.forall (actualTyOfRecdField (mkTyconRefInst tcref tinst) >> TypeHasDefaultValue g m) @@ -9036,6 +9048,18 @@ let mkIsInstConditional g m tgtTy vinputExpr v e2 e3 = let expr = mbuilder.Close(dtree, m, tyOfExpr g e2) expr +(* match inp with DU(_) -> true | _ -> false *) +let mkUnionCaseTest (g: TcGlobals) (e1, cref: UnionCaseRef, tinst, m) = + let mbuilder = new MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) + let tg2 = mbuilder.AddResultTarget(Expr.Const(Const.Bool true, m, g.bool_ty)) + let tg3 = mbuilder.AddResultTarget(Expr.Const(Const.Bool false, m, g.bool_ty)) + let dtree = TDSwitch(e1, [TCase(DecisionTreeTest.UnionCase(cref, tinst), tg2)], Some tg3, m) + let expr = mbuilder.Close(dtree, m, g.bool_ty) + expr + +// Null tests are generated by +// 1. The compilation of array patterns in the pattern match compiler +// 2. The compilation of string patterns in the pattern match compiler // Called for when creating compiled form of 'let fixed ...'. // // No sequence point is generated for this expression form as this function is only @@ -9261,7 +9285,7 @@ and RewriteExpr env expr = | Expr.Let _ | Expr.Sequential _ | Expr.DebugPoint _ -> - rewriteLinearExpr env expr (fun e -> e) + rewriteLinearExpr env expr id | _ -> let expr = match preRewriteExpr env expr with @@ -10253,7 +10277,7 @@ let CombineCcuContentFragments l = let xml = XmlDoc.Merge entity1.XmlDoc entity2.XmlDoc { data1 with entity_attribs = entity1.Attribs @ entity2.Attribs - entity_modul_type = MaybeLazy.Lazy (lazy (CombineModuleOrNamespaceTypes path2 entity1.ModuleOrNamespaceType entity2.ModuleOrNamespaceType)) + entity_modul_type = MaybeLazy.Lazy (InterruptibleLazy(fun _ -> CombineModuleOrNamespaceTypes path2 entity1.ModuleOrNamespaceType entity2.ModuleOrNamespaceType)) entity_opt_data = match data1.entity_opt_data with | Some optData -> Some { optData with entity_xmldoc = xml } @@ -10269,23 +10293,6 @@ let CombineCcuContentFragments l = /// An immutable mappping from witnesses to some data. /// /// Note: this uses an immutable HashMap/Dictionary with an IEqualityComparer that captures TcGlobals, see EmptyTraitWitnessInfoHashMap -#if FABLE_COMPILER -type TraitWitnessInfoHashMap<'T> = Internal.Utilities.Collections.Tagged.Map - -/// Create an empty immutable mapping from witnesses to some data -let EmptyTraitWitnessInfoHashMap g : TraitWitnessInfoHashMap<'T> = - let comparer = - { new IComparer with - member _.Compare(x, y) = - let xhash = hash x - let yhash = hash y - let equals x y = traitKeysAEquiv g TypeEquivEnv.Empty x y - if xhash = yhash - then if equals x y then 0 else -1 - else if xhash < yhash then -1 else 1 - } - Internal.Utilities.Collections.Tagged.Map<_,_>.FromList(comparer, []) -#else //!FABLE_COMPILER type TraitWitnessInfoHashMap<'T> = ImmutableDictionary /// Create an empty immutable mapping from witnesses to some data @@ -10295,7 +10302,6 @@ let EmptyTraitWitnessInfoHashMap g : TraitWitnessInfoHashMap<'T> = member _.Equals(a, b) = traitKeysAEquiv g TypeEquivEnv.Empty a b member _.GetHashCode(a) = hash a.MemberName }) -#endif //!FABLE_COMPILER let (|WhileExpr|_|) expr = match expr with @@ -10589,23 +10595,42 @@ let (|EmptyModuleOrNamespaces|_|) (moduleOrNamespaceContents: ModuleOrNamespaceC None | _ -> None -let tryAddExtensionAttributeIfNotAlreadyPresent +let tryFindExtensionAttribute (g: TcGlobals) (attribs: Attrib list): Attrib option = + attribs + |> List.tryFind (IsMatchingFSharpAttribute g g.attrib_ExtensionAttribute) + +let tryAddExtensionAttributeIfNotAlreadyPresentForModule + (g: TcGlobals) + (tryFindExtensionAttributeIn: (Attrib list -> Attrib option) -> Attrib option) + (moduleEntity: Entity) + : Entity + = + if Option.isSome (tryFindExtensionAttribute g moduleEntity.Attribs) then + moduleEntity + else + match tryFindExtensionAttributeIn (tryFindExtensionAttribute g) with + | None -> moduleEntity + | Some extensionAttrib -> + { moduleEntity with entity_attribs = extensionAttrib :: moduleEntity.Attribs } + +let tryAddExtensionAttributeIfNotAlreadyPresentForType + (g: TcGlobals) (tryFindExtensionAttributeIn: (Attrib list -> Attrib option) -> Attrib option) - (entity: Entity) + (moduleOrNamespaceTypeAccumulator: ModuleOrNamespaceType ref) + (typeEntity: Entity) : Entity = - let tryFindExtensionAttribute (attribs: Attrib list): Attrib option = - List.tryFind - (fun (a: Attrib) -> - a.TyconRef.CompiledRepresentationForNamedType.BasicQualifiedName = "System.Runtime.CompilerServices.ExtensionAttribute") - attribs - - if Option.isSome (tryFindExtensionAttribute entity.Attribs) then - entity + if Option.isSome (tryFindExtensionAttribute g typeEntity.Attribs) then + typeEntity else - match tryFindExtensionAttributeIn tryFindExtensionAttribute with - | None -> entity - | Some extensionAttrib -> { entity with entity_attribs = extensionAttrib :: entity.Attribs } + match tryFindExtensionAttributeIn (tryFindExtensionAttribute g) with + | None -> typeEntity + | Some extensionAttrib -> + moduleOrNamespaceTypeAccumulator.Value.AllEntitiesByLogicalMangledName.TryFind(typeEntity.LogicalName) + |> Option.iter (fun e -> + e.entity_attribs <- extensionAttrib :: e.Attribs + ) + typeEntity type TypedTreeNode = { diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fsi b/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fsi index 517733af92..f2fa42412e 100755 --- a/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fsi +++ b/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fsi @@ -312,6 +312,9 @@ val mkRecdFieldSetViaExprAddr: Expr * RecdFieldRef * TypeInst * Expr * range -> /// Make an expression that gets the tag of a union value (via the address of the value if it is a struct) val mkUnionCaseTagGetViaExprAddr: Expr * TyconRef * TypeInst * range -> Expr +/// Make an expression which tests that a union value is of a particular union case. +val mkUnionCaseTest: TcGlobals -> Expr * UnionCaseRef * TypeInst * range -> Expr + /// Make a 'TOp.UnionCaseProof' expression, which proves a union value is over a particular case (used only for ref-unions, not struct-unions) val mkUnionCaseProof: Expr * UnionCaseRef * TypeInst * range -> Expr @@ -1048,7 +1051,7 @@ type GenericParameterStyle = type DisplayEnv = { includeStaticParametersInTypeNames: bool - openTopPathsSorted: Lazy + openTopPathsSorted: InterruptibleLazy openTopPathsRaw: string list list shortTypeNames: bool suppressNestedTypes: bool @@ -2582,11 +2585,7 @@ val GetTraitWitnessInfosOfTypars: TcGlobals -> numParentTypars: int -> typars: T /// An immutable mappping from witnesses to some data. /// /// Note: this uses an immutable HashMap/Dictionary with an IEqualityComparer that captures TcGlobals, see EmptyTraitWitnessInfoHashMap -#if FABLE_COMPILER -type TraitWitnessInfoHashMap<'T> = Internal.Utilities.Collections.Tagged.Map -#else type TraitWitnessInfoHashMap<'T> = ImmutableDictionary -#endif /// Create an empty immutable mapping from witnesses to some data val EmptyTraitWitnessInfoHashMap: TcGlobals -> TraitWitnessInfoHashMap<'T> @@ -2655,6 +2654,8 @@ val TryBindTyconRefAttribute: f3: (obj option list * (string * obj option) list -> 'a option) -> 'a option +val HasDefaultAugmentationAttribute: g: TcGlobals -> tcref: TyconRef -> bool + val (|ResumableCodeInvoke|_|): g: TcGlobals -> expr: Expr -> (Expr * Expr * Expr list * range * (Expr * Expr list -> Expr)) option @@ -2726,9 +2727,22 @@ type TraitConstraintInfo with val (|EmptyModuleOrNamespaces|_|): moduleOrNamespaceContents: ModuleOrNamespaceContents -> (ModuleOrNamespace list) option -/// Add an System.Runtime.CompilerServices.ExtensionAttribute to the Entity if found via predicate and not already present. -val tryAddExtensionAttributeIfNotAlreadyPresent: - tryFindExtensionAttributeIn: ((Attrib list -> Attrib option) -> Attrib option) -> entity: Entity -> Entity +val tryFindExtensionAttribute: g: TcGlobals -> attribs: Attrib list -> Attrib option + +/// Add an System.Runtime.CompilerServices.ExtensionAttribute to the module Entity if found via predicate and not already present. +val tryAddExtensionAttributeIfNotAlreadyPresentForModule: + g: TcGlobals -> + tryFindExtensionAttributeIn: ((Attrib list -> Attrib option) -> Attrib option) -> + moduleEntity: Entity -> + Entity + +/// Add an System.Runtime.CompilerServices.ExtensionAttribute to the type Entity if found via predicate and not already present. +val tryAddExtensionAttributeIfNotAlreadyPresentForType: + g: TcGlobals -> + tryFindExtensionAttributeIn: ((Attrib list -> Attrib option) -> Attrib option) -> + moduleOrNamespaceTypeAccumulator: ModuleOrNamespaceType ref -> + typeEntity: Entity -> + Entity #if !FABLE_COMPILER diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypedTreePickle.fs b/src/fcs-fable/src/Compiler/TypedTree/TypedTreePickle.fs index f1b5d53c5f..cb7d654bfd 100644 --- a/src/fcs-fable/src/Compiler/TypedTree/TypedTreePickle.fs +++ b/src/fcs-fable/src/Compiler/TypedTree/TypedTreePickle.fs @@ -503,7 +503,7 @@ let private p_lazy_impl p v st = st.os.FixupInt32 fixupPos7 ovalsIdx2 let p_lazy p x st = - p_lazy_impl p (Lazy.force x) st + p_lazy_impl p (InterruptibleLazy.force x) st let p_maybe_lazy p (x: MaybeLazy<_>) st = p_lazy_impl p x.Value st @@ -562,7 +562,7 @@ let u_list_revi f st = yield f st (n-1-i) ] -let u_wrap (f: 'U -> 'T) (u : 'U unpickler) : 'T unpickler = (fun st -> f (u st)) +let u_wrap (f: 'U -> 'T) (u : 'U unpickler) : 'T unpickler = (u >> f) let u_option f st = let tag = u_byte st @@ -606,7 +606,7 @@ let u_lazy u st = res #else ignore (len, otyconsIdx1, otyconsIdx2, otyparsIdx1, otyparsIdx2, ovalsIdx1, ovalsIdx2) - Lazy.CreateFromValue(u st) + InterruptibleLazy.FromValue(u st) #endif @@ -960,7 +960,7 @@ let u_ILHasThis st = let u_ILCallConv st = let a, b = u_tup2 u_ILHasThis u_ILBasicCallConv st in Callconv(a, b) let u_ILTypeRef st = let a, b, c = u_tup3 u_ILScopeRef u_strings u_string st in ILTypeRef.Create(a, b, c) -let u_ILArrayShape = u_wrap (fun x -> ILArrayShape x) (u_list (u_tup2 (u_option u_int32) (u_option u_int32))) +let u_ILArrayShape = u_wrap (ILArrayShape) (u_list (u_tup2 (u_option u_int32) (u_option u_int32))) let rec u_ILType st = @@ -1165,30 +1165,30 @@ let decoders = itag_call, u_ILMethodSpec >> (fun a -> I_call (Normalcall, a, None)) itag_callvirt, u_ILMethodSpec >> (fun a -> I_callvirt (Normalcall, a, None)) itag_ldvirtftn, u_ILMethodSpec >> I_ldvirtftn - itag_conv, u_ILBasicType >> (fun a -> (AI_conv a)) - itag_conv_ovf, u_ILBasicType >> (fun a -> (AI_conv_ovf a)) - itag_conv_ovf_un, u_ILBasicType >> (fun a -> (AI_conv_ovf_un a)) + itag_conv, u_ILBasicType >> AI_conv + itag_conv_ovf, u_ILBasicType >> AI_conv_ovf + itag_conv_ovf_un, u_ILBasicType >> AI_conv_ovf_un itag_ldfld, u_tup2 u_ILVolatility u_ILFieldSpec >> (fun (b, c) -> I_ldfld (Aligned, b, c)) itag_ldflda, u_ILFieldSpec >> I_ldflda - itag_ldsfld, u_tup2 u_ILVolatility u_ILFieldSpec >> (fun (a, b) -> I_ldsfld (a, b)) + itag_ldsfld, u_tup2 u_ILVolatility u_ILFieldSpec >> I_ldsfld itag_ldsflda, u_ILFieldSpec >> I_ldsflda itag_stfld, u_tup2 u_ILVolatility u_ILFieldSpec >> (fun (b, c) -> I_stfld (Aligned, b, c)) - itag_stsfld, u_tup2 u_ILVolatility u_ILFieldSpec >> (fun (a, b) -> I_stsfld (a, b)) - itag_ldtoken, u_ILType >> (fun a -> I_ldtoken (ILToken.ILType a)) + itag_stsfld, u_tup2 u_ILVolatility u_ILFieldSpec >> I_stsfld + itag_ldtoken, u_ILType >> (ILToken.ILType >> I_ldtoken) itag_ldstr, u_string >> I_ldstr itag_box, u_ILType >> I_box itag_unbox, u_ILType >> I_unbox itag_unbox_any, u_ILType >> I_unbox_any - itag_newarr, u_tup2 u_ILArrayShape u_ILType >> (fun (a, b) -> I_newarr(a, b)) - itag_stelem_any, u_tup2 u_ILArrayShape u_ILType >> (fun (a, b) -> I_stelem_any(a, b)) - itag_ldelem_any, u_tup2 u_ILArrayShape u_ILType >> (fun (a, b) -> I_ldelem_any(a, b)) + itag_newarr, u_tup2 u_ILArrayShape u_ILType >> I_newarr + itag_stelem_any, u_tup2 u_ILArrayShape u_ILType >> I_stelem_any + itag_ldelem_any, u_tup2 u_ILArrayShape u_ILType >> I_ldelem_any itag_ldelema, u_tup3 u_ILReadonly u_ILArrayShape u_ILType >> (fun (a, b, c) -> I_ldelema(a, false, b, c)) itag_castclass, u_ILType >> I_castclass itag_isinst, u_ILType >> I_isinst itag_ldobj, u_ILType >> (fun c -> I_ldobj (Aligned, Nonvolatile, c)) itag_stobj, u_ILType >> (fun c -> I_stobj (Aligned, Nonvolatile, c)) itag_sizeof, u_ILType >> I_sizeof - itag_ldlen_multi, u_tup2 u_int32 u_int32 >> (fun (a, b) -> EI_ldlen_multi (a, b)) + itag_ldlen_multi, u_tup2 u_int32 u_int32 >> EI_ldlen_multi itag_ilzero, u_ILType >> EI_ilzero itag_ilzero, u_ILType >> EI_ilzero itag_initobj, u_ILType >> I_initobj @@ -1366,8 +1366,8 @@ let u_nonlocal_val_ref st : NonLocalValOrMemberRef = let u_vref st = let tag = u_byte st match tag with - | 0 -> u_local_item_ref st.ivals st |> (fun x -> VRefLocal x) - | 1 -> u_nonlocal_val_ref st |> (fun x -> VRefNonLocal x) + | 0 -> u_local_item_ref st.ivals st |> VRefLocal + | 1 -> u_nonlocal_val_ref st |> VRefNonLocal | _ -> ufailwith st "u_item_ref" let u_vrefs = u_list u_vref @@ -2435,7 +2435,7 @@ and u_const st = | 14 -> u_string st |> Const.String | 15 -> Const.Unit | 16 -> Const.Zero - | 17 -> u_array u_int32 st |> (fun bits -> Const.Decimal (System.Decimal bits)) + | 17 -> u_array u_int32 st |> (System.Decimal >> Const.Decimal) | _ -> ufailwith st "u_const" diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypedTreePickle.fsi b/src/fcs-fable/src/Compiler/TypedTree/TypedTreePickle.fsi index 2d6fc2bdc4..5e0fa9915c 100644 --- a/src/fcs-fable/src/Compiler/TypedTree/TypedTreePickle.fsi +++ b/src/fcs-fable/src/Compiler/TypedTree/TypedTreePickle.fsi @@ -44,7 +44,7 @@ val internal p_int: int -> WriterState -> unit val internal p_string: string -> WriterState -> unit /// Serialize a lazy value (eagerly) -val internal p_lazy: pickler<'T> -> Lazy<'T> pickler +val internal p_lazy: pickler<'T> -> InterruptibleLazy<'T> pickler /// Serialize a tuple of data val inline internal p_tup2: pickler<'T1> -> pickler<'T2> -> pickler<'T1 * 'T2> @@ -106,7 +106,7 @@ val internal u_int: ReaderState -> int val internal u_string: ReaderState -> string /// Deserialize a lazy value (eagerly) -val internal u_lazy: unpickler<'T> -> unpickler> +val internal u_lazy: unpickler<'T> -> unpickler> /// Deserialize a tuple val inline internal u_tup2: unpickler<'T2> -> unpickler<'T3> -> unpickler<'T2 * 'T3> diff --git a/src/fcs-fable/src/Compiler/TypedTree/tainted.fs b/src/fcs-fable/src/Compiler/TypedTree/tainted.fs index 0eb274fa48..f586f99a3c 100644 --- a/src/fcs-fable/src/Compiler/TypedTree/tainted.fs +++ b/src/fcs-fable/src/Compiler/TypedTree/tainted.fs @@ -171,7 +171,7 @@ module internal Tainted = let EqTainted (t1:Tainted<'T>) (t2:Tainted<'T>) = t1.PUntaintNoFailure(fun t1 -> t1 === t2.AccessObjectDirectly) - let GetHashCodeTainted (t:Tainted<'T>) = t.PUntaintNoFailure(fun t -> hash t) + let GetHashCodeTainted (t:Tainted<'T>) = t.PUntaintNoFailure hash #endif diff --git a/src/fcs-fable/src/Compiler/Utilities/Activity.fs b/src/fcs-fable/src/Compiler/Utilities/Activity.fs index d851ebdb83..f8f29acbd5 100644 --- a/src/fcs-fable/src/Compiler/Utilities/Activity.fs +++ b/src/fcs-fable/src/Compiler/Utilities/Activity.fs @@ -100,11 +100,11 @@ module internal Activity = activity.Start() - let startNoTags (name: string) : IDisposable = activitySource.StartActivity(name) + let startNoTags (name: string) : IDisposable = activitySource.StartActivity name let addEvent name = - if Activity.Current <> null && Activity.Current.Source = activitySource then - Activity.Current.AddEvent(ActivityEvent(name)) |> ignore + if (not (isNull Activity.Current)) && Activity.Current.Source = activitySource then + Activity.Current.AddEvent(ActivityEvent name) |> ignore module Profiling = @@ -230,7 +230,7 @@ module internal Activity = appendWithLeadingComma (a.RootId) Tags.AllKnownTags - |> Array.iter (fun t -> a.GetTagItem(t) |> escapeStringForCsv |> appendWithLeadingComma) + |> Array.iter (a.GetTagItem >> escapeStringForCsv >> appendWithLeadingComma) sb.ToString() @@ -247,13 +247,12 @@ module internal Activity = let sw = new StreamWriter(path = pathToFile, append = true) let msgQueue = - MailboxProcessor.Start - (fun inbox -> - async { - while true do - let! msg = inbox.Receive() - do! sw.WriteLineAsync(msg) |> Async.AwaitTask - }) + MailboxProcessor.Start(fun inbox -> + async { + while true do + let! msg = inbox.Receive() + do! sw.WriteLineAsync(msg) |> Async.AwaitTask + }) let l = new ActivityListener( diff --git a/src/fcs-fable/src/Compiler/Utilities/Cancellable.fs b/src/fcs-fable/src/Compiler/Utilities/Cancellable.fs new file mode 100644 index 0000000000..ec5036027b --- /dev/null +++ b/src/fcs-fable/src/Compiler/Utilities/Cancellable.fs @@ -0,0 +1,216 @@ +namespace FSharp.Compiler + +open System +open System.Threading + +[] +type Cancellable = + [] + static val mutable private token: CancellationToken + + static member UsingToken(ct) = + let oldCt = Cancellable.token + + Cancellable.token <- ct + + { new IDisposable with + member this.Dispose() = Cancellable.token <- oldCt + } + + static member Token + with get () = Cancellable.token + and internal set v = Cancellable.token <- v + + static member CheckAndThrow() = + Cancellable.token.ThrowIfCancellationRequested() + +namespace Internal.Utilities.Library + +open System +open System.Threading + +#if !FSHARPCORE_USE_PACKAGE +open FSharp.Core.CompilerServices.StateMachineHelpers +#endif + +[] +type ValueOrCancelled<'TResult> = + | Value of result: 'TResult + | Cancelled of ``exception``: OperationCanceledException + +[] +type Cancellable<'T> = Cancellable of (CancellationToken -> ValueOrCancelled<'T>) + +module Cancellable = + + let inline run (ct: CancellationToken) (Cancellable oper) = + if ct.IsCancellationRequested then + ValueOrCancelled.Cancelled(OperationCanceledException ct) + else +#if FABLE_COMPILER + oper ct +#else + try + oper ct + with :? OperationCanceledException as e -> + ValueOrCancelled.Cancelled(OperationCanceledException e.CancellationToken) +#endif + + let fold f acc seq = + Cancellable(fun ct -> + let mutable acc = ValueOrCancelled.Value acc + + for x in seq do + match acc with + | ValueOrCancelled.Value accv -> acc <- run ct (f accv x) + | ValueOrCancelled.Cancelled _ -> () + + acc) + + let runWithoutCancellation comp = + let res = run CancellationToken.None comp + + match res with + | ValueOrCancelled.Cancelled _ -> failwith "unexpected cancellation" + | ValueOrCancelled.Value r -> r + + let toAsync c = + async { + let! ct = Async.CancellationToken + let res = run ct c + + return! + Async.FromContinuations(fun (cont, _econt, ccont) -> + match res with + | ValueOrCancelled.Value v -> cont v + | ValueOrCancelled.Cancelled ce -> ccont ce) + } + + let token () = Cancellable(ValueOrCancelled.Value) + +type CancellableBuilder() = + + member inline _.Delay([] f) = + Cancellable(fun ct -> + let (Cancellable g) = f () + g ct) + + member inline _.Bind(comp, [] k) = + Cancellable(fun ct -> +#if !FSHARPCORE_USE_PACKAGE + __debugPoint "" +#endif + + match Cancellable.run ct comp with + | ValueOrCancelled.Value v1 -> Cancellable.run ct (k v1) + | ValueOrCancelled.Cancelled err1 -> ValueOrCancelled.Cancelled err1) + + member inline _.BindReturn(comp, [] k) = + Cancellable(fun ct -> +#if !FSHARPCORE_USE_PACKAGE + __debugPoint "" +#endif + + match Cancellable.run ct comp with + | ValueOrCancelled.Value v1 -> ValueOrCancelled.Value(k v1) + | ValueOrCancelled.Cancelled err1 -> ValueOrCancelled.Cancelled err1) + + member inline _.Combine(comp1, comp2) = + Cancellable(fun ct -> +#if !FSHARPCORE_USE_PACKAGE + __debugPoint "" +#endif + + match Cancellable.run ct comp1 with + | ValueOrCancelled.Value() -> Cancellable.run ct comp2 + | ValueOrCancelled.Cancelled err1 -> ValueOrCancelled.Cancelled err1) + + member inline _.TryWith(comp, [] handler) = + Cancellable(fun ct -> +#if !FSHARPCORE_USE_PACKAGE + __debugPoint "" +#endif + + let compRes = + try + match Cancellable.run ct comp with + | ValueOrCancelled.Value res -> ValueOrCancelled.Value(Choice1Of2 res) + | ValueOrCancelled.Cancelled exn -> ValueOrCancelled.Cancelled exn + with err -> + ValueOrCancelled.Value(Choice2Of2 err) + + match compRes with + | ValueOrCancelled.Value res -> + match res with + | Choice1Of2 r -> ValueOrCancelled.Value r + | Choice2Of2 err -> Cancellable.run ct (handler err) + | ValueOrCancelled.Cancelled err1 -> ValueOrCancelled.Cancelled err1) + +#if FABLE_COMPILER + member inline _.Using(resource: 'Resource when 'Resource :> IDisposable, [] comp) = +#else + member inline _.Using(resource, [] comp) = +#endif + Cancellable(fun ct -> +#if !FSHARPCORE_USE_PACKAGE + __debugPoint "" +#endif + let body = comp resource + + let compRes = + try + match Cancellable.run ct body with + | ValueOrCancelled.Value res -> ValueOrCancelled.Value(Choice1Of2 res) + | ValueOrCancelled.Cancelled exn -> ValueOrCancelled.Cancelled exn + with err -> + ValueOrCancelled.Value(Choice2Of2 err) + + match compRes with + | ValueOrCancelled.Value res -> +#if FABLE_COMPILER + match box resource with + | null -> () + | _ -> resource.Dispose() +#else + Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.Dispose resource +#endif + + match res with + | Choice1Of2 r -> ValueOrCancelled.Value r + | Choice2Of2 err -> raise err + | ValueOrCancelled.Cancelled err1 -> ValueOrCancelled.Cancelled err1) + + member inline _.TryFinally(comp, [] compensation) = + Cancellable(fun ct -> +#if !FSHARPCORE_USE_PACKAGE + __debugPoint "" +#endif + + let compRes = + try + match Cancellable.run ct comp with + | ValueOrCancelled.Value res -> ValueOrCancelled.Value(Choice1Of2 res) + | ValueOrCancelled.Cancelled exn -> ValueOrCancelled.Cancelled exn + with err -> + ValueOrCancelled.Value(Choice2Of2 err) + + match compRes with + | ValueOrCancelled.Value res -> + compensation () + + match res with + | Choice1Of2 r -> ValueOrCancelled.Value r + | Choice2Of2 err -> raise err + | ValueOrCancelled.Cancelled err1 -> ValueOrCancelled.Cancelled err1) + + member inline _.Return v = + Cancellable(fun _ -> ValueOrCancelled.Value v) + + member inline _.ReturnFrom(v: Cancellable<'T>) = v + + member inline _.Zero() = + Cancellable(fun _ -> ValueOrCancelled.Value()) + +[] +module CancellableAutoOpens = + let cancellable = CancellableBuilder() diff --git a/src/fcs-fable/src/Compiler/Utilities/Cancellable.fsi b/src/fcs-fable/src/Compiler/Utilities/Cancellable.fsi new file mode 100644 index 0000000000..6e36d7ecb6 --- /dev/null +++ b/src/fcs-fable/src/Compiler/Utilities/Cancellable.fsi @@ -0,0 +1,75 @@ +namespace FSharp.Compiler + +open System +open System.Threading + +[] +type Cancellable = + static member internal UsingToken: CancellationToken -> IDisposable + static member Token: CancellationToken + static member internal Token: CancellationToken with set + static member CheckAndThrow: unit -> unit + +namespace Internal.Utilities.Library + +open System +open System.Threading + +[] +type internal ValueOrCancelled<'TResult> = + | Value of result: 'TResult + | Cancelled of ``exception``: OperationCanceledException + +/// Represents a synchronous, cold-start, cancellable computation with explicit representation of a cancelled result. +/// +/// A cancellable computation may be cancelled via a CancellationToken, which is propagated implicitly. +/// If cancellation occurs, it is propagated as data rather than by raising an OperationCanceledException. +[] +type internal Cancellable<'T> = Cancellable of (CancellationToken -> ValueOrCancelled<'T>) + +module internal Cancellable = + + /// Run a cancellable computation using the given cancellation token + val inline run: ct: CancellationToken -> Cancellable<'T> -> ValueOrCancelled<'T> + + val fold: f: ('State -> 'T -> Cancellable<'State>) -> acc: 'State -> seq: seq<'T> -> Cancellable<'State> + + /// Run the computation in a mode where it may not be cancelled. The computation never results in a + /// ValueOrCancelled.Cancelled. + val runWithoutCancellation: comp: Cancellable<'T> -> 'T + + /// Bind the cancellation token associated with the computation + val token: unit -> Cancellable + + val toAsync: Cancellable<'T> -> Async<'T> + +type internal CancellableBuilder = + + new: unit -> CancellableBuilder + + member inline BindReturn: comp: Cancellable<'T> * [] k: ('T -> 'U) -> Cancellable<'U> + + member inline Bind: comp: Cancellable<'T> * [] k: ('T -> Cancellable<'U>) -> Cancellable<'U> + + member inline Combine: comp1: Cancellable * comp2: Cancellable<'T> -> Cancellable<'T> + + member inline Delay: [] f: (unit -> Cancellable<'T>) -> Cancellable<'T> + + member inline Return: v: 'T -> Cancellable<'T> + + member inline ReturnFrom: v: Cancellable<'T> -> Cancellable<'T> + + member inline TryFinally: comp: Cancellable<'T> * [] compensation: (unit -> unit) -> Cancellable<'T> + + member inline TryWith: + comp: Cancellable<'T> * [] handler: (exn -> Cancellable<'T>) -> Cancellable<'T> + + member inline Using: + resource: 'Resource * [] comp: ('Resource -> Cancellable<'T>) -> Cancellable<'T> + when 'Resource :> IDisposable + + member inline Zero: unit -> Cancellable + +[] +module internal CancellableAutoOpens = + val cancellable: CancellableBuilder diff --git a/src/fcs-fable/src/Compiler/Utilities/FileSystem.fs b/src/fcs-fable/src/Compiler/Utilities/FileSystem.fs index 0a2b8106c5..8ee2930149 100644 --- a/src/fcs-fable/src/Compiler/Utilities/FileSystem.fs +++ b/src/fcs-fable/src/Compiler/Utilities/FileSystem.fs @@ -1044,7 +1044,7 @@ type internal ByteBuffer = buf.CheckDisposed() let newSize = buf.bbCurrent + 1 buf.Ensure newSize - buf.bbArray[ buf.bbCurrent ] <- byte i + buf.bbArray[buf.bbCurrent] <- byte i buf.bbCurrent <- newSize member buf.EmitByte(b: byte) = @@ -1066,10 +1066,10 @@ type internal ByteBuffer = member bb.FixupInt32 pos value = bb.CheckDisposed() - bb.bbArray[ pos ] <- (Bytes.b0 value |> byte) - bb.bbArray[ pos + 1 ] <- (Bytes.b1 value |> byte) - bb.bbArray[ pos + 2 ] <- (Bytes.b2 value |> byte) - bb.bbArray[ pos + 3 ] <- (Bytes.b3 value |> byte) + bb.bbArray[pos] <- (Bytes.b0 value |> byte) + bb.bbArray[pos + 1] <- (Bytes.b1 value |> byte) + bb.bbArray[pos + 2] <- (Bytes.b2 value |> byte) + bb.bbArray[pos + 3] <- (Bytes.b3 value |> byte) member buf.EmitInt32 n = buf.CheckDisposed() @@ -1108,8 +1108,8 @@ type internal ByteBuffer = buf.CheckDisposed() let newSize = buf.bbCurrent + 2 buf.Ensure newSize - buf.bbArray[ buf.bbCurrent ] <- (Bytes.b0 n |> byte) - buf.bbArray[ buf.bbCurrent + 1 ] <- (Bytes.b1 n |> byte) + buf.bbArray[buf.bbCurrent] <- (Bytes.b0 n |> byte) + buf.bbArray[buf.bbCurrent + 1] <- (Bytes.b1 n |> byte) buf.bbCurrent <- newSize member buf.EmitBoolAsByte(b: bool) = diff --git a/src/fcs-fable/src/Compiler/Utilities/FileSystem.fsi b/src/fcs-fable/src/Compiler/Utilities/FileSystem.fsi index f14df3ee9c..568eb5c627 100644 --- a/src/fcs-fable/src/Compiler/Utilities/FileSystem.fsi +++ b/src/fcs-fable/src/Compiler/Utilities/FileSystem.fsi @@ -273,6 +273,7 @@ type DefaultFileSystem = abstract OpenFileForWriteShim: filePath: string * ?fileMode: FileMode * ?fileAccess: FileAccess * ?fileShare: FileShare -> Stream + override OpenFileForWriteShim: filePath: string * ?fileMode: FileMode * ?fileAccess: FileAccess * ?fileShare: FileShare -> Stream diff --git a/src/fcs-fable/src/Compiler/Utilities/ImmutableArray.fs b/src/fcs-fable/src/Compiler/Utilities/ImmutableArray.fs index 87774061fb..0eafa5441b 100644 --- a/src/fcs-fable/src/Compiler/Utilities/ImmutableArray.fs +++ b/src/fcs-fable/src/Compiler/Utilities/ImmutableArray.fs @@ -78,7 +78,7 @@ module ImmutableArray = match arrs.Length with | 0 -> ImmutableArray.Empty | 1 -> arrs[0] - | 2 -> arrs[ 0 ].AddRange(arrs[1]) + | 2 -> arrs[0].AddRange(arrs[1]) | _ -> let mutable acc = 0 @@ -104,7 +104,7 @@ module ImmutableArray = if arr1.Length <> arr2.Length then invalidOp "Block lengths do not match." - let f = OptimizedClosures.FSharpFunc<_, _, _>.Adapt (predicate) + let f = OptimizedClosures.FSharpFunc<_, _, _>.Adapt(predicate) let len1 = arr1.Length let rec loop i = @@ -180,7 +180,7 @@ module ImmutableArray = let isEmpty (arr: ImmutableArray<_>) = arr.IsEmpty let fold folder state (arr: ImmutableArray<_>) = - let f = OptimizedClosures.FSharpFunc<_, _, _>.Adapt (folder) + let f = OptimizedClosures.FSharpFunc<_, _, _>.Adapt(folder) let mutable state = state for i = 0 to arr.Length - 1 do diff --git a/src/fcs-fable/src/Compiler/Utilities/InternalCollections.fs b/src/fcs-fable/src/Compiler/Utilities/InternalCollections.fs index f10cd10e19..7d35083037 100755 --- a/src/fcs-fable/src/Compiler/Utilities/InternalCollections.fs +++ b/src/fcs-fable/src/Compiler/Utilities/InternalCollections.fs @@ -64,7 +64,7 @@ type internal AgedLookup<'Token, 'Key, 'Value when 'Value: not struct>(keepStron let TryGetKeyValueImpl (data, key) = match TryPeekKeyValueImpl(data, key) with - | Some (similarKey, value) as result -> + | Some(similarKey, value) as result -> // If the result existed, move it to the end of the list (more likely to keep it) result, Promote(data, similarKey, value) | None -> None, data @@ -76,8 +76,8 @@ type internal AgedLookup<'Token, 'Key, 'Value when 'Value: not struct>(keepStron [ for key, value in refs do match value with - | Strong (value) -> yield (key, value) - | Weak (weakReference) -> + | Strong(value) -> yield (key, value) + | Weak(weakReference) -> #if FX_NO_GENERIC_WEAKREFERENCE match weakReference.Target with | Null -> () @@ -136,7 +136,7 @@ type internal AgedLookup<'Token, 'Key, 'Value when 'Value: not struct>(keepStron AssignWithStrength(tok, newData) match result with - | Some (_, value) -> Some(value) + | Some(_, value) -> Some(value) | None -> None member al.Put(tok, key, value) = @@ -164,14 +164,7 @@ type internal AgedLookup<'Token, 'Key, 'Value when 'Value: not struct>(keepStron AssignWithStrength(tok, keep) type internal MruCache<'Token, 'Key, 'Value when 'Value: not struct> - ( - keepStrongly, - areSame, - ?isStillValid: 'Key * 'Value -> bool, - ?areSimilar, - ?requiredToKeep, - ?keepMax - ) = + (keepStrongly, areSame, ?isStillValid: 'Key * 'Value -> bool, ?areSimilar, ?requiredToKeep, ?keepMax) = /// Default behavior of areSimilar function is areSame. let areSimilar = defaultArg areSimilar areSame @@ -192,17 +185,17 @@ type internal MruCache<'Token, 'Key, 'Value when 'Value: not struct> member bc.ContainsSimilarKey(tok, key) = match cache.TryPeekKeyValue(tok, key) with - | Some (_similarKey, _value) -> true + | Some(_similarKey, _value) -> true | None -> false member bc.TryGetAny(tok, key) = match cache.TryPeekKeyValue(tok, key) with - | Some (similarKey, value) -> if areSame (similarKey, key) then Some(value) else None + | Some(similarKey, value) -> if areSame (similarKey, key) then Some(value) else None | None -> None member bc.TryGet(tok, key) = match cache.TryGetKeyValue(tok, key) with - | Some (similarKey, value) -> + | Some(similarKey, value) -> if areSame (similarKey, key) && isStillValid (key, value) then Some value else @@ -211,12 +204,12 @@ type internal MruCache<'Token, 'Key, 'Value when 'Value: not struct> member bc.TryGetSimilarAny(tok, key) = match cache.TryGetKeyValue(tok, key) with - | Some (_, value) -> Some value + | Some(_, value) -> Some value | None -> None member bc.TryGetSimilar(tok, key) = match cache.TryGetKeyValue(tok, key) with - | Some (_, value) -> if isStillValid (key, value) then Some value else None + | Some(_, value) -> if isStillValid (key, value) then Some value else None | None -> None member bc.Set(tok, key: 'Key, value: 'Value) = cache.Put(tok, key, value) diff --git a/src/fcs-fable/src/Compiler/Utilities/ReadOnlySpan.fs b/src/fcs-fable/src/Compiler/Utilities/ReadOnlySpan.fs new file mode 100644 index 0000000000..ec673f18fd --- /dev/null +++ b/src/fcs-fable/src/Compiler/Utilities/ReadOnlySpan.fs @@ -0,0 +1,50 @@ +namespace System + +open System +open System.Runtime.CompilerServices + +#if !NET7_0_OR_GREATER +[] +type ReadOnlySpanExtensions = + [] + static member IndexOfAnyExcept(span: ReadOnlySpan, value0: char, value1: char) = + let mutable i = 0 + let mutable found = false + + while not found && i < span.Length do + let c = span[i] + + if c <> value0 && c <> value1 then + found <- true + else + i <- i + 1 + + if found then i else -1 + + [] + static member IndexOfAnyExcept(span: ReadOnlySpan, values: ReadOnlySpan) = + let mutable i = 0 + let mutable found = false + + while not found && i < span.Length do + if values.IndexOf span[i] < 0 then + found <- true + else + i <- i + 1 + + if found then i else -1 + + [] + static member LastIndexOfAnyInRange(span: ReadOnlySpan, lowInclusive: char, highInclusive: char) = + let mutable i = span.Length - 1 + let mutable found = false + let range = highInclusive - lowInclusive + + while not found && i >= 0 do + if span[i] - lowInclusive <= range then + found <- true + else + i <- i - 1 + + if found then i else -1 +#endif diff --git a/src/fcs-fable/src/Compiler/Utilities/ReadOnlySpan.fsi b/src/fcs-fable/src/Compiler/Utilities/ReadOnlySpan.fsi new file mode 100644 index 0000000000..875ffba28a --- /dev/null +++ b/src/fcs-fable/src/Compiler/Utilities/ReadOnlySpan.fsi @@ -0,0 +1,17 @@ +namespace System + +open System +open System.Runtime.CompilerServices + +#if !NET7_0_OR_GREATER +[] +type internal ReadOnlySpanExtensions = + [] + static member IndexOfAnyExcept: span: ReadOnlySpan * value0: char * value1: char -> int + + [] + static member IndexOfAnyExcept: span: ReadOnlySpan * values: ReadOnlySpan -> int + + [] + static member LastIndexOfAnyInRange: span: ReadOnlySpan * lowInclusive: char * highInclusive: char -> int +#endif diff --git a/src/fcs-fable/src/Compiler/Utilities/ResizeArray.fs b/src/fcs-fable/src/Compiler/Utilities/ResizeArray.fs index cd6e405129..2c9cd971c4 100644 --- a/src/fcs-fable/src/Compiler/Utilities/ResizeArray.fs +++ b/src/fcs-fable/src/Compiler/Utilities/ResizeArray.fs @@ -112,7 +112,7 @@ module internal ResizeArray = res let mapi f (arr: ResizeArray<_>) = - let f = FSharpFunc<_, _, _>.Adapt (f) + let f = FSharpFunc<_, _, _>.Adapt(f) let len = length arr let res = ResizeArray<_>(len) @@ -122,7 +122,7 @@ module internal ResizeArray = res let iteri f (arr: ResizeArray<_>) = - let f = FSharpFunc<_, _, _>.Adapt (f) + let f = FSharpFunc<_, _, _>.Adapt(f) for i = 0 to arr.Count - 1 do f.Invoke(i, arr[i]) @@ -168,7 +168,7 @@ module internal ResizeArray = loop 0 let iter2 f (arr1: ResizeArray<'T>) (arr2: ResizeArray<'b>) = - let f = FSharpFunc<_, _, _>.Adapt (f) + let f = FSharpFunc<_, _, _>.Adapt(f) let len1 = length arr1 if len1 <> length arr2 then @@ -178,7 +178,7 @@ module internal ResizeArray = f.Invoke(arr1[i], arr2[i]) let map2 f (arr1: ResizeArray<'T>) (arr2: ResizeArray<'b>) = - let f = FSharpFunc<_, _, _>.Adapt (f) + let f = FSharpFunc<_, _, _>.Adapt(f) let len1 = length arr1 if len1 <> length arr2 then @@ -320,7 +320,7 @@ module internal ResizeArray = foldBackSub f arr 0 (arrn - 2) arr[arrn - 1] let fold2 f (acc: 'T) (arr1: ResizeArray<'T1>) (arr2: ResizeArray<'T2>) = - let f = FSharpFunc<_, _, _, _>.Adapt (f) + let f = FSharpFunc<_, _, _, _>.Adapt(f) let mutable res = acc let len = length arr1 @@ -333,7 +333,7 @@ module internal ResizeArray = res let foldBack2 f (arr1: ResizeArray<'T1>) (arr2: ResizeArray<'T2>) (acc: 'b) = - let f = FSharpFunc<_, _, _, _>.Adapt (f) + let f = FSharpFunc<_, _, _, _>.Adapt(f) let mutable res = acc let len = length arr1 @@ -359,7 +359,7 @@ module internal ResizeArray = let isEmpty (arr: ResizeArray<_>) = length (arr: ResizeArray<_>) = 0 let iteri2 f (arr1: ResizeArray<'T>) (arr2: ResizeArray<'b>) = - let f = FSharpFunc<_, _, _, _>.Adapt (f) + let f = FSharpFunc<_, _, _, _>.Adapt(f) let len1 = length arr1 if len1 <> length arr2 then @@ -369,7 +369,7 @@ module internal ResizeArray = f.Invoke(i, arr1[i], arr2[i]) let mapi2 (f: int -> 'T -> 'b -> 'c) (arr1: ResizeArray<'T>) (arr2: ResizeArray<'b>) = - let f = FSharpFunc<_, _, _, _>.Adapt (f) + let f = FSharpFunc<_, _, _, _>.Adapt(f) let len1 = length arr1 if len1 <> length arr2 then @@ -378,7 +378,7 @@ module internal ResizeArray = init len1 (fun i -> f.Invoke(i, arr1[i], arr2[i])) let scanBackSub f (arr: ResizeArray<'T>) start fin acc = - let f = FSharpFunc<_, _, _>.Adapt (f) + let f = FSharpFunc<_, _, _>.Adapt(f) let mutable state = acc let res = create (2 + fin - start) acc @@ -389,7 +389,7 @@ module internal ResizeArray = res let scanSub f acc (arr: ResizeArray<'T>) start fin = - let f = FSharpFunc<_, _, _>.Adapt (f) + let f = FSharpFunc<_, _, _>.Adapt(f) let mutable state = acc let res = create (fin - start + 2) acc diff --git a/src/fcs-fable/src/Compiler/Utilities/TaggedCollections.fs b/src/fcs-fable/src/Compiler/Utilities/TaggedCollections.fs index 759ec0a8dd..438a17cd02 100644 --- a/src/fcs-fable/src/Compiler/Utilities/TaggedCollections.fs +++ b/src/fcs-fable/src/Compiler/Utilities/TaggedCollections.fs @@ -382,12 +382,12 @@ module SetTree = let minimumElement s = match minimumElementOpt s with - | Some (k) -> k + | Some(k) -> k | None -> failwith "minimumElement" let maximumElement s = match maximumElementOpt s with - | Some (k) -> k + | Some(k) -> k | None -> failwith "maximumElement" //-------------------------------------------------------------------------- @@ -615,9 +615,9 @@ type internal Set<'T, 'ComparerTag> when 'ComparerTag :> IComparer<'T>(comparer: member s.ForAll predicate = SetTree.forall predicate tree - static member (-)(a: Set<'T, 'ComparerTag>, b: Set<'T, 'ComparerTag>) = Set<_, _>.Difference (a, b) + static member (-)(a: Set<'T, 'ComparerTag>, b: Set<'T, 'ComparerTag>) = Set<_, _>.Difference(a, b) - static member (+)(a: Set<'T, 'ComparerTag>, b: Set<'T, 'ComparerTag>) = Set<_, _>.Union (a, b) + static member (+)(a: Set<'T, 'ComparerTag>, b: Set<'T, 'ComparerTag>) = Set<_, _>.Union(a, b) static member Intersection(a: Set<'T, 'ComparerTag>, b: Set<'T, 'ComparerTag>) : Set<'T, 'ComparerTag> = if SetTree.isEmpty b.Tree then @@ -1273,7 +1273,7 @@ type internal Map<'Key, 'T, 'ComparerTag> when 'ComparerTag :> IComparer<'Key>(c let combineHash x y = (x <<< 1) + y + 631 let mutable res = 0 - for KeyValue (x, y) in this do + for KeyValue(x, y) in this do res <- combineHash res (Unchecked.hash x) res <- combineHash res (Unchecked.hash y) diff --git a/src/fcs-fable/src/Compiler/Utilities/XmlAdapters.fs b/src/fcs-fable/src/Compiler/Utilities/XmlAdapters.fs index f99853d61e..bf1af34e99 100644 --- a/src/fcs-fable/src/Compiler/Utilities/XmlAdapters.fs +++ b/src/fcs-fable/src/Compiler/Utilities/XmlAdapters.fs @@ -12,6 +12,6 @@ let getEscapeSequence c = | '\"' -> """ | '\'' -> "'" | '&' -> "&" - | _ as ch -> ch.ToString() + | ch -> ch.ToString() let escape str = String.collect getEscapeSequence str diff --git a/src/fcs-fable/src/Compiler/Utilities/illib.fs b/src/fcs-fable/src/Compiler/Utilities/illib.fs index 3172fc594b..c4367cd8b8 100644 --- a/src/fcs-fable/src/Compiler/Utilities/illib.fs +++ b/src/fcs-fable/src/Compiler/Utilities/illib.fs @@ -10,9 +10,46 @@ open System.IO open System.Threading open System.Threading.Tasks open System.Runtime.CompilerServices -#if !FSHARPCORE_USE_PACKAGE -open FSharp.Core.CompilerServices.StateMachineHelpers -#endif + +[] +type InterruptibleLazy<'T> private (value, valueFactory: unit -> 'T) = + let syncObj = obj () + let mutable valueFactory = valueFactory + let mutable value = value + + new(valueFactory: unit -> 'T) = InterruptibleLazy(Unchecked.defaultof<_>, valueFactory) + + member this.IsValueCreated = + match box valueFactory with + | null -> true + | _ -> false + + member this.Value = + match box valueFactory with + | null -> value + | _ -> + + Monitor.Enter(syncObj) + + try + match box valueFactory with + | null -> () + | _ -> + + value <- valueFactory () + valueFactory <- Unchecked.defaultof<_> + finally + Monitor.Exit(syncObj) + + value + + member this.Force() = this.Value + + static member FromValue(value) = + InterruptibleLazy(value, Unchecked.defaultof<_>) + +module InterruptibleLazy = + let force (x: InterruptibleLazy<'T>) = x.Value [] module internal PervasiveAutoOpens = @@ -20,7 +57,16 @@ module internal PervasiveAutoOpens = /// Code that uses this should probably be adjusted to use unsigned integer types. let (>>>&) (x: int32) (n: int32) = int32 (uint32 x >>> n) - let notlazy v = Lazy<_>.CreateFromValue v + let notlazy v = InterruptibleLazy.FromValue v + + let (|InterruptibleLazy|) (l: InterruptibleLazy<_>) = l.Force() + + [] + let (|RecoverableException|_|) (exn: Exception) = + if exn :? OperationCanceledException then + ValueNone + else + ValueSome exn let inline isNil l = List.isEmpty l @@ -113,42 +159,56 @@ module internal PervasiveAutoOpens = let ts = TaskCompletionSource<'T>() let task = ts.Task - Async.StartWithContinuations( - computation, - (fun k -> ts.SetResult k), - (fun exn -> ts.SetException exn), - (fun _ -> ts.SetCanceled()), - cancellationToken - ) + Async.StartWithContinuations(computation, (ts.SetResult), (ts.SetException), (fun _ -> ts.SetCanceled()), cancellationToken) task.Result #endif //!FABLE_COMPILER -/// An efficient lazy for inline storage in a class type. Results in fewer thunks. -#if FABLE_COMPILER -type InlineDelayInit<'T when 'T : not struct>(f: unit -> 'T) = - let store = lazy(f()) - member x.Value = store.Force() -#else -[] -type InlineDelayInit<'T when 'T: not struct> = - new(f: unit -> 'T) = - { - store = Unchecked.defaultof<'T> - func = Func<_>(f) - } +[] +type DelayInitArrayMap<'T, 'TDictKey, 'TDictValue>(f: unit -> 'T[]) = + let syncObj = obj () + + let mutable arrayStore = null + let mutable dictStore = null - val mutable store: 'T - val mutable func: Func<'T> MaybeNull + let mutable func = f - member x.Value = - match x.func with - | null -> x.store + member this.GetArray() = + match arrayStore with + | NonNull value -> value | _ -> - let res = LazyInitializer.EnsureInitialized(&x.store, x.func) - x.func <- null - res -#endif //!FABLE_COMPILER + Monitor.Enter(syncObj) + + try + match arrayStore with + | NonNull value -> value + | _ -> + + arrayStore <- func () + + func <- Unchecked.defaultof<_> + arrayStore + finally + Monitor.Exit(syncObj) + + member this.GetDictionary() = + match dictStore with + | NonNull value -> value + | _ -> + let array = this.GetArray() + Monitor.Enter(syncObj) + + try + match dictStore with + | NonNull value -> value + | _ -> + + dictStore <- this.CreateDictionary(array) + dictStore + finally + Monitor.Exit(syncObj) + + abstract CreateDictionary: 'T[] -> IDictionary<'TDictKey, 'TDictValue> //------------------------------------------------------------------------- // Library: projections @@ -218,7 +278,7 @@ module Array = let rec loop p l n = (n < Array.length l) && (if p l[n] then - forallFrom (fun x -> not (p x)) l (n + 1) + forallFrom (p >> not) l (n + 1) else loop p l (n + 1)) @@ -570,7 +630,7 @@ module List = xss |> List.mapi (fun i xs -> xs |> List.mapi (fun j x -> f i j x)) let existsSquared f xss = - xss |> List.exists (fun xs -> xs |> List.exists (fun x -> f x)) + xss |> List.exists (fun xs -> xs |> List.exists f) let mapiFoldSquared f z xss = mapFoldSquared f z (xss |> mapiSquared (fun i j x -> (i, j, x))) @@ -899,186 +959,6 @@ module ResultOrException = | Result x -> success x | Exception _err -> f () -[] -type ValueOrCancelled<'TResult> = - | Value of result: 'TResult - | Cancelled of ``exception``: OperationCanceledException - -/// Represents a cancellable computation with explicit representation of a cancelled result. -/// -/// A cancellable computation is passed may be cancelled via a CancellationToken, which is propagated implicitly. -/// If cancellation occurs, it is propagated as data rather than by raising an OperationCanceledException. -[] -type Cancellable<'T> = Cancellable of (CancellationToken -> ValueOrCancelled<'T>) - -module Cancellable = - - /// Run a cancellable computation using the given cancellation token - let inline run (ct: CancellationToken) (Cancellable oper) = - if ct.IsCancellationRequested then - ValueOrCancelled.Cancelled(OperationCanceledException ct) - else - oper ct - - let fold f acc seq = - Cancellable(fun ct -> - let mutable acc = ValueOrCancelled.Value acc - - for x in seq do - match acc with - | ValueOrCancelled.Value accv -> acc <- run ct (f accv x) - | ValueOrCancelled.Cancelled _ -> () - - acc) - - /// Run the computation in a mode where it may not be cancelled. The computation never results in a - /// ValueOrCancelled.Cancelled. - let runWithoutCancellation comp = - let res = run CancellationToken.None comp - - match res with - | ValueOrCancelled.Cancelled _ -> failwith "unexpected cancellation" - | ValueOrCancelled.Value r -> r - - let toAsync c = - async { - let! ct = Async.CancellationToken - let res = run ct c - - return! - Async.FromContinuations(fun (cont, _econt, ccont) -> - match res with - | ValueOrCancelled.Value v -> cont v - | ValueOrCancelled.Cancelled ce -> ccont ce) - } - - /// Bind the cancellation token associated with the computation - let token () = - Cancellable(fun ct -> ValueOrCancelled.Value ct) - -type CancellableBuilder() = - - member inline _.Delay([] f) = - Cancellable(fun ct -> - let (Cancellable g) = f () - g ct) - - member inline _.Bind(comp, [] k) = - Cancellable(fun ct -> -#if !FSHARPCORE_USE_PACKAGE - __debugPoint "" -#endif - - match Cancellable.run ct comp with - | ValueOrCancelled.Value v1 -> Cancellable.run ct (k v1) - | ValueOrCancelled.Cancelled err1 -> ValueOrCancelled.Cancelled err1) - - member inline _.BindReturn(comp, [] k) = - Cancellable(fun ct -> -#if !FSHARPCORE_USE_PACKAGE - __debugPoint "" -#endif - - match Cancellable.run ct comp with - | ValueOrCancelled.Value v1 -> ValueOrCancelled.Value(k v1) - | ValueOrCancelled.Cancelled err1 -> ValueOrCancelled.Cancelled err1) - - member inline _.Combine(comp1, comp2) = - Cancellable(fun ct -> -#if !FSHARPCORE_USE_PACKAGE - __debugPoint "" -#endif - - match Cancellable.run ct comp1 with - | ValueOrCancelled.Value () -> Cancellable.run ct comp2 - | ValueOrCancelled.Cancelled err1 -> ValueOrCancelled.Cancelled err1) - - member inline _.TryWith(comp, [] handler) = - Cancellable(fun ct -> -#if !FSHARPCORE_USE_PACKAGE - __debugPoint "" -#endif - - let compRes = - try - match Cancellable.run ct comp with - | ValueOrCancelled.Value res -> ValueOrCancelled.Value(Choice1Of2 res) - | ValueOrCancelled.Cancelled exn -> ValueOrCancelled.Cancelled exn - with err -> - ValueOrCancelled.Value(Choice2Of2 err) - - match compRes with - | ValueOrCancelled.Value res -> - match res with - | Choice1Of2 r -> ValueOrCancelled.Value r - | Choice2Of2 err -> Cancellable.run ct (handler err) - | ValueOrCancelled.Cancelled err1 -> ValueOrCancelled.Cancelled err1) - - member inline _.Using(resource: #IDisposable, [] comp) = - Cancellable(fun ct -> -#if !FSHARPCORE_USE_PACKAGE - __debugPoint "" -#endif - let body = comp resource - - let compRes = - try - match Cancellable.run ct body with - | ValueOrCancelled.Value res -> ValueOrCancelled.Value(Choice1Of2 res) - | ValueOrCancelled.Cancelled exn -> ValueOrCancelled.Cancelled exn - with err -> - ValueOrCancelled.Value(Choice2Of2 err) - - match compRes with - | ValueOrCancelled.Value res -> -#if FABLE_COMPILER - match box resource with - | null -> () - | _ -> resource.Dispose() -#else - Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicFunctions.Dispose resource -#endif - - match res with - | Choice1Of2 r -> ValueOrCancelled.Value r - | Choice2Of2 err -> raise err - | ValueOrCancelled.Cancelled err1 -> ValueOrCancelled.Cancelled err1) - - member inline _.TryFinally(comp, [] compensation) = - Cancellable(fun ct -> -#if !FSHARPCORE_USE_PACKAGE - __debugPoint "" -#endif - - let compRes = - try - match Cancellable.run ct comp with - | ValueOrCancelled.Value res -> ValueOrCancelled.Value(Choice1Of2 res) - | ValueOrCancelled.Cancelled exn -> ValueOrCancelled.Cancelled exn - with err -> - ValueOrCancelled.Value(Choice2Of2 err) - - match compRes with - | ValueOrCancelled.Value res -> - compensation () - - match res with - | Choice1Of2 r -> ValueOrCancelled.Value r - | Choice2Of2 err -> raise err - | ValueOrCancelled.Cancelled err1 -> ValueOrCancelled.Cancelled err1) - - member inline _.Return v = - Cancellable(fun _ -> ValueOrCancelled.Value v) - - member inline _.ReturnFrom(v: Cancellable<'T>) = v - - member inline _.Zero() = - Cancellable(fun _ -> ValueOrCancelled.Value()) - -[] -module CancellableAutoOpens = - let cancellable = CancellableBuilder() - /// Generates unique stamps type UniqueStampGenerator<'T when 'T: equality>() = let encodeTable = ConcurrentDictionary<'T, Lazy>(HashIdentity.Structural) @@ -1215,7 +1095,7 @@ type LazyWithContext<'T, 'Ctxt> = x.value <- res x.funcOrException <- null res - with exn -> + with RecoverableException exn -> x.funcOrException <- box (LazyWithContextFailure(exn)) reraise () | _ -> failwith "unreachable" @@ -1323,8 +1203,8 @@ module NameMap = for m in ms do yield! m } - |> Seq.groupBy (fun (KeyValue (k, _v)) -> k) - |> Seq.map (fun (k, es) -> (k, unionf (Seq.map (fun (KeyValue (_k, v)) -> v) es))) + |> Seq.groupBy (fun (KeyValue(k, _v)) -> k) + |> Seq.map (fun (k, es) -> (k, unionf (Seq.map (fun (KeyValue(_k, v)) -> v) es))) |> Map.ofSeq /// For every entry in m2 find an entry in m1 and fold @@ -1451,11 +1331,11 @@ module MapAutoOpens = static member Empty: Map<'Key, 'Value> = Map.empty #if FSHARPCORE_USE_PACKAGE - member x.Values = [ for KeyValue (_, v) in x -> v ] + member x.Values = [ for KeyValue(_, v) in x -> v ] #endif member x.AddMany(kvs: _[]) = - (x, kvs) ||> Array.fold (fun x (KeyValue (k, v)) -> x.Add(k, v)) + (x, kvs) ||> Array.fold (fun x (KeyValue(k, v)) -> x.Add(k, v)) member x.AddOrModify(key, f: 'Value option -> 'Value) = x.Add(key, f (x.TryFind key)) @@ -1473,7 +1353,7 @@ type LayeredMultiMap<'Key, 'Value when 'Key: equality and 'Key: comparison>(cont | _ -> [] member x.AddMany(kvs: _[]) = - (x, kvs) ||> Array.fold (fun x (KeyValue (k, v)) -> x.Add(k, v)) + (x, kvs) ||> Array.fold (fun x (KeyValue(k, v)) -> x.Add(k, v)) member _.TryFind k = contents.TryFind k diff --git a/src/fcs-fable/src/Compiler/Utilities/illib.fsi b/src/fcs-fable/src/Compiler/Utilities/illib.fsi index 43033f9d16..0b06de7787 100644 --- a/src/fcs-fable/src/Compiler/Utilities/illib.fsi +++ b/src/fcs-fable/src/Compiler/Utilities/illib.fsi @@ -7,13 +7,31 @@ open System.Threading open System.Collections.Generic open System.Runtime.CompilerServices +[] +type InterruptibleLazy<'T> = + new: valueFactory: (unit -> 'T) -> InterruptibleLazy<'T> + + member IsValueCreated: bool + + member Value: 'T + member Force: unit -> 'T + + static member FromValue: value: 'T -> InterruptibleLazy<'T> + +module InterruptibleLazy = + val force: InterruptibleLazy<'T> -> 'T + [] module internal PervasiveAutoOpens = /// Logical shift right treating int32 as unsigned integer. /// Code that uses this should probably be adjusted to use unsigned integer types. val (>>>&): x: int32 -> n: int32 -> int32 - val notlazy: v: 'a -> Lazy<'a> + val notlazy: v: 'a -> InterruptibleLazy<'a> + + val (|InterruptibleLazy|): l: InterruptibleLazy<'T> -> 'T + + val (|RecoverableException|_|): exn: Exception -> Exception voption val inline isNil: l: 'a list -> bool @@ -72,19 +90,14 @@ module internal PervasiveAutoOpens = val notFound: unit -> 'a -#if FABLE_COMPILER -type internal InlineDelayInit<'T when 'T: not struct> = - new: f:(unit -> 'T) -> InlineDelayInit<'T> - member Value: 'T -#else -[] -type internal InlineDelayInit<'T when 'T: not struct> = +[] +type DelayInitArrayMap<'T, 'TDictKey, 'TDictValue> = + new: f: (unit -> 'T[]) -> DelayInitArrayMap<'T, 'TDictKey, 'TDictValue> - new: f: (unit -> 'T) -> InlineDelayInit<'T> - val mutable store: 'T - val mutable func: Func<'T> - member Value: 'T -#endif + member GetArray: unit -> 'T[] + member GetDictionary: unit -> IDictionary<'TDictKey, 'TDictValue> + + abstract CreateDictionary: 'T[] -> IDictionary<'TDictKey, 'TDictValue> module internal Order = @@ -381,65 +394,6 @@ module internal ResultOrException = val otherwise: f: (unit -> ResultOrException<'a>) -> x: ResultOrException<'a> -> ResultOrException<'a> -[] -type internal ValueOrCancelled<'TResult> = - | Value of result: 'TResult - | Cancelled of ``exception``: OperationCanceledException - -/// Represents a synchronous, cold-start, cancellable computation with explicit representation of a cancelled result. -/// -/// A cancellable computation may be cancelled via a CancellationToken, which is propagated implicitly. -/// If cancellation occurs, it is propagated as data rather than by raising an OperationCanceledException. -[] -type internal Cancellable<'T> = Cancellable of (CancellationToken -> ValueOrCancelled<'T>) - -module internal Cancellable = - - /// Run a cancellable computation using the given cancellation token - val inline run: ct: CancellationToken -> Cancellable<'T> -> ValueOrCancelled<'T> - - val fold: f: ('State -> 'T -> Cancellable<'State>) -> acc: 'State -> seq: seq<'T> -> Cancellable<'State> - - /// Run the computation in a mode where it may not be cancelled. The computation never results in a - /// ValueOrCancelled.Cancelled. - val runWithoutCancellation: comp: Cancellable<'T> -> 'T - - /// Bind the cancellation token associated with the computation - val token: unit -> Cancellable - - val toAsync: Cancellable<'T> -> Async<'T> - -type internal CancellableBuilder = - - new: unit -> CancellableBuilder - - member inline BindReturn: comp: Cancellable<'T> * [] k: ('T -> 'U) -> Cancellable<'U> - - member inline Bind: comp: Cancellable<'T> * [] k: ('T -> Cancellable<'U>) -> Cancellable<'U> - - member inline Combine: comp1: Cancellable * comp2: Cancellable<'T> -> Cancellable<'T> - - member inline Delay: [] f: (unit -> Cancellable<'T>) -> Cancellable<'T> - - member inline Return: v: 'T -> Cancellable<'T> - - member inline ReturnFrom: v: Cancellable<'T> -> Cancellable<'T> - - member inline TryFinally: comp: Cancellable<'T> * [] compensation: (unit -> unit) -> Cancellable<'T> - - member inline TryWith: - comp: Cancellable<'T> * [] handler: (exn -> Cancellable<'T>) -> Cancellable<'T> - - member inline Using: - resource: 'Resource * [] comp: ('Resource -> Cancellable<'T>) -> Cancellable<'T> - when 'Resource :> IDisposable - - member inline Zero: unit -> Cancellable - -[] -module internal CancellableAutoOpens = - val cancellable: CancellableBuilder - /// Generates unique stamps type internal UniqueStampGenerator<'T when 'T: equality> = diff --git a/src/fcs-fable/src/Compiler/Utilities/lib.fs b/src/fcs-fable/src/Compiler/Utilities/lib.fs index e61d9a8fd1..65456ef7ec 100755 --- a/src/fcs-fable/src/Compiler/Utilities/lib.fs +++ b/src/fcs-fable/src/Compiler/Utilities/lib.fs @@ -24,7 +24,7 @@ let isEnvVarSet (s: string) = ignore s; false let GetEnvInteger (e: string) (dflt: int) = ignore e; dflt #else let isEnvVarSet s = - try (Environment.GetEnvironmentVariable(s) <> null) with _ -> false + try not(isNull(Environment.GetEnvironmentVariable s)) with _ -> false let GetEnvInteger e dflt = match Environment.GetEnvironmentVariable(e) with null -> dflt | t -> try int t with _ -> dflt #endif @@ -390,7 +390,7 @@ type Dumper(x:obj) = [] type MaybeLazy<'T> = | Strict of 'T - | Lazy of Lazy<'T> + | Lazy of InterruptibleLazy<'T> member this.Value: 'T = match this with diff --git a/src/fcs-fable/src/Compiler/Utilities/lib.fsi b/src/fcs-fable/src/Compiler/Utilities/lib.fsi index 9fc282c007..2db164157a 100644 --- a/src/fcs-fable/src/Compiler/Utilities/lib.fsi +++ b/src/fcs-fable/src/Compiler/Utilities/lib.fsi @@ -252,7 +252,7 @@ val inline tryGetCacheValue: cache: cache<'a> -> NonNullSlot<'a> voption [] type MaybeLazy<'T> = | Strict of 'T - | Lazy of System.Lazy<'T> + | Lazy of InterruptibleLazy<'T> member Force: unit -> 'T member Value: 'T diff --git a/src/fcs-fable/src/Compiler/Utilities/range.fs b/src/fcs-fable/src/Compiler/Utilities/range.fs index 8ac3503851..0af81a95ca 100755 --- a/src/fcs-fable/src/Compiler/Utilities/range.fs +++ b/src/fcs-fable/src/Compiler/Utilities/range.fs @@ -474,10 +474,9 @@ module Range = let unionRanges (m1: range) (m2: range) = if m1.FileIndex <> m2.FileIndex then m2 - else + else if - // If all identical then return m1. This preserves NotedSourceConstruct when no merging takes place - if + // If all identical then return m1. This preserves NotedSourceConstruct when no merging takes place m1.Code1 = m2.Code1 && m1.Code2 = m2.Code2 then m1 @@ -566,20 +565,23 @@ module Range = let mkFirstLineOfFile (file: string) = #if !FABLE_COMPILER try - let lines = FileSystem.OpenFileForReadShim(file).ReadLines() |> Seq.indexed + if not (FileSystem.FileExistsShim file) then + mkRange file (mkPos 1 0) (mkPos 1 80) + else + let lines = FileSystem.OpenFileForReadShim(file).ReadLines() |> Seq.indexed - let nonWhiteLine = - lines |> Seq.tryFind (fun (_, s) -> not (String.IsNullOrWhiteSpace s)) + let nonWhiteLine = + lines |> Seq.tryFind (fun (_, s) -> not (String.IsNullOrWhiteSpace s)) - match nonWhiteLine with - | Some (i, s) -> mkRange file (mkPos (i + 1) 0) (mkPos (i + 1) s.Length) - | None -> + match nonWhiteLine with + | Some(i, s) -> mkRange file (mkPos (i + 1) 0) (mkPos (i + 1) s.Length) + | None -> - let nonEmptyLine = lines |> Seq.tryFind (fun (_, s) -> not (String.IsNullOrEmpty s)) + let nonEmptyLine = lines |> Seq.tryFind (fun (_, s) -> not (String.IsNullOrEmpty s)) - match nonEmptyLine with - | Some (i, s) -> mkRange file (mkPos (i + 1) 0) (mkPos (i + 1) s.Length) - | None -> mkRange file (mkPos 1 0) (mkPos 1 80) + match nonEmptyLine with + | Some(i, s) -> mkRange file (mkPos (i + 1) 0) (mkPos (i + 1) s.Length) + | None -> mkRange file (mkPos 1 0) (mkPos 1 80) with _ -> #endif //!FABLE_COMPILER mkRange file (mkPos 1 0) (mkPos 1 80) diff --git a/src/fcs-fable/src/Compiler/Utilities/rational.fs b/src/fcs-fable/src/Compiler/Utilities/rational.fs index 13aca52dd6..083135a481 100644 --- a/src/fcs-fable/src/Compiler/Utilities/rational.fs +++ b/src/fcs-fable/src/Compiler/Utilities/rational.fs @@ -26,7 +26,7 @@ let mkRational p q = let p, q = if q > BigInteger.Zero then p, q else -p, -q - in + in { numerator = p; denominator = q } diff --git a/src/fcs-fable/src/Compiler/Utilities/sformat.fs b/src/fcs-fable/src/Compiler/Utilities/sformat.fs index deffadf488..a7c54db543 100644 --- a/src/fcs-fable/src/Compiler/Utilities/sformat.fs +++ b/src/fcs-fable/src/Compiler/Utilities/sformat.fs @@ -95,20 +95,20 @@ type Layout = member layout.JuxtapositionLeft = match layout with - | ObjLeaf (jl, _, _) -> jl - | Leaf (jl, _, _) -> jl - | Node (left, _, _) -> left.JuxtapositionLeft - | Attr (_, _, subLayout) -> subLayout.JuxtapositionLeft + | ObjLeaf(jl, _, _) -> jl + | Leaf(jl, _, _) -> jl + | Node(left, _, _) -> left.JuxtapositionLeft + | Attr(_, _, subLayout) -> subLayout.JuxtapositionLeft static member JuxtapositionMiddle(left: Layout, right: Layout) = left.JuxtapositionRight || right.JuxtapositionLeft member layout.JuxtapositionRight = match layout with - | ObjLeaf (_, _, jr) -> jr - | Leaf (_, _, jr) -> jr - | Node (_, right, _) -> right.JuxtapositionRight - | Attr (_, _, subLayout) -> subLayout.JuxtapositionRight + | ObjLeaf(_, _, jr) -> jr + | Leaf(_, _, jr) -> jr + | Node(_, right, _) -> right.JuxtapositionRight + | Attr(_, _, subLayout) -> subLayout.JuxtapositionRight [] type IEnvironment = @@ -279,15 +279,15 @@ module Layout = let isEmptyL layout = match layout with - | Leaf (true, s, true) -> s.Text = "" + | Leaf(true, s, true) -> s.Text = "" | _ -> false #if COMPILER let rec endsWithL (text: string) layout = match layout with - | Leaf (_, s, _) -> s.Text.EndsWith(text) - | Node (_, r, _) -> endsWithL text r - | Attr (_, _, l) -> endsWithL text l + | Leaf(_, s, _) -> s.Text.EndsWith(text) + | Node(_, r, _) -> endsWithL text r + | Attr(_, _, l) -> endsWithL text l | ObjLeaf _ -> false #endif @@ -365,7 +365,7 @@ module Layout = match layouts with | [] -> emptyL | [ x ] -> x - | x :: ys -> List.fold (fun pre y -> pre @@ y) x ys + | x :: ys -> List.fold (@@) x ys let optionL selector value = match value with @@ -374,7 +374,8 @@ module Layout = let listL selector value = leftL leftBracket - ^^ sepListL (sepL semicolon) (List.map selector value) ^^ rightL rightBracket + ^^ sepListL (sepL semicolon) (List.map selector value) + ^^ rightL rightBracket let squareBracketL layout = leftL leftBracket ^^ layout ^^ rightL rightBracket @@ -390,7 +391,7 @@ module Layout = else match project z with | None -> [] // exhausted input - | Some (x, z) -> + | Some(x, z) -> if n <= 0 then [ wordL (tagPunctuation "...") ] // hit print_length limit else @@ -560,7 +561,7 @@ module ReflectUtils = // statically-known type information to aid in the // analysis of null values. - let GetValueInfo bindingFlags (x: 'a, ty: Type) (* x could be null *) = + let GetValueInfo bindingFlags (x: 'a, ty: Type) (* x could be null *) = let obj = (box x) match obj with @@ -625,7 +626,7 @@ module Display = let chunkN = 400 let breaks0 () = Breaks(0, 0, Array.create chunkN 0) - let pushBreak saving (Breaks (next, outer, stack)) = + let pushBreak saving (Breaks(next, outer, stack)) = let stack = if next = stack.Length then Array.init (next + chunkN) (fun i -> if i < next then stack[i] else 0) // expand if full @@ -635,7 +636,7 @@ module Display = stack[next] <- saving Breaks(next + 1, outer, stack) - let popBreak (Breaks (next, outer, stack)) = + let popBreak (Breaks(next, outer, stack)) = if next = 0 then raise (Failure "popBreak: underflow") @@ -646,7 +647,7 @@ module Display = let next = next - 1 Breaks(next, outer, stack), topBroke - let forceBreak (Breaks (next, outer, stack)) = + let forceBreak (Breaks(next, outer, stack)) = if outer = next then // all broken None @@ -677,13 +678,13 @@ module Display = let breaks, layout, pos, offset = match layout with - | Attr (tag, attrs, l) -> + | Attr(tag, attrs, l) -> let breaks, layout, pos, offset = fit breaks (pos, l) let layout = Attr(tag, attrs, layout) breaks, layout, pos, offset - | Leaf (jl, text, jr) - | ObjLeaf (jl, ObjToTaggedText text, jr) -> + | Leaf(jl, text, jr) + | ObjLeaf(jl, ObjToTaggedText text, jr) -> // save the formatted text from the squash let layout = Leaf(jl, text, jr) let textWidth = length text @@ -694,13 +695,13 @@ module Display = else match forceBreak breaks with | None -> breaks, layout, pos + textWidth, textWidth // tough, no more breaks - | Some (breaks, saving) -> + | Some(breaks, saving) -> let pos = pos - saving fitLeaf breaks pos fitLeaf breaks pos - | Node (l, r, joint) -> + | Node(l, r, joint) -> let jm = Layout.JuxtapositionMiddle(l, r) let mid = if jm then 0 else 1 @@ -763,19 +764,19 @@ module Display = // addL: pos is tab level let rec addL z pos layout = match layout with - | ObjLeaf (_, obj, _) -> + | ObjLeaf(_, obj, _) -> let text = leafFormatter obj addText z text - | Leaf (_, obj, _) -> addText z obj.Text + | Leaf(_, obj, _) -> addText z obj.Text - | Node (l, r, Broken indent) when not (opts.PrintWidth = 0) -> + | Node(l, r, Broken indent) when opts.PrintWidth <> 0 -> let z = addL z pos l let z = newLine z (pos + indent) let z = addL z (pos + indent) r z - | Node (l, r, _) -> + | Node(l, r, _) -> let jm = Layout.JuxtapositionMiddle(l, r) let z = addL z pos l let z = if jm then z else addText z " " @@ -783,7 +784,7 @@ module Display = let z = addL z pos r z - | Attr (_, _, l) -> addL z pos l + | Attr(_, _, l) -> addL z pos l let rstrs, _ = addL z0 0 layout extract rstrs @@ -809,23 +810,23 @@ module Display = // addL: pos is tab level let rec addL z pos layout = match layout with - | ObjLeaf (_, obj, _) -> + | ObjLeaf(_, obj, _) -> let text = leafFormatter obj addText z text - | Leaf (_, obj, _) -> addText z obj - | Node (l, r, Broken indent) -> + | Leaf(_, obj, _) -> addText z obj + | Node(l, r, Broken indent) -> let z = addL z pos l let z = newLine z (pos + indent) let z = addL z (pos + indent) r z - | Node (l, r, _) -> + | Node(l, r, _) -> let jm = Layout.JuxtapositionMiddle(l, r) let z = addL z pos l let z = if jm then z else addText z space let pos = index z let z = addL z pos r z - | Attr (tag, attrs, l) -> + | Attr(tag, attrs, l) -> let _ = outAttribute tag attrs true let z = addL z pos l let _ = outAttribute tag attrs false @@ -845,8 +846,8 @@ module Display = | null -> None | _ -> match Value.GetValueInfo bindingFlags (x, ty) with - | UnionCaseValue ("Cons", recd) -> Some(unpackCons recd) - | UnionCaseValue ("Empty", [||]) -> None + | UnionCaseValue("Cons", recd) -> Some(unpackCons recd) + | UnionCaseValue("Empty", [||]) -> None | _ -> failwith "List value had unexpected ValueInfo" let structL = wordL (tagKeyword "struct") @@ -871,7 +872,7 @@ module Display = ^^ (match v with | None -> wordL questionMark | Some xL -> xL) - ^^ (rightL semicolon) + ^^ (rightL semicolon) let braceL xs = (leftL leftBrace) ^^ xs ^^ (rightL rightBrace) @@ -880,11 +881,13 @@ module Display = let makeListL itemLs = (leftL leftBracket) - ^^ sepListL (rightL semicolon) itemLs ^^ (rightL rightBracket) + ^^ sepListL (rightL semicolon) itemLs + ^^ (rightL rightBracket) let makeArrayL xs = (leftL (tagPunctuation "[|")) - ^^ sepListL (rightL semicolon) xs ^^ (rightL (tagPunctuation "|]")) + ^^ sepListL (rightL semicolon) xs + ^^ (rightL (tagPunctuation "|]")) let makeArray2L xs = leftL leftBracket ^^ aboveListL xs ^^ rightL rightBracket @@ -968,6 +971,13 @@ module Display = && (ty.GetGenericTypeDefinition() = typedefof> || ty.GetGenericTypeDefinition() = typedefof>) + let messageRegexLookup = + @"^(?
.*?)(?.*?)(?.*)$"
+        |> System.Text.RegularExpressions.Regex
+
+    let illFormedBracketPatternLookup =
+        @"(? System.Text.RegularExpressions.Regex
+
     // showMode = ShowTopLevelBinding on the outermost expression when called from fsi.exe,
     // This allows certain outputs, e.g. objects that would print as  to be suppressed, etc. See 4343.
     // Calls to layout proper sub-objects should pass showMode = ShowAll.
@@ -1053,8 +1063,6 @@ module Display =
             if isNull txt || txt.Length <= 1 then
                 None
             else
-                let messageRegexPattern = @"^(?
.*?)(?.*?)(?.*)$"
-                let illFormedBracketPattern = @"(?
                                     // make sure we don't have any stray brackets
-                                    let strayClosingMatch =
-                                        System.Text.RegularExpressions.Regex.IsMatch(remaingPropertyText, illFormedBracketPattern)
+                                    let strayClosingMatch = illFormedBracketPatternLookup.IsMatch remaingPropertyText
 
                                     if strayClosingMatch then
                                         None
@@ -1154,7 +1157,8 @@ module Display =
                                             spaceListL (
                                                 List.rev (
                                                     (sepL (tagText preText)
-                                                     ^^ alternativeObjL ^^ sepL (tagText (replaceEscapedBrackets (remaingPropertyText))))
+                                                     ^^ alternativeObjL
+                                                     ^^ sepL (tagText (replaceEscapedBrackets (remaingPropertyText))))
                                                     :: layouts
                                                 )
                                             )
@@ -1172,7 +1176,7 @@ module Display =
             | txs ->
                 leftL leftParen
                 ^^ commaListL (List.map (snd >> nestedObjL depthLim Precedence.BracketIfTuple) txs)
-                   ^^ rightL rightParen
+                ^^ rightL rightParen
 
         and bracketIfL flag basicL =
             if flag then
@@ -1307,7 +1311,8 @@ module Display =
                         rowsL
                     else
                         wordL (tagText ("bound1=" + string_of_int b1))
-                        :: wordL (tagText ("bound2=" + string_of_int b2)) :: rowsL
+                        :: wordL (tagText ("bound2=" + string_of_int b2))
+                        :: rowsL
                 )
             | n -> makeArrayL [ wordL (tagText ("rank=" + string_of_int n)) ]
 
@@ -1459,20 +1464,20 @@ module Display =
                      |> Array.toList
                      |> makePropertiesL)
 
-        and reprL showMode depthLim prec repr x (* x could be null *)  =
+        and reprL showMode depthLim prec repr x (* x could be null *) =
             match repr with
-            | TupleValue (tupleType, vals) -> tupleValueL depthLim prec vals tupleType
+            | TupleValue(tupleType, vals) -> tupleValueL depthLim prec vals tupleType
 
             | RecordValue items -> recordValueL depthLim (Array.toList items)
 
-            | UnionCaseValue (constr, recd) when // x is List. Note: "null" is never a valid list value.
-                x <> null && isListType (x.GetType())
+            | UnionCaseValue(constr, recd) when // x is List. Note: "null" is never a valid list value.
+                (not (isNull x)) && isListType (x.GetType())
                 ->
                 listValueL depthLim constr recd
 
-            | UnionCaseValue (unionCaseName, recd) -> unionCaseValueL depthLim prec unionCaseName (Array.toList recd)
+            | UnionCaseValue(unionCaseName, recd) -> unionCaseValueL depthLim prec unionCaseName (Array.toList recd)
 
-            | ExceptionValue (exceptionType, recd) -> fsharpExceptionL depthLim prec exceptionType (Array.toList recd)
+            | ExceptionValue(exceptionType, recd) -> fsharpExceptionL depthLim prec exceptionType (Array.toList recd)
 
             | FunctionClosureValue closureType -> functionClosureL showMode closureType
 
diff --git a/src/fcs-fable/src/Compiler/Utilities/sr.fs b/src/fcs-fable/src/Compiler/Utilities/sr.fs
index 76b374aa31..b081dfb608 100644
--- a/src/fcs-fable/src/Compiler/Utilities/sr.fs
+++ b/src/fcs-fable/src/Compiler/Utilities/sr.fs
@@ -16,7 +16,7 @@ module internal SR =
                 .Force()
                 .GetString(name, System.Globalization.CultureInfo.CurrentUICulture)
 #if DEBUG
-        if null = s then
+        if isNull s then
             System.Diagnostics.Debug.Assert(false, sprintf "**RESOURCE ERROR**: Resource token %s does not exist!" name)
 #endif
         s
@@ -28,7 +28,7 @@ module internal DiagnosticMessage =
     let mkFunctionValue (tys: System.Type[]) (impl: obj -> obj) =
         FSharpValue.MakeFunction(FSharpType.MakeFunctionType(tys[0], tys[1]), impl)
 
-    let funTyC = typeof obj>.GetGenericTypeDefinition ()
+    let funTyC = typeof obj>.GetGenericTypeDefinition()
 
     let isNamedType (ty: System.Type) =
         not (ty.IsArray || ty.IsByRef || ty.IsPointer)
@@ -98,7 +98,7 @@ module internal DiagnosticMessage =
         // validate that the message string exists
         let fmtString = fmt.Value
 
-        if null = messageString then
+        if isNull messageString then
             System.Diagnostics.Debug.Assert(false, sprintf "**DECLARED MESSAGE ERROR** String resource %s does not exist" messageID)
             messageString <- ""
 
diff --git a/src/fcs-fable/src/Compiler/Utilities/zmap.fs b/src/fcs-fable/src/Compiler/Utilities/zmap.fs
index 03bc085ab8..2c594ed41f 100644
--- a/src/fcs-fable/src/Compiler/Utilities/zmap.fs
+++ b/src/fcs-fable/src/Compiler/Utilities/zmap.fs
@@ -10,7 +10,7 @@ type internal Zmap<'Key, 'T> = Internal.Utilities.Collections.Tagged.Map<'Key, '
 
 module internal Zmap =
 
-    let empty (ord: IComparer<'T>) = Map<_, _, _>.Empty (ord)
+    let empty (ord: IComparer<'T>) = Map<_, _, _>.Empty(ord)
 
     let add k v (m: Zmap<_, _>) = m.Add(k, v)
     let find k (m: Zmap<_, _>) = m[k]
@@ -46,7 +46,7 @@ module internal Zmap =
             []
 
     let ofList ord xs =
-        Internal.Utilities.Collections.Tagged.Map<_, _>.FromList (ord, xs)
+        Internal.Utilities.Collections.Tagged.Map<_, _>.FromList(ord, xs)
 
     let keys (m: Zmap<_, _>) = m.Fold (fun k _ s -> k :: s) []
     let values (m: Zmap<_, _>) = m.Fold (fun _ v s -> v :: s) []
diff --git a/src/fcs-fable/src/Compiler/Utilities/zset.fs b/src/fcs-fable/src/Compiler/Utilities/zset.fs
index cc53d4c700..5127299e03 100644
--- a/src/fcs-fable/src/Compiler/Utilities/zset.fs
+++ b/src/fcs-fable/src/Compiler/Utilities/zset.fs
@@ -11,7 +11,7 @@ type internal Zset<'T> = Internal.Utilities.Collections.Tagged.Set<'T>
 module internal Zset =
 
     let empty (ord: IComparer<'T>) =
-        Internal.Utilities.Collections.Tagged.Set<_, _>.Empty (ord)
+        Internal.Utilities.Collections.Tagged.Set<_, _>.Empty(ord)
 
     let isEmpty (s: Zset<_>) = s.IsEmpty
 
@@ -38,19 +38,19 @@ module internal Zset =
     let subset (s1: Zset<_>) (s2: Zset<_>) = s1.IsSubsetOf s2
 
     let equal (s1: Zset<_>) (s2: Zset<_>) =
-        Internal.Utilities.Collections.Tagged.Set<_, _>.Equality (s1, s2)
+        Internal.Utilities.Collections.Tagged.Set<_, _>.Equality(s1, s2)
 
     let elements (s: Zset<_>) = s.ToList()
 
     let filter predicate (s: Zset<_>) = s.Filter predicate
 
     let union (s1: Zset<_>) (s2: Zset<_>) =
-        Internal.Utilities.Collections.Tagged.Set<_, _>.Union (s1, s2)
+        Internal.Utilities.Collections.Tagged.Set<_, _>.Union(s1, s2)
 
     let inter (s1: Zset<_>) (s2: Zset<_>) =
-        Internal.Utilities.Collections.Tagged.Set<_, _>.Intersection (s1, s2)
+        Internal.Utilities.Collections.Tagged.Set<_, _>.Intersection(s1, s2)
 
     let diff (s1: Zset<_>) (s2: Zset<_>) =
-        Internal.Utilities.Collections.Tagged.Set<_, _>.Difference (s1, s2)
+        Internal.Utilities.Collections.Tagged.Set<_, _>.Difference(s1, s2)
 
     let memberOf m k = contains k m
diff --git a/src/fcs-fable/src/Compiler/lex.fsl b/src/fcs-fable/src/Compiler/lex.fsl
index 755c763a6b..3d8f761d1b 100644
--- a/src/fcs-fable/src/Compiler/lex.fsl
+++ b/src/fcs-fable/src/Compiler/lex.fsl
@@ -997,7 +997,9 @@ rule token (args: LexArgs) (skip: bool) = parse
 
  | "-" { MINUS }
 
- | "~" { RESERVED }
+ | "~"
+     { errorR (Error(FSComp.SR.lexInvalidIdentifier(), lexbuf.LexemeRange))
+       RESERVED }
 
  | ignored_op_char* '*' '*'                    op_char* { checkExprOp lexbuf; INFIX_STAR_STAR_OP(lexeme lexbuf) }
 
diff --git a/src/fcs-fable/src/Compiler/pars.fsy b/src/fcs-fable/src/Compiler/pars.fsy
index a734f1aac4..f72129058f 100644
--- a/src/fcs-fable/src/Compiler/pars.fsy
+++ b/src/fcs-fable/src/Compiler/pars.fsy
@@ -728,7 +728,7 @@ moduleSpfn:
 valSpfn:
   | opt_attributes opt_access VAL opt_attributes opt_inline opt_mutable opt_access nameop opt_explicitValTyparDecls COLON topTypeWithTypeConstraints optLiteralValueSpfn
       { 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), ($6), ($7), ($8), grabXmlDoc(parseState, $1, 1), ($9), ($11), ($12)
+        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)
         if not (isNil attr2) then errorR(Deprecated(FSComp.SR.parsAttributesMustComeBeforeVal(), rhs parseState 4))
         let m =
             rhs2 parseState 1 11
@@ -985,21 +985,23 @@ classMemberSpfn:
        SynMemberSig.Inherit(ty, unionRanges (rhs parseState 1) mInherit) }
 
   | opt_attributes opt_access VAL fieldDecl
-     { let mWhole = rhs2 parseState 1 4
-       if Option.isSome $2 then errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2))
+     { if Option.isSome $2 then
+           errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2))
+       let mStart = rhs parseState 1
        let mVal = rhs parseState 3
-       let (SynField(xmlDoc = xmlDoc)) as field = $4 $1 false mWhole (Some(SynLeadingKeyword.Val mVal))
-       let mWhole = unionRangeWithXmlDoc xmlDoc mWhole
-       SynMemberSig.ValField(field, mWhole) }
+       let leadingKeyword = Some(SynLeadingKeyword.Val mVal)
+       let (SynField(xmlDoc = xmlDoc; range = range)) as field = $4 $1 None mStart leadingKeyword
+       SynMemberSig.ValField(field, range) }
 
   | opt_attributes opt_access STATIC VAL fieldDecl
-     { let mWhole = rhs2 parseState 1 5
-       if Option.isSome $2 then errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2))
+     { if Option.isSome $2 then
+           errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2))
+       let mStart = rhs parseState 1
        let mStatic = rhs parseState 3
        let mVal = rhs parseState 4
-       let (SynField(xmlDoc = xmlDoc)) as field = $5 $1 true mWhole (Some(SynLeadingKeyword.StaticVal(mStatic, mVal)))
-       let mWhole = unionRangeWithXmlDoc xmlDoc mWhole
-       SynMemberSig.ValField(field, mWhole) }
+       let leadingKeyword = Some(SynLeadingKeyword.StaticVal(mStatic, mVal))
+       let (SynField(xmlDoc = xmlDoc; range = range)) as field = $5 $1 (Some mStatic) mStart leadingKeyword
+       SynMemberSig.ValField(field, range) }
 
   | opt_attributes opt_access STATIC typeKeyword tyconSpfn
      { let leadingKeyword = SynTypeDefnLeadingKeyword.StaticType(rhs parseState 3, rhs parseState 4)
@@ -1988,6 +1990,9 @@ classDefnMember:
        if Option.isSome $2 then
            errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2))
        let flags = $3
+       match flags with
+       | _, SynLeadingKeyword.Static(mStatic) -> errorR (Error (FSComp.SR.parsStaticMemberImcompleteSyntax (), mStatic))
+       | _ -> ()
        $4 $2 flags $1 rangeStart }
 
   | opt_attributes opt_access memberFlags recover
@@ -2074,7 +2079,7 @@ classDefnMember:
        let m = unionRanges mWholeBindLhs $7.Range |> unionRangeWithXmlDoc xmlDoc
        let mEquals = rhs parseState 6
        let expr = $7
-       let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat $4], SynInfo.unnamedRetVal), Option.bind snd $5, None)
+       let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat $4], SynInfo.unnamedRetVal), Option.bind snd $5)
        let vis = $2
        let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [$4], vis, rhs parseState 3)
        // Check that 'SynPatForConstructorDecl' matches this correctly
@@ -2090,7 +2095,7 @@ classDefnMember:
        let xmlDoc = grabXmlDoc (parseState, $1, 1)
        let m = unionRanges (rhs parseState 1) mEnd |> unionRangeWithXmlDoc xmlDoc
        let expr = arbExpr ("new1", mEnd.EndRange)
-       let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat $4], SynInfo.unnamedRetVal), Option.bind snd $5, None)
+       let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat $4], SynInfo.unnamedRetVal), Option.bind snd $5)
        let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [$4], $2, rhs parseState 3)
        assert (match declPat with SynPatForConstructorDecl _ -> true | _ -> false)
        let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = None }
@@ -2104,7 +2109,7 @@ classDefnMember:
        let xmlDoc = grabXmlDoc (parseState, $1, 1)
        let m = unionRanges (rhs parseState 1) mEnd |> unionRangeWithXmlDoc xmlDoc
        let expr = arbExpr ("new2", mEnd.EndRange)
-       let valSynData = SynValData(Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat $4], SynInfo.unnamedRetVal), Option.bind snd $5, None)
+       let valSynData = SynValData(Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat $4], SynInfo.unnamedRetVal), Option.bind snd $5)
        let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [$4], $2, rhs parseState 3)
        assert (match declPat with SynPatForConstructorDecl _ -> true | _ -> false)
        let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = None }
@@ -2116,7 +2121,7 @@ classDefnMember:
        let xmlDoc = grabXmlDoc (parseState, $1, 1)
        let pat = patFromParseError (SynPat.Wild(mNew.EndRange))
        let expr = arbExpr ("new3", mNew.EndRange)
-       let valSynData = SynValData(Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat pat], SynInfo.unnamedRetVal), None, None)
+       let valSynData = SynValData(Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat pat], SynInfo.unnamedRetVal), None)
        let vis = $2
        let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [pat], vis, rhs parseState 3)
        let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = None }
@@ -2132,38 +2137,26 @@ classDefnMember:
 valDefnDecl:
   | VAL opt_mutable opt_access ident COLON typ
      { let mVal = rhs parseState 1
-       let mRhs = rhs2 parseState 4 6
        fun rangeStart attribs mStaticOpt ->
-           let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart)
-           [ mkValField mVal mRhs $2 $3 $4 $6 xmlDoc rangeStart attribs mStaticOpt ] }
+           [ mkValField parseState mVal $2 $3 (Some $4) (Some $6) rangeStart attribs mStaticOpt ] }
 
   | VAL opt_mutable opt_access ident COLON recover
      { let mVal = rhs parseState 1
-       let mRhs = rhs2 parseState 4 6
        let mColon = rhs parseState 5
        let ty = SynType.FromParseError(mColon.EndRange)
        fun rangeStart attribs mStaticOpt ->
-           let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart)
-           [ mkValField mVal mRhs $2 $3 $4 ty xmlDoc rangeStart attribs mStaticOpt ] }
+           [ mkValField parseState mVal $2 $3 (Some $4) (Some ty) rangeStart attribs mStaticOpt ] }
 
   | VAL opt_mutable opt_access ident recover
      { let mVal = rhs parseState 1
-       let mRhs = rhs2 parseState 4 6
-       let mColon = rhs parseState 5
-       let ty = SynType.FromParseError(mColon.EndRange)
+       let ty = SynType.FromParseError($4.idRange.EndRange)
        fun rangeStart attribs mStaticOpt ->
-           let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart)
-           [ mkValField mVal mRhs $2 $3 $4 ty xmlDoc rangeStart attribs mStaticOpt ] }
+           [ mkValField parseState mVal $2 $3 (Some $4) (Some ty) rangeStart attribs mStaticOpt ] }
 
   | VAL opt_mutable opt_access recover
      { let mVal = rhs parseState 1
-       let mRhs = rhs2 parseState 4 6
-       let id = mkSynId mVal.EndRange ""
-       let mColon = rhs parseState 5
-       let ty = SynType.FromParseError(mColon.EndRange)
        fun rangeStart attribs mStaticOpt ->
-           let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart)
-           [ mkValField mVal mRhs $2 $3 id ty xmlDoc rangeStart attribs mStaticOpt ] }
+           [ mkValField parseState mVal $2 $3 None None rangeStart attribs mStaticOpt ] }
 
 
 /* An auto-property definition in an object type definition */
@@ -2171,7 +2164,7 @@ autoPropsDefnDecl:
   | VAL opt_mutable opt_access ident opt_typ EQUALS typedSequentialExprBlock classMemberSpfnGetSet
      { let mVal = rhs parseState 1
        let mEquals = rhs parseState 6
-       if $2 then
+       if Option.isSome $2 then
            errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2))
        fun attribs flags rangeStart ->
            let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart)
@@ -2184,7 +2177,7 @@ autoPropsDefnDecl:
            | Some t -> t.Range
            | _ -> $4.idRange
        let expr = arbExpr ("autoProp1", mEnd.EndRange)
-       if $2 then
+       if Option.isSome $2 then
            errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2))
        fun attribs flags rangeStart ->
            let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart)
@@ -2197,7 +2190,7 @@ autoPropsDefnDecl:
            | Some t -> t.Range
            | _ -> $4.idRange
        let expr = arbExpr ("autoProp2", mEnd.EndRange)
-       if $2 then
+       if Option.isSome $2 then
            errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2))
        fun attribs flags rangeStart ->
            let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart)
@@ -2207,7 +2200,7 @@ autoPropsDefnDecl:
      { let mVal = rhs parseState 1
        let id = mkSynId mVal.EndRange ""
        let expr = arbExpr ("autoProp3", mVal.EndRange)
-       if $2 then
+       if Option.isSome $2 then
            errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2))
        fun attribs flags rangeStart ->
            let xmlDoc = grabXmlDocAtRangeStart(parseState, attribs, rangeStart)
@@ -2461,6 +2454,10 @@ braceFieldDeclList:
   | LBRACE error rbrace
      { [] }
 
+  | LBRACE rbrace
+     { errorR (Error(FSComp.SR.parsExpectingField(), rhs parseState 2))
+       [] }
+
 anonRecdType:
     | STRUCT braceBarFieldDeclListCore
         { $2, true }
@@ -2833,8 +2830,8 @@ recdFieldDeclList:
 /* A field declaration in a record type */
 recdFieldDecl:
   | opt_attributes fieldDecl
-     { let mWhole = rhs2 parseState 1 2
-       let fld = $2 $1 false mWhole None
+     { let rangeStart = rhs parseState 1
+       let fld = $2 $1 None rangeStart None
        let (SynField (a, b, c, d, e, xmlDoc, vis, mWhole, trivia)) = fld
        if Option.isSome vis then errorR (Error (FSComp.SR.parsRecordFieldsCannotHaveVisibilityDeclarations (), rhs parseState 2))
        let mWhole = unionRangeWithXmlDoc xmlDoc mWhole
@@ -2843,14 +2840,19 @@ recdFieldDecl:
 /* Part of a field or val declaration in a record type or object type */
 fieldDecl:
   | opt_mutable opt_access ident COLON typ
-     { mkSynField parseState (Some $3) $5 $1 $2 }
+     { mkSynField parseState (Some $3) (Some $5) $1 $2 }
+
   | opt_mutable opt_access ident COLON recover
      { let mColon = rhs parseState 4
        let t = SynType.FromParseError(mColon.EndRange)
-       mkSynField parseState (Some $3) t $1 $2 }
+       mkSynField parseState (Some $3) (Some t) $1 $2 }
+
   | opt_mutable opt_access ident recover
      { let t = SynType.FromParseError($3.idRange.EndRange)
-       mkSynField parseState (Some $3) t $1 $2 }
+       mkSynField parseState (Some $3) (Some t) $1 $2 }
+
+  | opt_mutable opt_access recover
+     { mkSynField parseState None None $1 $2 }
 
 /* An exception definition */
 exconDefn:
@@ -3192,7 +3194,7 @@ localBinding:
             let spBind = if IsDebugPointBinding bindingPat expr then DebugPointAtBinding.Yes mWhole else DebugPointAtBinding.NoneAtLet
             let mWholeBindLhs = (mBindLhs, attrs) ||> unionRangeWithListBy (fun (a: SynAttributeList) -> a.Range)
             let trivia: SynBindingTrivia = { LeadingKeyword = leadingKeyword; InlineKeyword = $1; EqualsRange = Some mEquals }
-            mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome $1, $2, mWholeBindLhs, spBind, optReturnType, expr, mRhs, opts, attrs, None, trivia))
+            mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome $1, Option.isSome $2, mWholeBindLhs, spBind, optReturnType, expr, mRhs, opts, attrs, None, trivia))
         localBindingRange, localBindingBuilder }
 
   | opt_inline opt_mutable bindingPattern opt_topReturnTypeWithTypeConstraints EQUALS error
@@ -3207,7 +3209,7 @@ localBinding:
             let rhsExpr = arbExpr ("localBinding1", zeroWidthAtEnd)
             let spBind = if IsDebugPointBinding bindingPat rhsExpr then DebugPointAtBinding.Yes mWhole else DebugPointAtBinding.NoneAtLet
             let trivia: SynBindingTrivia = { LeadingKeyword = leadingKeyword; InlineKeyword = $1; EqualsRange = Some mEquals }
-            mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome $1, $2, mBindLhs, spBind, optReturnType, rhsExpr, mRhs, [], attrs, None, trivia))
+            mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome $1, Option.isSome $2, mBindLhs, spBind, optReturnType, rhsExpr, mRhs, [], attrs, None, trivia))
         mWhole, localBindingBuilder }
 
   | opt_inline opt_mutable bindingPattern opt_topReturnTypeWithTypeConstraints recover
@@ -3221,7 +3223,7 @@ localBinding:
             let spBind = DebugPointAtBinding.Yes(unionRanges leadingKeyword.Range mRhs)
             let trivia = { LeadingKeyword = leadingKeyword; InlineKeyword = $1; EqualsRange = None }
             let rhsExpr = arbExpr ("localBinding2", mRhs)
-            mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome $1, $2, mBindLhs, spBind, optReturnType, rhsExpr, mRhs, [], attrs, None, trivia))
+            mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome $1, Option.isSome $2, mBindLhs, spBind, optReturnType, rhsExpr, mRhs, [], attrs, None, trivia))
         mWhole, localBindingBuilder }
 
 /* A single expression with an optional type annotation, and an optional static optimization block */
@@ -4884,16 +4886,29 @@ atomicExpr:
         let expr, hpa = $3
         let trivia: SynExprDotLambdaTrivia = { UnderscoreRange = mUnderscore ; DotRange = mDot  }
         SynExpr.DotLambda(expr, unionRanges mUnderscore  expr.Range, trivia), false }
+        
 
-  | UNDERSCORE DOT appExpr recover %prec dot_lambda
-      { let mUnderscore  = rhs parseState 1
-        let mDot  = rhs parseState 2
-        parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AccessorFunctionShorthand (unionRanges mUnderscore  mDot )
-        reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnderScoreDotLambdaNonAtomic())
-        let expr = $3
+  | UNDERSCORE DOT recover %prec dot_lambda
+      { let mUnderscore = rhs parseState 1
+        let mDot = rhs parseState 2
+        let mWhole = unionRanges mUnderscore mDot
+        parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AccessorFunctionShorthand mWhole
+
+        let mExpr = mDot.EndRange
+        if not $3 then reportParseErrorAt mDot (FSComp.SR.parsUnexpectedEndOfFileExpression())
+
+        let expr = arbExpr ("dotLambda1", mExpr)
         let trivia: SynExprDotLambdaTrivia = { UnderscoreRange = mUnderscore ; DotRange = mDot  }
-        SynExpr.DotLambda(expr, unionRanges mUnderscore  expr.Range, trivia), false }    
-        
+        SynExpr.DotLambda(expr, mWhole, trivia), false }
+
+  | UNDERSCORE recover %prec dot_lambda
+      { 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 }
+
   | atomicExpr HIGH_PRECEDENCE_BRACK_APP atomicExpr
       { let arg1, _ = $1
         let arg2, hpa = $3
@@ -6701,8 +6716,8 @@ opt_inline:
   | /* EMPTY */ { None }
 
 opt_mutable:
-  | MUTABLE { true }
-  | /* EMPTY */ { false }
+  | MUTABLE { Some(rhs parseState 1) }
+  | /* EMPTY */ { None }
 
 /* A 'do' token in either #light or non-#light */
 doToken:
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.cs.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.cs.xlf
index 3dde918f6f..07cccc5618 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.cs.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.cs.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        Interpolovaný řetězec obsahuje netypové identifikátory. Doporučuje se přidat specifikátory zadaného formátu.
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        Tento výraz je anonymní záznam, použijte {{|...|}} místo {{...}}.
         
       
       
@@ -82,6 +82,11 @@
         Pokud typ používá atributy [<Sealed>] i [<AbstractClass>], znamená to, že je statický. Implementace rozhraní není povolena.
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         Použití := z knihovny F# je zastaralé. Více informací: https://aka.ms/fsharp-refcell-ops. Změňte prosím například cell := expr na cell.Value <- expr.
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        Člen nebo funkce „{0}“ má atribut „TailCallAttribute“, ale nepoužívá se koncovým (tail) rekurzivním způsobem.
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        Omezení „unmanaged“ a „not struct“ jsou nekonzistentní
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        zkrácený tvar podtržítka pouze pro funkci přístupový objekt
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        Vyvolá upozornění, pokud člen nebo funkce má atribut „TailCall“, ale nepoužívá se koncovým (tail) rekurzivním způsobem.
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        Průnik omezení u flexibilních typů
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        rozšířené pevné vazby pro byref a GetPinnableReference
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        Rozšířená interpolace řetězců podobná nezpracovaným řetězcovým literálům jazyka C#.
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        Vylepšené názvy implikovaných argumentů
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        Diagnostika 3559 (upozornit při odvození objektu) na informační úrovni, vypnuto ve výchozím nastavení
         
       
       
@@ -397,9 +417,14 @@
         správa balíčků
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        preferovat String.GetPinnableReference v pevných vazbách
         
       
       
@@ -437,6 +462,11 @@
         obnovitelné stavové stroje
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         omezení vlastního typu
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        Povolit vazby statického let v typech union, record, struct a non-incremental-class
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        Vyvolává chyby při nesprávném odsazení, umožňuje lepší obnovení a analýzu během úprav
         
       
       
@@ -472,6 +502,11 @@
         reprezentace struktury aktivních vzorů
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         Podpora try-with ve výrazech pořadí
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        Interoperabilita mezi neřízeným obecným omezením jazyka C# a F# (emitovat další modreq)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        Vyvolá upozornění, pokud bylo během překladu názvů nalezeno více shod typu záznamu z důvodu překrývajících se názvů polí.
         
       
       
         'while!' expression
-        'while!' expression
+        Výraz „while!“
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        Používá se ve výpočtových výrazech pro zavedení konstrukce smyčky, kde podmínka je výsledkem jiného výpočtového výrazu.
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        Rozšířená interpolace řetězců není v této verzi jazyka F# podporována.
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        Toto není platný identifikátor
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        Interpolovaný řetězcový literál s trojitými uvozovkami nezačíná dostatečným počtem znaků „$“, aby bylo možné jako obsah použít tolik po sobě jdoucích otevíracích závorek.
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        Interpolovaný řetězcový literál s trojitými uvozovkami nezačíná dostatečným počtem znaků „$“, aby bylo možné použít tolik po sobě jdoucích znaků „%“.
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        Interpolovaný řetězec obsahuje nespárované složené závorky.
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        Přepsat pravidla odsazení implikovaná verzí jazyka
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        Syntaxi průniku omezení lze použít pouze s flexibilními typy, například „#IDisposable a #ISomeInterface“.
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+        Byl očekáván výraz.
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        Očekává se vzorek.
         
       
       
         Expecting type
-        Expecting type
+        Očekává se typ
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        Chybí klíčové slovo „{0}“
         
       
       
         Expecting member body
-        Expecting member body
+        Očekává se text člena
         
       
       
         Missing union case name
-        Missing union case name
+        Chybí název případu sjednocení
         
       
       
@@ -912,9 +957,9 @@
         Tento přístup člena je nejednoznačný. Při vytváření objektu použijte závorky, např. (new SomeType(args)).MemberName'
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        Nově přidaný stav pickle nejde použít v FSharp.Core, protože musí fungovat i ve starších kompilátorech a nástrojích. Časové okno je nejméně 3 roky po zavedení funkce. Porušení: {0}. Kontext: \n {1} 
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (Navržený název)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        Význam _ je tady nejednoznačný. Nelze ho použít pro proměnnou typu discard a zkratku funkce ve stejném oboru.
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        Tento anonymní záznam by měl mít pole {0}, ale tady má pole {1}.
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        Tento anonymní záznam by měl mít pole {0}, ale tady má pole „{1}“.
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        V tomto anonymním záznamu chybí pole {0}.
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        Tento anonymní záznam obsahuje další pole. Odebrat pole {0}.
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        Tento anonymní záznam by měl mít pole „{0}“, ale tady má pole {1}.
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        Tento anonymní záznam by měl mít pole „{0}“, ale tady má pole „{1}“.
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        V tomto anonymním záznamu chybí pole „{0}“.
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        Tento anonymní záznam obsahuje další pole. Odebrat pole „{0}“.
         
       
       
@@ -1112,6 +1157,11 @@
         Tento výraz záznamu kopírování a aktualizace mění všechna pole typu záznamu '{0}'. Zvažte použití syntaxe konstrukce záznamu.
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         Syntaxe expr1[expr2] se používá pro indexování. Pokud chcete povolit indexování, zvažte možnost přidat anotaci typu, nebo pokud voláte funkci, přidejte mezeru, třeba expr1 [expr2].
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        Pole „{0}“ se v tomto výrazu nebo vzoru záznamu zobrazuje vícekrát
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        Bylo nalezeno více shod typů:\n{0}\nTyp „{1}“ byl použit. Vzhledem k překrývajícím se názvům polí\n{2}\nzvažte použití poznámek typu nebo změňte pořadí otevřených příkazů.
         
       
       
@@ -1247,6 +1297,16 @@
         Použití metod s atributem NoEagerConstraintApplicationAttribute vyžaduje /langversion:6.0 nebo novější.
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         Tento výraz podporuje indexování, třeba expr.[index]. Syntaxe expr[index] vyžaduje /langversion:preview. Více informací: https://aka.ms/fsharp-index-notation
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        Toto přepsání přebírá řazenou kolekci členů místo více argumentů. Zkuste do definice metody přidat další vrstvu závorek, např. member _. Foo((x, y)) nebo odeberte závorky v deklaraci abstraktní metody (např. 'abstract member Foo: 'a * 'b -> 'c').
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        Konstrukt „let! ... and! ...“ se dá použít jen v případě, že tvůrce výpočetních výrazů definuje buď metodu „{0}“, nebo vhodné metody „MergeSource“ a „Bind“.
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        Statické vazby nelze přidat do rozšíření extrinsic. Zvažte použití „statického člena“.
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        Neočekávaný typ funkce v definici pole případu sjednocení. Pokud chcete, aby pole bylo funkcí, zvažte zabalení signatury funkce závorkami, např. | Případ a -> b na | případ (a -> b).
         
       
       
@@ -1552,6 +1617,11 @@
         Zvažte použití parametru return! namísto return.
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         Kompilátor F# aktuálně nepodporuje tento atribut. Jeho použití nebude mít zamýšlený účinek.
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        Nerozpoznaná možnost:{0} K získání informací o rozpoznaných možnostech příkazového řádku použijte „--help“.
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        Pokud je zadána viditelnost vlastnosti, nastavení viditelnosti metody set nebo get není povoleno.
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        Pro F#7 a nižší se definice statických hodnot dají použít jenom v typech s primárním konstruktorem ('type X(args) = ...'). Pokud je chcete povolit ve všech ostatních typech, použijte jazykovou verzi „preview“.
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        Je možné, že máte nesprávné odsazení: tento token leží mimo odsazení kontextu, který začíná na pozici {0}. Zkuste tento token odsadit víc nebo použijte standardní konvence formátování.
+        Neočekávaná syntaxe nebo možné nesprávné odsazení: Tento token je mimo kontext spuštěný na pozici {0}. Zkuste toto odsazení ještě více odsadit.\nPokud chcete dál používat neodpovídající odsazení, předejte kompilátoru příznak '--strict-indentation-' nebo nastavte jazykovou verzi na F# 7.
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        Neplatné použití „fixed“. Výraz „fixed“ se dá použít jenom v deklaraci ve formátu „use x = fixed expr“, kde výraz je jedna z těchto věcí: pole, adresa elementu pole, řetězec, byref, inref nebo typ implementující GetPinnableReference().
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Klíč správce balíčků „{0}“ nebyl v {1} zaregistrován. Aktuálně zaregistrováno: {2}. Další informace o rozšířeních najdete tady: https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.de.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.de.xlf
index 623d248e74..d9def2b9c6 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.de.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.de.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        Die interpolierte Zeichenfolge enthält nicht typisierte Bezeichner. Das Hinzufügen typisierter Formatbezeichner wird empfohlen.
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        Dieser Ausdruck ist ein anonymer Datensatz. Verwenden Sie {{|...|}} anstelle von {{...}}.
         
       
       
@@ -82,6 +82,11 @@
         Wenn ein Typ sowohl das Attribute [<Sealed>] wie auch [<AbstractClass>] verwendet, bedeutet dies, dass er statisch ist. Das Implementieren von Schnittstellen ist nicht zulässig.
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         Die Verwendung von ":=" aus der F#-Bibliothek ist veraltet. Siehe https://aka.ms/fsharp-refcell-ops. Ändern Sie z. B. "cell := expr" in "cell.Value <- expr".
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        Der Member oder die Funktion "{0}" weist das Attribut "TailCallAttribute" auf, wird jedoch nicht endrekursiv verwendet.
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        Die Einschränkungen "unmanaged" und "not struct" sind nicht konsistent.
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        Unterstrich-Punkt-Kurzschreibweise für Accessorfunktion
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        Löst Warnungen aus, wenn ein Member oder eine Funktion das Attribut "TailCall" aufweist, aber nicht endrekursiv verwendet wird.
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        Einschränkungsüberschneidung für flexible Typen
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        Erweiterte feste Bindungen für byref und GetPinnableReference
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        Erweiterte Zeichenfolgeninterpolation ähnlich wie bei C#-Rohzeichenfolgenliteralen.
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        Verbesserte implizite Argumentnamen
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        Diagnose 3559 (bei abgeleitetem Objekt warnen) auf Informationsebene, standardmäßig deaktiviert
         
       
       
@@ -397,9 +417,14 @@
         Paketverwaltung
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        String.GetPinnableReference in festen Bindungen bevorzugen
         
       
       
@@ -437,6 +462,11 @@
         Fortsetzbarer Zustand-Maschinen
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         Selbsttypeinschränkungen
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        Statische let-Bindungen in den Typen "union", "record", "struct" und "non-incremental-class" zulassen
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        Löst Fehler bei fehlerhaftem Einzug aus und ermöglicht eine bessere Wiederherstellung und Analyse während der Bearbeitung.
         
       
       
@@ -472,6 +502,11 @@
         Strukturdarstellung für aktive Muster
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         Unterstützung für "try-with" in Sequenzausdrücken
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        Interop zwischen nicht verwalteter generischer Einschränkung in C# und F# (zusätzlicher ModReq ausgeben)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        Löst Warnungen aus, wenn bei der Namensauflösung aufgrund überlappender Feldnamen mehrere Datensatztypüberstimmungen gefunden wurden.
         
       
       
         'while!' expression
-        'while!' expression
+        while!-Ausdruck
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        Wird in Berechnungsausdrücken zum Bereitstellen eines Schleifenkonstrukts verwendet, bei dem die Bedingung das Ergebnis eines anderen Berechnungsausdrucks ist.
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        Die erweiterte Zeichenfolgeninterpolation wird in dieser Version von F# nicht unterstützt.
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        Dies ist kein gültiger Bezeichner.
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        Das interpolierte Zeichenfolgenliteral mit dreifachen Anführungszeichen beginnt nicht mit genügend $-Zeichen, um so viele aufeinanderfolgende öffnende geschweifte Klammern als Inhalt zuzulassen.
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        Das interpolierte Zeichenfolgenliteral mit dreifachen Anführungszeichen beginnt nicht mit genügend $-Zeichen, um so viele aufeinanderfolgende %-Zeichen zuzulassen.
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        Die interpolierte Zeichenfolge enthält schließende geschweifte Klammern ohne Entsprechung.
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        Von der Sprachversion implizierte Einzugsregeln überschreiben
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        Die Einschränkungsüberschneidungssyntax kann nur mit flexiblen Typen verwendet werden, z. B. "#IDisposable & #ISomeInterface".
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+        Ausdruck wird erwartet
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        Muster wird erwartet
         
       
       
         Expecting type
-        Expecting type
+        Typ wird erwartet
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        Schlüsselwort "{0}" fehlt.
         
       
       
         Expecting member body
-        Expecting member body
+        Membertext wird erwartet
         
       
       
         Missing union case name
-        Missing union case name
+        Fehlender Union-Fallname
         
       
       
@@ -912,9 +957,9 @@
         Dieser Memberzugriff ist mehrdeutig. Setzen Sie Klammern um die Objekterstellung, z. B. "(new SomeType(args)). MemberName“
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        Der neu hinzugefügte Pickle-Zustand kann in FSharp.Core nicht verwendet werden, weil er auch in älteren Compilern und Tools funktionieren muss. Das Zeitfenster umfasst mindestens 3 Jahre nach der Featureeinführung. Verstoß: {0}. Kontext: \n {1} 
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (Empfohlener Name)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        Die Bedeutung von "_" ist hier mehrdeutig. Dieses Zeichen kann nicht in demselben Bereich für eine verworfene Variable und ein Funktionskürzel verwendet werden.
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        Dieser anonyme Datensatz muss folgende Felder aufweisen: {0}. Vorhandene Felder: {1}.
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        Dieser anonyme Datensatz muss folgende Felder aufweisen: {0}. Vorhandenes Feld: {1}.
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        In diesem anonymen Datensatz fehlen die Felder "{0}".
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        Dieser anonyme Datensatz weist zusätzliche Felder auf. Entfernen Sie die Felder "{0}".
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        Dieser anonyme Datensatz muss folgendes Feld aufweisen: {0}. Vorhandene Felder: {1}.
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        Dieser anonyme Datensatz muss folgendes Feld aufweisen: {0}. Vorhandenes Feld: {1}.
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        In diesem anonymen Datensatz fehlt das Feld "{0}".
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        Dieser anonyme Datensatz weist ein zusätzliches Feld auf. Entfernen Sie das Feld "{0}".
         
       
       
@@ -1112,6 +1157,11 @@
         Dieser Ausdruck zum Kopieren und Aktualisieren von Datensätzen ändert alle Felder des Datensatztyps "{0}". Erwägen Sie stattdessen die Verwendung der Datensatzerstellungssyntax.
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         Die Syntax "expr1[expr2]" wird für die Indizierung verwendet. Fügen Sie ggf. eine Typanmerkung hinzu, um die Indizierung zu aktivieren, oder fügen Sie beim Aufrufen einer Funktion ein Leerzeichen hinzu, z. B. "expr1 [expr2]".
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        Das Feld "{0}" ist in diesem Datensatzausdruck oder Muster mehrmals vorhanden.
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        Es wurden mehrere Typentsprechungen gefunden:\n{0}\nDer Typ "{1}" wurde verwendet. Ziehen Sie aufgrund der überlappenden Feldnamen\n{2}\ndie Verwendung von Typanmerkungen in Betracht, oder ändern Sie die Reihenfolge der open-Anweisungen.
         
       
       
@@ -1247,6 +1297,16 @@
         Die Verwendung von Methoden mit "NoEagerConstraintApplicationAttribute" erfordert /langversion:6.0 oder höher.
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         Dieser Ausdruck unterstützt die Indizierung, z. B. "expr.[index]". Die Syntax "expr[index]" erfordert /langversion:preview. Siehe https://aka.ms/fsharp-index-notation.
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        Diese Außerkraftsetzung akzeptiert ein Tupel anstelle mehrerer Argumente. Fügen Sie der Methodendefinition eine zusätzliche Ebene von Klammern hinzu (z. B. "member _. Foo((x, y))"), oder entfernen Sie Klammern in der abstrakten Methodendeklaration (z. B. "abstract member Foo: 'a * 'b -> 'c").
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        Das Konstrukt "let! ... and! ..." kann nur verwendet werden, wenn der Berechnungsausdrucks-Generator entweder eine {0}-Methode oder geeignete MergeSources- und Bind-Methoden definiert.
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        Statische Bindungen können extrinsischen Augmentationen nicht hinzugefügt werden. Verwenden Sie stattdessen "static member".
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        Unerwarteter Funktionstyp in Felddefinition von Union-Fall (case). Wenn das Feld eine Funktion sein soll, sollten Sie die Funktionssignatur in Klammern einschließen, z. B. | Case of a -> b als | Case of (a -> b).
         
       
       
@@ -1552,6 +1617,11 @@
         Verwenden Sie ggf. "return!" anstelle von "return".
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         Dieses Attribut wird derzeit vom F#-Compiler nicht unterstützt. Durch seine Anwendung wird die beabsichtigte Wirkung nicht erreicht.
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        Unbekannte Option: {0}. Verwenden Sie "--help", um Informationen zu bekannten Befehlszeilenoptionen zu erhalten.
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        Wenn die Sichtbarkeit für eine Eigenschaft angegeben wird, ist das Festlegen der Sichtbarkeit für die Set- oder Get-Methode nicht zulässig.
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        Für F# 7 und früher dürfen statische Wertdefinitionen nur in Typen mit einem primären Konstruktor verwendet werden (type X(args) = ...). Um sie in anderen Typen zu aktivieren, verwenden Sie die Sprachversion "preview".
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        Möglicherweise falscher Einzug: Dieses Token ist gegenüber dem bei Position {0} beginnenden Kontext verschoben. Erhöhen Sie den Einzug für dieses Token, oder verwenden Sie die standardmäßigen Formatierungskonventionen.
+        Unerwartete Syntax oder möglicherweise falscher Einzug: Dieses Token befindet sich außerhalb des Kontexts, der an Position {0}gestartet wurde. Versuchen Sie, dies weiter einzurücken.\nUm weiterhin eine nicht konforme Einrückung zu verwenden, übergeben Sie dem Compiler das Flag „--strict-indentation-“ oder setzen Sie die Sprachversion auf F# 7.
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        Ungültige Verwendung von "fixed". "fixed" darf ausschließlich in einer Deklaration der Form "use x = fixed expr" verwendet werden. Dabei ist der Ausdruck einer der folgenden Typen: Array, Adresse eines Arrayelements, Zeichenfolge, Byref, Inref oder ein Typ zum Implementieren von GetPinnableReference().
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Der Paket-Manager-Schlüssel "{0}" wurde nicht in "{1}" registriert. Zurzeit registriert: {2}. Weitere Informationen zu Erweiterungen finden Sie unter: https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.es.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.es.xlf
index b8bf954523..6a6959dc58 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.es.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.es.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        La cadena interpolada contiene identificadores sin tipo. Se recomienda agregar especificadores de formato con tipo.
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        Esta expresión es un registro anónimo; use {{|...|}} en lugar de {{...}}.
         
       
       
@@ -82,6 +82,11 @@
         Si un tipo utiliza ambos atributos [<Sealed>] y [<AbstractClass>], significa que es estático. No se permite implementar interfaces.
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         El uso de ":=" de la biblioteca de F# está en desuso. Vea https://aka.ms/fsharp-refcell-ops. Por ejemplo, cambie "cell := expr" a "cell.Value <- expr".
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        El miembro o la función “{0}” tiene el atributo “TailCallAttribute”, pero no se usa de forma de recursión de cola.
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        Las restricciones “no administrado” y "no estructurado" son incoherentes
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        forma abreviada de punto y guion bajo para la función de solo descriptor de acceso
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        Genera advertencias si un miembro o función tiene el atributo “TailCall”, pero no se usa de forma de recursión de cola.
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        Intersección de restricciones en tipos flexibles
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        enlaces fijos extendidos para byref y GetPinnableReference
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        Interpolación de cadena extendida similar a los literales de cadena sin formato de C#.
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        Nombres de argumentos implícitos mejorados
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        Diagnóstico 3559 (advertir cuando se infiere el objeto) en el nivel informativo, desactivado de manera predeterminada
         
       
       
@@ -397,9 +417,14 @@
         administración de paquetes
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        preferir String.GetPinnableReference en enlaces fijos
         
       
       
@@ -437,6 +462,11 @@
         máquinas de estado reanudables
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         restricciones de tipo propio
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        Permitir enlaces let estáticos en tipos de clase de unión, registro, estructura y no incremental
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        Genera errores en una sangría incorrecta, permite una mejor recuperación y análisis durante la edición.
         
       
       
@@ -472,6 +502,11 @@
         representación de struct para modelos activos
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         Compatibilidad con try-with en expresiones secuenciales
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        Interoperabilidad entre la restricción genérica no administrada de C# y F# (emitir modreq adicional)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        Genera advertencias cuando se encontraron varias coincidencias de tipo de registro durante la resolución de nombres debido a nombres de campo superpuestos.
         
       
       
         'while!' expression
-        'while!' expression
+        expresión “while!”
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        Se usa en expresiones de cálculo para introducir una construcción de bucle donde la condición es el resultado de otra expresión de cálculo.
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        No se admite la interpolación de cadenas extendida en esta versión de F#.
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        Este nombre no es un identificador válido.
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        El literal de cadena triple delimitado interpolado no comienza con suficientes caracteres "$" para permitir tantos corchetes de apertura consecutivos como contenido.
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        El literal de cadena delimitado triple interpolado no comienza con suficientes caracteres “$” para permitir tantos caracteres “%” consecutivos.
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        La cadena interpolada contiene llaves de cierre no coincidentes.
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        Invalidar reglas de sangría implícitas por la versión del lenguaje
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        La sintaxis de intersección de restricciones solo se puede usar con tipos flexibles, por ejemplo, "#IDisposable &#ISomeInterface".
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+        Se espera una expresión
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        Se espera un patrón
         
       
       
         Expecting type
-        Expecting type
+        Tipo esperado
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        Falta la palabra clave “{0}”
         
       
       
         Expecting member body
-        Expecting member body
+        Se espera el cuerpo del miembro
         
       
       
         Missing union case name
-        Missing union case name
+        Falta el nombre del caso de unión
         
       
       
@@ -912,9 +957,9 @@
         Este acceso de miembro es ambiguo. Use paréntesis alrededor de la creación del objeto, por ejemplo, '(nuevo AlgúnTipo(args)).NombreMiembro'
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        El estado de pickle recién agregado no se puede usar en FSharp.Core, ya que también debe funcionar en compiladores y herramientas anteriores. El período de tiempo es al menos 3 años después de la introducción de la característica. Infracción: {0} . Contexto: \n {1} 
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (Nombre sugerido)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        El significado de _ es ambiguo aquí. No se puede usar para una variable descartada y una función abreviada en el mismo ámbito.
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        Este registro anónimo debe tener campos {0}; pero aquí tiene campos {1}.
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        Este registro anónimo debe tener campos {0}; pero aquí tiene el campo “{1}”.
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        Faltan campos {0} en este registro anónimo.
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        Este registro anónimo tiene campos adicionales. Quite los campos {0}.
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        Este registro anónimo debe tener el campo “{0}”, pero aquí tiene campos {1}.
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        Este registro anónimo debe tener el campo “{0}”, pero aquí tiene el campo “{1}”.
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        Falta el campo “{0}” en este registro anónimo.
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        Este registro anónimo tiene un campo adicional. Quitar el campo “{0}”.
         
       
       
@@ -1112,6 +1157,11 @@
         Esta expresión de copia y actualización de registros cambia todos los campos de tipo de registro "{0}". Es preferible utilizar la sintaxis de construcción de registros.
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         La sintaxis "expr1[expr2]" se usa para la indexación. Considere la posibilidad de agregar una anotación de tipo para habilitar la indexación, si se llama a una función, agregue un espacio, por ejemplo, "expr1 [expr2]".
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        El campo “{0}” aparece varias veces en esta expresión o patrón de registro.
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        Se encontraron varias coincidencias de tipo:\n{0}\nSe usó el tipo “{1}”. Debido a los nombres de campo superpuestos\n{2}\nconsidere usar anotaciones de tipo o cambiar el orden de las instrucciones abiertas.
         
       
       
@@ -1247,6 +1297,16 @@
         El uso de métodos con "NoEagerConstraintApplicationAttribute" requiere /langversion:6.0 o posteriores
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         Esta expresión admite indexación, por ejemplo "expr.[index]". La sintaxis "expr[index]" requiere /langversion:preview. Ver https://aka.ms/fsharp-index-notation.
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        Esta invalidación toma una tupla en lugar de varios argumentos. Intente agregar una capa adicional de paréntesis en la definición del método (por ejemplo, “member _. Foo((x, y))”) o quitar paréntesis en la declaración de método abstracto (por ejemplo, “abstract member Foo: “a * “b -> “c”).
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        La construcción "let! ... and! ..." solo se puede usar si el generador de expresiones de cálculo define un método "{0}" o bien los métodos "MergeSources" y "Bind" adecuados.
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        No se pueden agregar enlaces estáticos a aumentos extrínsecos. Considere la posibilidad de usar un "miembro estático" en su lugar.
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        Tipo de función inesperado en la definición de campo de caso de unión. Si pretende que el campo sea una función, considere la posibilidad de encapsular la firma de función con paréntesis, por ejemplo, Case of a -> b en | Case of (a -> b).
         
       
       
@@ -1552,6 +1617,11 @@
         Considere la posibilidad de usar "return!" en lugar de "return".
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         Este atributo no es compatible actualmente con el compilador de F#. Si se aplica, no se obtendrá el efecto deseado.
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        Opción no reconocida: "{0}". Use "--help" para obtener información sobre las opciones de línea de comandos reconocidas.
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        Cuando se especifica la visibilidad de una propiedad, no se permite establecer la visibilidad del método set o get.
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        Para F#7 y versiones anteriores, las definiciones de valores estáticos solo se pueden usar en tipos con un constructor principal ('type X(args) = ...'). Para habilitarlos en todos los demás tipos, use la versión de idioma "preview".
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        Posible sangría incorrecta: este token está fuera del contexto iniciado en la posición {0}. Pruebe aplicando más sangría a este token o usando convenciones de formato estándar.
+        Sintaxis inesperada o posible sangría incorrecta: este token está fuera del contexto iniciado en la posición {0}. Intente aplicar más sangría.\nPara seguir usando la sangría no conforme, pase la marca "--strict-indentation-" al compilador o establezca la versión del lenguaje en F# 7.
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        Uso no válido de "fixed". Debe utilizarse solo en una declaración del formulario "use x = fixed expr", donde la expresión sea una de las siguientes: una matriz, la dirección de un elemento de la matriz, una cadena, un byref, un inref o un tipo de implementación GetPinnableReference()
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        La clave del administrador de paquetes "{0}" no se registró en {1}. Registrado actualmente: {2}. Para obtener más información sobre las extensiones, visite https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.fr.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.fr.xlf
index 7e7a3c5231..8bf1b97e9b 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.fr.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.fr.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        La chaîne interpolée contient des identifiants non typés. L'ajout de spécificateurs de format typés est recommandé.
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        Cette expression est un enregistrement anonyme, utilisez {{|...|}} au lieu de {{...}}.
         
       
       
@@ -82,6 +82,11 @@
         Si un type utilise à la fois les attributs [<Sealed>] et [<AbstractClass>], cela signifie qu'il est statique. L'implémentation d'interfaces n'est pas autorisée.
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         L’utilisation de « := » à partir de la bibliothèque F# est déconseillée. Voir https://aka.ms/fsharp-refcell-ops. Par exemple, veuillez remplacer « cell := expr » par « cell.Value <- expr ».
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        Le membre ou la fonction « {0} » possède l'attribut « TailCallAttribute », mais n'est pas utilisé de manière récursive.
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        Les contraintes « non gérées » et « non structurées » sont incohérentes
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        raccourci de point de soulignement pour la fonction d'accesseur uniquement
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        Lève des avertissements si un membre ou une fonction possède l'attribut « TailCall », mais n'est pas utilisé de manière récursive.
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        Intersection de contraintes sur les types flexibles
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        liaisons fixes étendues pour byref et GetPinnableReference
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        Interpolation de chaîne étendue similaire aux littéraux de chaîne brute C#.
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        Noms d’arguments implicites améliorés
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        Diagnostic 3559 (avertir lorsque obj déduit) au niveau informatif, désactivé par défaut
         
       
       
@@ -397,9 +417,14 @@
         Package Management
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        préférez String.GetPinnableReference dans les liaisons fixes
         
       
       
@@ -437,6 +462,11 @@
         ordinateurs d’état pouvant être repris
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         contraintes d’auto-type
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        Autoriser les liaisons let statiques dans les types union, record, struct et classes non incrémentielles
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        Génère des erreurs en cas d'indentation incorrecte, permet une meilleure récupération et analyse lors de l'édition
         
       
       
@@ -472,6 +502,11 @@
         représentation de structure pour les modèles actifs
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         Prise en charge de try-with dans les expressions de séquence
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        Interopérabilité entre les contraintes génériques non gérées de C# et F# (émettre un modreq supplémentaire)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        Déclenche des avertissements lorsque plusieurs correspondances de types d'enregistrement ont été trouvées lors de la résolution de nom en raison de noms de champs qui se chevauchent.
         
       
       
         'while!' expression
-        'while!' expression
+        'alors que!' expression
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        Utilisé dans les expressions de calcul pour introduire une construction en boucle où la condition est le résultat d'une autre expression de calcul.
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        L'interpolation de chaîne étendue n'est pas prise en charge dans cette version de F#.
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        Ceci n'est pas un identifiant valide
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        La chaîne littérale interpolée entre guillemets triples ne commence pas par suffisamment de caractères « $ » pour permettre autant d'accolades ouvrantes consécutives comme contenu.
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        La chaîne littérale interpolée entre guillemets triples ne commence pas par suffisamment de caractères « $ » pour autoriser autant de caractères « % » consécutifs.
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        La chaîne interpolée contient des accolades fermantes sans correspondance.
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        Remplacer les règles d'indentation impliquées par la version linguistique
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        La syntaxe d'intersection de contraintes ne peut être utilisée qu'avec des types flexibles, par ex. '#IDisposable et #ISomeInterface'.
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+         Expression attendue
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        Modèle attendu
         
       
       
         Expecting type
-        Expecting type
+        Type attendu
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        Mot clé manquant '{0}'
         
       
       
         Expecting member body
-        Expecting member body
+        Comité membre attendu
         
       
       
         Missing union case name
-        Missing union case name
+        Nom du cas syndical manquant
         
       
       
@@ -912,9 +957,9 @@
         L’accès à ce membre est ambigu. Utilisez des parenthèses autour de la création de l’objet, par exemple' (New SomeType (args)). MemberName
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        L'état pickle nouvellement ajouté ne peut pas être utilisé dans FSharp.Core, car il doit également fonctionner dans les anciens compilateurs et outils. La fenêtre de temps est d'au moins 3 ans après l'introduction de la fonctionnalité. Infraction : {0} . Contexte : \n {1} 
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (Nom suggéré)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        La signification de _ est ici ambiguë. Il ne peut pas être utilisé pour une variable ignorée et un raccourci de fonction dans la même portée.
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        Cet enregistrement anonyme doit avoir des champs {0} ; mais ici il y a des champs {1}.
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        Cet enregistrement anonyme doit avoir des champs {0} ; mais ici il y a le champ '{1}'.
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        Cet enregistrement anonyme ne contient pas de champs {0}.
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        Cet enregistrement anonyme comporte des champs supplémentaires. Remove fields {0}.
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        Cet enregistrement anonyme devrait avoir le champ « {0} » mais ici il y a des champs {1}.
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        Cet enregistrement anonyme devrait avoir le champ « {0} » mais ici, il a le champ « {1} ».
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        Cet enregistrement anonyme n'a pas de champ '{0}'.
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        Cet enregistrement anonyme comporte un champ supplémentaire. Supprimer le champ '{0}'.
         
       
       
@@ -1112,6 +1157,11 @@
         Cette expression d'enregistrement de copie et de mise à jour modifie tous les champs du type d'enregistrement '{0}'. Envisagez d'utiliser la syntaxe de construction d'enregistrement à la place.
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         La syntaxe « expr1[expr2] » est utilisée pour l’indexation. Envisagez d’ajouter une annotation de type pour activer l’indexation, ou si vous appelez une fonction, ajoutez un espace, par exemple « expr1 [expr2] ».
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        Le champ « {0} » apparaît plusieurs fois dans cette expression ou modèle d'enregistrement.
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        Plusieurs correspondances de types ont été trouvées :\n{0}\nLe type « {1} » a été utilisé. En raison des noms de champs qui se chevauchent\n{2}\nenvisagez d'utiliser des annotations de type ou de modifier l'ordre des instructions ouvertes.
         
       
       
@@ -1247,6 +1297,16 @@
         L’utilisation de méthodes avec « NoEagerConstraintApplicationAttribute » requiert/langversion:6.0 ou ultérieur
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         Cette expression prend en charge l’indexation, par exemple « expr.[index] ». La syntaxe « expr[index] » requiert /langversion:preview. Voir https://aka.ms/fsharp-index-notation.
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        Ce remplacement prend un tuple au lieu de plusieurs arguments. Essayez d'ajouter une couche supplémentaire de parenthèses à la définition de la méthode (par exemple 'member _.Foo((x, y))'), ou supprimez les parenthèses au niveau de la déclaration de la méthode abstraite (par exemple 'abstract member Foo: 'a * 'b -> 'c').
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        Le « laissez ! » ... et! ...' ne peut être utilisée que si le générateur d'expression de calcul définit soit une méthode '{0}', soit des méthodes 'MergeSources' et 'Bind' appropriées.
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        Les liaisons statiques ne peuvent pas être ajoutées aux augmentations extrinsèques. Pensez plutôt à utiliser un « membre statique ».
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        Type de fonction inattendu dans la définition du champ de cas d'union. Si vous souhaitez que le champ soit une fonction, envisagez d'envelopper la signature de la fonction avec des parenthèses, par exemple. | Cas de a -> b dans | Cas de (a -> b).
         
       
       
@@ -1552,6 +1617,11 @@
         Utilisez 'return!' à la place de 'return'.
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         Cet attribut n’est actuellement pas pris en charge par le compilateur F #. L’application de celui-ci n’obtiendra pas l’effet souhaité.
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        Option non reconnue : '{0}'. Utilisez '--help' pour en savoir plus sur les options de ligne de commande reconnues.
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        Lorsque la visibilité d'une propriété est spécifiée, la définition de la visibilité de la méthode set ou get n'est pas autorisée.
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        Pour F#7 et versions antérieures, les définitions de valeurs statiques ne peuvent être utilisées que dans les types avec un constructeur principal (« type X(args) = ... »). Pour les activer dans tous les autres types, utilisez la version linguistique « aperçu ».
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        Mise en retrait éventuellement incorrecte : ce jeton est situé hors du contexte qui débute à la position {0}. Essayez d'effectuer une mise en retrait supplémentaire de ce jeton ou d'utiliser des conventions de mise en forme standard.
+        Syntaxe inattendue ou mise en retrait incorrecte possible : ce jeton est hors du contexte démarré à la position {0}. Essayez de mettre cela en retrait.\nPour continuer à utiliser une mise en retrait non conforme, passez l’indicateur '--strict-indentation-' au compilateur ou définissez la version de langage sur F# 7.
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        Utilisation invalide de « fixé ». 'fixed' ne peut être utilisé que dans une déclaration de la forme 'use x =fixed expr' où l'expression est l'un des éléments suivants : un tableau, l'adresse d'un élément de tableau, une chaîne, une byref, une inref ou une tapez implémentant GetPinnableReference()
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        La clé du gestionnaire de packages « {0} » n'a pas été enregistrée dans {1}. Actuellement inscrit : {2}. Pour en savoir plus sur les extensions, visitez : https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.it.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.it.xlf
index a3977ebcac..135dbc86cf 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.it.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.it.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        La stringa interpolata contiene identificatori non tipizzati. È consigliabile aggiungere identificatori di formato tipizzato.
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        Questa espressione è un record anonimo. Usa {{|...|}} invece di {{...}}.
         
       
       
@@ -82,6 +82,11 @@
         Se un tipo usa entrambi gli attributi [<Sealed>] e [<AbstractClass>], significa che è statico. Non è consentita l'implementazione di interfacce.
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         L'uso di ':=' dalla libreria F # è deprecato. Vedere https://aka.ms/fsharp-refcell-ops. Ad esempio, modificare 'cell:= expr' in 'cell.Value <- expr'.
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        Il membro o la funzione "{0}" ha l'attributo "TailCallAttribute", ma non è in uso in modo ricorsivo finale.
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        I vincoli 'unmanaged' e 'not struct' sono incoerenti
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        sintassi abbreviata del punto di sottolineatura solo per la funzione di accesso
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        Genera un avviso se un membro o una funzione ha l'attributo "TailCall", ma non è in uso in modo ricorsivo finale.
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        Intersezione di vincoli su tipi flessibili
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        binding fissi estesi per byref e GetPinnableReference
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        Interpolazione di stringa estesa simile ai valori letterali stringa non elaborati C#.
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        Nomi di argomenti impliciti migliorati
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        Diagnostica 3559 (avviso in caso di oggetto dedotto) a livello informativo. Opzione disattivata per impostazione predefinita
         
       
       
@@ -397,9 +417,14 @@
         gestione pacchetti
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        preferisci String.GetPinnableReference nei binding fissi
         
       
       
@@ -437,6 +462,11 @@
         macchine a stati ripristinabili
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         vincoli di tipo automatico
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        Consenti binding statici let in tipi di classe non incrementali, union, record, struct
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        Genera errori di rientro non corretto. Consente un ripristino e un'analisi migliori durante la modifica
         
       
       
@@ -472,6 +502,11 @@
         rappresentazione struct per criteri attivi
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         Supporto per try-with nelle espressioni di sequenza
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        Interoperabilità tra il vincolo generico non gestito di C# e di F# (crea un modreq aggiuntivo)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        Genera avvisi quando sono state trovate più corrispondenze del tipo di record durante la risoluzione dei nomi a causa di nomi di campi sovrapposti.
         
       
       
         'while!' expression
-        'while!' expression
+        Espressione "while!"
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        Usato nelle espressioni di calcolo per introdurre un costrutto con riprodurre a ciclo continuo in cui la condizione è il risultato di un'altra espressione di calcolo.
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        L'interpolazione di stringa estesa non è supportata in questa versione di F#.
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        Non si tratta di un identificatore valido.
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        Il valore letterale stringa con virgolette triple interpolato non inizia con un numero sufficiente di caratteri "$" per consentire un numero così elevato di parentesi graffe aperte consecutive come contenuto.
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        Il valore letterale stringa con virgolette triple non inizia con un numero di caratteri "$" sufficiente per consentire un numero così elevato di caratteri "%" consecutivi.
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        La stringa interpolata contiene parentesi graffe di chiusura non corrispondenti.
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        Ignora le regole di rientro implicite nella versione del linguaggio
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        La sintassi dell'intersezione dei vincoli può essere usata solo con tipi flessibili, ad esempio '#IDisposable & #ISomeInterface'.
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+        Prevista espressione.
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        Criterio previsto
         
       
       
         Expecting type
-        Expecting type
+        Previsto tipo
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        Parola chiave mancante "{0}"
         
       
       
         Expecting member body
-        Expecting member body
+        Previsto corpo del membro
         
       
       
         Missing union case name
-        Missing union case name
+        Nome case di unione mancante
         
       
       
@@ -912,9 +957,9 @@
         L'accesso ai membri è ambiguo. Utilizzare le parentesi intorno alla creazione oggetto, ad esempio “(New SomeType (args)). MemberName”
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        Non è possibile usare lo stato pickle appena aggiunto in FSharp.Core, perché deve funzionare anche in compilatori e strumenti meno recenti. L'intervallo di tempo è di almeno 3 anni dopo l'introduzione della funzionalità. Violazione: {0} . Contesto: \n {1} 
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (Nome consigliato)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        Il significato di _ è ambiguo in questo contesto. Non può essere utilizzato per una variabile eliminata e una sintassi abbreviata di funzione nello stesso ambito.
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        Questo record anonimo deve contenere campi {0}, ma qui sono presenti dei campi {1}.
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        Questo record anonimo deve contenere campi {0}, ma qui è presente un campo "{1}".
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        Nel record anonimo mancano i campi {0}.
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        Questo record anonimo contiene campi aggiuntivi. Rimuovi i campi {0}.
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        Questo record anonimo deve contenere il campo "{0}", ma qui sono presenti dei campi {1}.
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        Questo record anonimo deve contenere il campo "{0}", ma qui sono presenti dei campi "{1}".
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        Nel record anonimo manca il campo "{0}".
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        Questo record anonimo contiene un campo aggiuntivo. Rimuovi il campo "{0}".
         
       
       
@@ -1112,6 +1157,11 @@
         Questa espressione di record di copia e aggiornamento modifica tutti i campi del tipo di record '{0}'. Provare a usare la sintassi di costruzione dei record.
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         La sintassi 'expr1[expr2]' viene usata per l'indicizzazione. Provare ad aggiungere un'annotazione di tipo per abilitare l'indicizzazione oppure se la chiamata a una funzione aggiunge uno spazio, ad esempio 'expr1 [expr2]'.
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        Il campo "{0}" viene visualizzato più volte in questa espressione di record o criterio.
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        Sono state trovate più corrispondenze di tipo:\n{0}\nÈ stato utilizzato il tipo "{1}". A causa dei nomi di campo sovrapposti\n{2}\nprendere in considerazione l'utilizzo di annotazioni di tipo o modificare l'ordine delle istruzioni aperte.
         
       
       
@@ -1247,6 +1297,16 @@
         L'utilizzo di metodi con 'NoEagerConstraintApplicationAttribute' richiede /langversion: 6.0 o versione successiva
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         Questa espressione supporta l'indicizzazione, ad esempio 'expr.[index]'. La sintassi 'expr[index]' richiede/langversion:preview. Vedere https://aka.ms/fsharp-index-notation..
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        Questa sostituzione accetta una tupla anziché più argomenti. Prova ad aggiungere un ulteriore livello di parentesi alla definizione del metodo (ad esempio 'member _.Foo((x, y))') o rimuovi le parentesi nella dichiarazione del metodo astratto (ad esempio, 'abstract member Foo: 'a * 'b -> 'c').
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        È possibile usare il costrutto "let! ... and! ..." solo se il generatore di espressioni di calcolo definisce un metodo "{0}" o metodi "MergeSource" e "Bind" appropriati
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        Non è possibile aggiungere binding statici ad aumenti estrinseci. Prendi in considerazione un "membro statico", in alternativa.
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        Tipo di funzione imprevisto nella definizione del campo del caso di unione. Se desideri che il campo sia una funzione, considera di eseguire il wrapping della firma della funzione con le parentesi, ad esempio | Case of a -> b into | Case of (a -> b).
         
       
       
@@ -1552,6 +1617,11 @@
         Provare a usare 'return!' invece di 'return'.
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         Questo attributo non è attualmente supportato dal compilatore F #. L'applicazione non riuscirà a ottenere l'effetto previsto.
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        Opzione non riconosciuta: '{0}'. Usare "--help" per informazioni sulle opzioni della riga di comando riconosciute.
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        Quando viene specificata la visibilità per una proprietà, l'impostazione della visibilità del metodo set o get non è consentita.
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        Per F#7 e versioni precedenti, le definizioni di valori statici possono essere usate solo in tipi con un costruttore primario ('type X(args) = ...'). Per abilitarli in tutti gli altri tipi, usare la versione di "anteprima" del linguaggio.
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        Possibile rientro non corretto: il token si trova oltre il limite del contesto iniziato alla posizione {0}. Provare ad applicare un ulteriore rientro al token oppure a utilizzare convenzioni di formattazione standard.
+        Sintassi imprevista o possibile rientro non corretto: questo token è fuori dal contesto avviato nella posizione {0}. Provare a impostare ulteriormente il rientro.\nPer continuare a usare un rientro non conforme, passare il flag '--strict-indentation-' al compilatore, o impostare la versione del linguaggio su F# 7.
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        Uso non valido di "fixed". "fixed" può essere usato solo in una dichiarazione in formato "use x = fixed expr", in cui l'espressione è uno degli elementi seguenti: un matrice, l'indirizzo di un elemento di matrice, una stringa, byref, inref o un tipo che implementa GetPinnableReference()
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        La chiave "'{0}" del gestione pacchetti non è stata registrata in {1}. Attualmente registrata: {2}. Per altre informazioni sulle estensioni, vedere: https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ja.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ja.xlf
index 8ef13d0911..c4e1d71a82 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ja.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ja.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        挿入文字列には、型指定されていない識別子が含まれています。型指定された書式指定子を追加することをお勧めします。
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        この式は匿名レコードであり、{{...}} の代わりに {{|...|}} を使用してください。
         
       
       
@@ -82,6 +82,11 @@
         型が [<Sealed>] と [<AbstractClass>] の両方の属性を使用する場合、それは静的であることを意味します。インターフェイスの実装は許可されません。
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         F# ライブラリからの ':=' の使用は非推奨です。https://aka.ms/fsharp-refcell-ops を参照してください。たとえば、'cell : = expr' を 'cell.Value <- expr' に変更してください。
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        メンバーまたは関数 '{0}' には 'TailCallAttribute' 属性がありますが、末尾の再帰的な方法では使用されていません。
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        制約 'unmanaged' と 'not struct' が矛盾しています
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        アクセサー専用関数のアンダースコア ドット短縮形
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        メンバーまたは関数に 'TailCall' 属性があるが、末尾の再帰的な方法で使用されていない場合に警告を発生させます。
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        フレキシブル型の制約積集合
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        byref と GetPinnableReference の拡張固定バインド
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        C# の生文字列リテラルに似た拡張文字列補間。
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        暗黙的な引数名の改善
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        情報レベルでの診断 3559 (obj 推論時に警告)、既定ではオフ
         
       
       
@@ -397,9 +417,14 @@
         パッケージの管理
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        固定バインドで String.GetPinnableReference を優先する
         
       
       
@@ -437,6 +462,11 @@
         再開可能なステート マシン
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         自己型制約
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        共用体型、レコード型、構造体型、非増分クラス型の静的 let バインドを許可する
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        不適切なインデントでエラーが発生し、編集中の回復と分析が向上します
         
       
       
@@ -472,6 +502,11 @@
         アクティブなパターンの構造体表現
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         シーケンス式内の try-with のサポート
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        C# と F# のアンマネージド ジェネリック制約の間の相互運用 (追加の modreq を出力)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        フィールド名が重複しているため、名前解決中に複数のレコードの種類の一致が見つかった場合に警告を生成します。
         
       
       
         'while!' expression
-        'while!' expression
+        'while!' 式
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        条件が別の計算式の結果であるループ構造を導入するために、計算式で使用されます。
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        拡張文字列補間は、このバージョンの F# ではサポートされていません。
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        これは有効な識別子ではありません
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        挿入されたトリプル 引用符で囲まれた文字列リテラルは、連続する多数の開きかっこをコンテンツとして使用するのに十分な '$' 文字で始まっていません。
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        挿入されたトリプル 引用符で囲まれた文字列リテラルは、連続する '%' 文字を多数許可するのに十分な '$' 文字で始まっていません。
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        補間された文字列には、一致しない閉じかっこが含まれています。
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        言語バージョンによって暗黙的に指定されたインデント規則をオーバーライドする
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        制約交差構文は、"#IDisposable & #ISomeInterface" など、柔軟な型でのみ使用できます。
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+        式を指定してください
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        必要なパターン
         
       
       
         Expecting type
-        Expecting type
+        型が必要です
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        キーワード '{0}' がありません
         
       
       
         Expecting member body
-        Expecting member body
+        メンバー本体が必要です
         
       
       
         Missing union case name
-        Missing union case name
+        共用体のケース名がありません
         
       
       
@@ -912,9 +957,9 @@
         このメンバーへのアクセスはあいまいです。オブジェクト作成の前後にはかっこを使用してください。例: '(new SomeType(args)).MemberName'
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        新しく追加された pickle 状態は、古いコンパイラとツールでも動作している必要があるため、FSharp.Core では使用できません。時間枠は、機能の導入から少なくとも 3 年経っています。違反: {0}。コンテキスト: \n {1} 
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (推奨される名前)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        ここでは _ の意味はあいまいです。破棄された変数と、同じスコープ内の関数の短縮形には使用できません。
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        この匿名レコードにはフィールド {0} が必要ですが、ここにはフィールド {1} があります。
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        この匿名レコードにはフィールド {0}が必要ですが、ここにフィールド '{1}'があります。
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        この匿名レコードにはフィールド {0} がありません。
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        この匿名レコードには、追加のフィールドがあります。フィールド {0} を削除します。
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        この匿名レコードにはフィールド '{0}' が必要ですが、ここにフィールド {1} があります。
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        この匿名レコードにはフィールド '{0}' が必要ですが、ここにはフィールド '{1}' があります。
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        この匿名レコードにフィールド '{0}'がありません。
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        この匿名レコードには、追加のフィールドがあります。フィールド '{0}' を削除します。
         
       
       
@@ -1112,6 +1157,11 @@
         この copy-and-update レコード式は、レコードの種類が '{0}' であるすべてのフィールドを変更します。代わりにレコード構築構文を使用することを検討してください。
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         構文 'expr1[expr2]' はインデックス作成に使用されます。インデックスを有効にするために型の注釈を追加するか、関数を呼び出す場合には、'expr1 [expr2]' のようにスペースを入れます。
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        フィールド '{0}' は、このレコード式またはパターンに複数回出現します
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        複数の型の一致が見つかりました:\n{0}\n型 '{1}' が使用されました。フィールド名が重複しているため、\n{2}\n型注釈を使用するか、オープン ステートメントの順序を変更してください。
         
       
       
@@ -1247,6 +1297,16 @@
         'NoEagerConstraintApplicationAttribute' を指定してメソッドを使用するには、/langversion:6.0 以降が必要です
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         この式は、'expr. [index]' などのインデックスをサポートしています。構文 'expr[index]' には /langversion:preview が必要です。https://aka.ms/fsharp-index-notation を参照してください。
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        このオーバーライドは、複数の引数ではなくタプルを受け取ります。メソッド定義にかっこのレイヤーを追加してみるか (例: 'member _.Foo((x, y))')、または抽象メソッド宣言でかっこを削除します (例: 'abstract member Foo: 'a * 'b -> 'c')。
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        'let! ... and! ...' コンストラクトは、コンピュテーション式ビルダーが '{0}' メソッドまたは適切な 'MergeSource' および 'Bind' メソッドのいずれかを定義している場合にのみ使用できます
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        静的バインディングを外部拡張に追加することはできません。代わりに'静的メンバー' を使用することを検討してください。
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        共用体ケースのフィールド定義で予期しない関数型が発生しました。フィールドを関数にする場合は、関数シグネチャを parens でラップすることを検討してください、例えば、 | Case of a -> b into | Case of (a -> b)。
         
       
       
@@ -1552,6 +1617,11 @@
         'return' の代わりに 'return!' を使うことを検討してください。
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         この属性は現在、F # コンパイラのサポート外です。これを適用しても、意図した効果は得られません。
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        認識されないオプション: '{0}'。 '--help' を使用して、認識されたコマンド ライン オプションについて学習します。
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        プロパティの可視性を指定した場合、set メソッドまたは get メソッドの可視性の設定は許可されません。
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        F#7 以前の場合、静的な値の定義は、プライマリ コンストラクター ('type X(args) = ...') を持つ型でのみ使用できます。他のすべての種類で有効にするには、言語バージョン 'preview' を使用します。
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        インデントが正しくない可能性があります。このトークンは位置 {0} から開始されるコンテキストのオフサイドになります。このトークンのインデントを増やすか、標準的な書式規則を使用してください。
+        予期しない構文またはインデントが正しくない可能性: このトークンは位置 {0} から開始されるコンテキストのオフサイドになります。このトークンのインデントを増やしてみてください。\n非準拠のインデントを引き続き使用するには、'--strict-indent-' フラグをコンパイラに渡すか、言語バージョンを F# 7 に設定してください。
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        'fixed' の使用が無効です。'fixed' は、'use x = fixed expr' という形式の宣言でのみ使用でき、式は配列、配列要素のアドレス、文字列、byref、inref、または GetPinnableReference() を実装する型のいずれかです。
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        パッケージ マネージャー キー '{0}' は {1} に登録されませんでした。現在登録済み: {2}。拡張機能の詳細については、次を参照してください: https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ko.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ko.xlf
index 88e4d1fe5c..4751ad79eb 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ko.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ko.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        보간된 문자열은 형식화되지 않은 식별자를 포함합니다. 형식화된 형식 지정자를 추가하는 것이 좋습니다.
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        이 식은 익명 레코드입니다. {{...}} 대신 {{|...|}}을 사용하세요.
         
       
       
@@ -82,6 +82,11 @@
         형식이 [<Sealed>] 및 [<AbstractClass>] 특성을 모두 사용하는 경우 정적임을 의미합니다. 인터페이스 구현은 허용되지 않습니다.
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         F# 라이브러리의 ':=' 사용은 더 이상 사용되지 않습니다. https://aka.ms/fsharp-refcell-ops를 참조하세요. 예를 들어 'cell := expr'을 'cell.Value <- expr'로 변경하세요.
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        멤버 또는 함수 '{0}'에 'TailCallAttribute' 특성이 있지만 비상 재귀적인 방식으로 사용되고 있지 않습니다.
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        제약 조건 'unmanaged' 및 'not struct'가 일치하지 않습니다.
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        접근자 전용 함수에 대한 밑줄 점 약어
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        멤버 또는 함수에 'TailCall' 특성이 있지만 비상 재귀적인 방식으로 사용되지 않는 경우 경고를 발생합니다.
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        유연한 형식의 제약 조건 교집합
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        byref 및 GetPinnableReference에 대한 확장된 고정 바인딩
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        C# 원시 문자열 리터럴과 유사한 확장 문자열 보간입니다.
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        향상된 암시적 인수 이름
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        정보 수준에서 진단 3559(개체 유추 시 경고), 기본적으로 꺼짐
         
       
       
@@ -397,9 +417,14 @@
         패키지 관리
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        고정 바인딩에서 String.GetPinnableReference 선호
         
       
       
@@ -437,6 +462,11 @@
         다시 시작 가능한 상태 시스템
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         자체 형식 제약 조건
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        union, record, struct, non-incremental 클래스 형식에서 정적 let 바인딩 허용
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        잘못된 들여쓰기에 대한 오류를 제기하고 편집 중에 더 나은 복구 및 분석이 가능합니다.
         
       
       
@@ -472,6 +502,11 @@
         활성 패턴에 대한 구조체 표현
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         시퀀스 식에서 try-with 지원
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        C#과 F#의 관리되지 않는 제네릭 제약 조건 간의 Interop(추가 modreq 내보내기)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        필드 이름이 겹치므로 이름 확인 중에 레코드 유형 일치가 여러 개 발견되면 경고가 발생합니다.
         
       
       
         'while!' expression
-        'while!' expression
+        'while!' 식
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        계산 식에서 조건이 다른 계산 식의 결과인 루프 구문을 도입하는 데 사용됩니다.
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        확장 문자열 보간은 이 버전의 F#에서 지원되지 않습니다.
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        유효한 식별자가 아닙니다.
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        보간된 삼중 따옴표로 묶인 리터럴을 시작하는 '$' 문자가 부족해 이렇게 많은 연속 여는 중괄호를 콘텐츠로 사용할 수 없습니다.
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        보간된 삼중 따옴표로 묶인 문자열 리터럴은 이렇게 많은 연속된 '%' 문자를 허용하기에 충분한 '$' 문자로 시작하지 않습니다.
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        보간된 문자열에 일치하지 않는 닫는 중괄호가 포함되어 있습니다.
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        언어 버전에 포함된 들여쓰기 규칙 재정의
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        제약 조건 교차 구문은 유연한 형식(예: '#IDisposable &#ISomeInterface')에서만 사용할 수 있습니다.
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+        식이 필요함
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        예상되는 패턴
         
       
       
         Expecting type
-        Expecting type
+        예상 형식
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        '{0}' 키워드가 없습니다.
         
       
       
         Expecting member body
-        Expecting member body
+        멤버 본문이 필요한 경우
         
       
       
         Missing union case name
-        Missing union case name
+        공용 구조체 대/소문자 이름이 없습니다.
         
       
       
@@ -912,9 +957,9 @@
         이 구성원 액세스가 모호합니다. 개체 생성 주위에 괄호를 사용하세요. 예: '(새로운 SomeType(인수)).MemberName'
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        새로 추가된 pickle 상태는 이전 컴파일러+도구에서도 작동해야 하므로 FSharp.Core에서 사용할 수 없습니다. 이 기간은 기능 도입 이후 최소 3년입니다. 위반: {0} . 컨텍스트: \n {1} 
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (제안된 이름)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        여기서 _의 의미가 모호합니다. 삭제된 변수와 동일한 범위의 함수 줄임에는 사용할 수 없습니다.
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        이 익명 레코드에는 {0} 필드가 있어야 합니다. 그러나 여기에 {1} 필드가 있습니다.
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        이 익명 레코드에는 {0} 필드가 있어야 합니다. 그러나 여기에 '{1}' 필드가 있습니다.
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        이 익명 레코드에 {0} 필드가 없습니다.
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        이 익명 레코드에는 추가 필드가 있습니다. {0} 필드를 제거합니다.
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        이 익명 레코드에는 '{0}' 필드가 있어야 하지만 여기에 {1} 필드가 있습니다.
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        이 익명 레코드에는 '{0}' 필드가 있어야 하지만 여기에 '{1}' 필드가 있습니다.
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        이 익명 레코드에 '{0}' 필드가 없습니다.
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        이 익명 레코드에는 추가 필드가 있습니다. '{0}' 필드를 제거합니다.
         
       
       
@@ -1112,6 +1157,11 @@
         이 레코드 복사 및 업데이트 식은 '{0}' 레코드 형식의 모든 필드를 변경합니다. 레코드 생성 구문을 대신 사용하는 것이 좋습니다.
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         인덱싱에는 'expr1[expr2]' 구문이 사용됩니다. 인덱싱을 사용하도록 설정하기 위해 형식 주석을 추가하는 것을 고려하거나 함수를 호출하는 경우 공백을 추가하세요(예: 'expr1 [expr2]').
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        '{0}' 필드가 이 레코드 식 또는 패턴에 여러 번 나타납니다.
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        여러 형식 일치 항목이 발견되었습니다.\n{0}\n'{1}' 형식이 사용되었습니다. 필드 이름이 겹치기 때문에\n{2}\n형식 주석을 사용하거나 open 문의 순서를 변경하세요.
         
       
       
@@ -1247,6 +1297,16 @@
         'NoEagerConstraintApplicationAttribute'와 함께 메서드를 사용하려면 /langversion:6.0 이상이 필요합니다.
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         이 식은 인덱싱을 지원합니다. 'expr.[index]'. 'expr[index]' 구문에는 /langversion:preview가 필요합니다. https://aka.ms/fsharp-index-notation을 참조하세요.
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        이 재정의는 여러 인수 대신 튜플을 사용합니다. 메서드 정의에 괄호 계층을 더 추가하거나(예: 'member _.Foo((x, y))') 추상 메서드 선언에서 괄호를 제거하세요(예: 'abstract member Foo: 'a * 'b -> 'c').
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        'let! ... and! ...' 구문은 계산 식 작성기에서 '{0}' 메서드 또는 적절한 'MergeSources' 및 'Bind' 메서드를 정의한 경우에만 사용할 수 있습니다.
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        정적 바인딩은 외적 증강에 추가할 수 없습니다. 대신 '정적 멤버'를 사용하는 것이 좋습니다.
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        공용 구조체 사례 필드 정의에 예기치 않은 함수 형식이 있습니다. 필드가 함수가 되도록 하려면 함수 시그니처를 구문 분석으로 래핑하는 것이 좋습니다(예: | Case of a -> b into | Case of (a -> b))
         
       
       
@@ -1552,6 +1617,11 @@
         'return'이 아니라 'return!'를 사용하세요.
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         이 특성은 현재 F# 컴파일러에서 지원되지 않습니다. 이 특성을 적용해도 의도한 효과를 얻을 수 없습니다.
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        인식할 수 없는 옵션: '{0}'. '--help'를 사용하여 인식된 명령줄 옵션에 대해 알아봅니다.
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        속성에 대한 표시 유형을 지정하면 set 또는 get 메서드의 표시 유형을 설정할 수 없습니다.
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        F#7 이하의 경우 정적 값 정의는 기본 생성자('type X(args) = ...')가 있는 형식에서만 사용할 수 있습니다. 다른 모든 형식에서 사용하도록 설정하려면 언어 버전 '미리 보기'를 사용합니다.
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        들여쓰기가 잘못되었을 수 있습니다. 이 토큰은 {0} 위치에서 시작된 컨텍스트를 벗어납니다. 이 토큰을 더 들여쓰거나 표준 서식 규칙을 사용하세요.
+        예기치 않은 구문 또는 잘못된 들여쓰기: 이 토큰은 {0} 위치에서 시작된 컨텍스트의 오프 사이드입니다. 이를 더 들여쓰기해 보세요.\n규정을 준수하지 않는 들여쓰기를 계속 사용하려면 '--strict-indentation-' 플래그를 컴파일러에 전달하거나 언어 버전을 F# 7로 설정합니다.
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        'fixed'를 잘못 사용했습니다. 'fixed'는 식이 배열, 배열 요소의 주소, 문자열, byref, inref 또는 GetPinnableReference()를 구현하는 형식 중 하나인 'use x = fixed expr' 형식의 선언에서만 사용할 수 있습니다.
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        패키지 관리자 키 '{0}'이(가) {1}에서 등록되지 않았습니다. 현재 등록: {2}. 확장에 대한 자세한 내용은 다음을 참조하세요. https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pl.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pl.xlf
index aa61c578ed..81d62979a4 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pl.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pl.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        Ciąg interpolowany zawiera identyfikatory bez typu. Rekomendowane jest dodanie specyfikatorów formatu pisanego.
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        To wyrażenie jest rekordem anonimowym. Użyj {{|...|}} zamiast {{...}}.
         
       
       
@@ -82,6 +82,11 @@
         Jeśli typ używa obu atrybutów [<Sealed>] i [< AbstractClass>], oznacza to, że jest on statyczny. Wdrażanie interfejsów jest niedozwolone.
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         Użycie elementu „:=” z biblioteki języka F# jest przestarzałe. Sprawdź stronę https://aka.ms/fsharp-refcell-ops. Na przykład zmień wyrażenie „cell := expr” na „cell.Value <- expr”.
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        Składowa lub funkcja „{0}” ma atrybut „TailCallAttribute”, ale nie jest używana w sposób cykliczny końca.
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        Ograniczenia „unmanaged” i „not struct” są niespójne
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        skrót podkreślenia kropki dla funkcji tylko metody dostępu
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        Zgłasza ostrzeżenia, jeśli składowa lub funkcja ma atrybut „TailCall”, ale nie jest używana w sposób cykliczny końca.
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        Przecięcie ograniczenia dla typów elastycznych
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        rozszerzone powiązania stałe dla elementów byref i GetPinnableReference
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        Rozszerzona interpolacja ciągów podobna do literałów nieprzetworzonych ciągów języka C#.
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        Ulepszone nazwy dorozumianych argumentów
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        Diagnostyka 3559 (ostrzegaj po wywnioskowaniu obj) na poziomie informacyjnym, domyślnie wyłączona
         
       
       
@@ -397,9 +417,14 @@
         zarządzanie pakietami
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        preferuj element String.GetPinnableReference w stałych powiązaniach
         
       
       
@@ -437,6 +462,11 @@
         automaty stanów z możliwością wznowienia
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         ograniczenia typu własnego
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        Zezwalaj na statyczne powiązania let w typach związku, rekordu, struktur, nieprzyrostowych klas
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        Zgłasza błędy w przypadku nieprawidłowego wcięcia, umożliwia lepsze odzyskiwanie i analizę podczas edytowania
         
       
       
@@ -472,6 +502,11 @@
         reprezentacja struktury aktywnych wzorców
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         Obsługa instrukcji try-with w wyrażeniach sekwencji
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        Międzyoperacyjnie między niezarządzanym ograniczeniem ogólnym języka C# i F# (emituj dodatkowe modreq)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        Zgłasza ostrzeżenia, gdy znaleziono wiele dopasowań typów rekordów podczas rozpoznawania nazw z powodu nakładających się nazw pól.
         
       
       
         'while!' expression
-        'while!' expression
+        Wyrażenie „while!”
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        Używane w wyrażeniach obliczeń w celu wprowadzenia konstrukcji pętli, w której warunek jest wynikiem innego wyrażenia obliczeń.
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        Rozszerzona interpolacja ciągów nie jest obsługiwana w tej wersji języka F#.
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        To nie jest prawidłowy identyfikator
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        Interpolowany literał ciągu potrójnego w cudzysłowie nie zaczyna się od wystarczającej liczby znaków „$”, aby zezwolić na następującą liczbę kolejnych otwierających nawiasów klamrowych jako zawartość.
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        Interpolowany literał ciągu potrójnego w cudzysłowie nie zaczyna się od wystarczającej liczby znaków „$”, aby zezwolić na tak wiele kolejnych znaków „%”.
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        Ciąg interpolowany zawiera niedopasowane zamykające nawiasy klamrowe.
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        Zastąp reguły wcięć implikowane przez wersję językową
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        Składnia przecięcia ograniczenia może być używana tylko z typami elastycznymi, np. „#IDisposable &#ISomeInterface”.
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+        Oczekiwanie na wyrażenie
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        Oczekiwano wzorca
         
       
       
         Expecting type
-        Expecting type
+        Oczekiwano typu
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        Brak słowa kluczowego „{0}”
         
       
       
         Expecting member body
-        Expecting member body
+        Oczekiwano treści elementu członkowskiego
         
       
       
         Missing union case name
-        Missing union case name
+        Brak nazwy przypadku unii
         
       
       
@@ -912,9 +957,9 @@
         Dostęp tego elementu członkowskiego jest niejednoznaczny. W celu utworzenia obiektu użyj nawiasów, na przykład „(nowy SomeType(args)).MemberName”
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        Nowo dodany stan selektora nie może być używany w elemencie FSharp.Core, ponieważ musi on również działać w starszych kompilatorach i narzędziach. Przedział czasu to co najmniej 3 lata od momentu wprowadzenia funkcji. Naruszenie: {0}. Kontekst: \n {1} 
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (Sugerowana nazwa)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        Znaczenie elementu _ jest tutaj niejednoznaczne. Nie można go użyć dla odrzuconej zmiennej i skrótu funkcji w tym samym zakresie.
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        Ten rekord anonimowy powinien zawierać pola {0}, ale tutaj ma pola {1}.
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        Ten rekord anonimowy powinien zawierać pola {0}, ale tutaj ma pole „{1}”.
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        W tym rekordzie anonimowym brakuje pól {0}.
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        Ten rekord anonimowy zawiera dodatkowe pola. Usuń pola {0}.
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        Ten rekord anonimowy powinien mieć pole „{0}”, ale tutaj ma pola {1}.
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        Ten rekord anonimowy powinien mieć pole „{0}”, ale tutaj ma pole „{1}”.
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        W tym rekordzie anonimowym brakuje pola „{0}”.
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        Ten rekord anonimowy ma dodatkowe pole. Usuń pole „{0}”.
         
       
       
@@ -1112,6 +1157,11 @@
         To wyrażenie rekordu kopiowania i aktualizacji zmienia wszystkie pola typu rekordu „{0}”. Zamiast tego rozważ użycie składni konstrukcji rekordu.
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         Do indeksowania używana jest składnia „expr1[expr2]”. Rozważ dodanie adnotacji typu, aby umożliwić indeksowanie, lub jeśli wywołujesz funkcję dodaj spację, np. „expr1 [expr2]”.
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        Pole „{0}” pojawia się wiele razy w tym wyrażeniu rekordu lub wzorcu
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        Znaleziono wiele dopasowań typów:\n{0}\nUżyto typu „{1}”. Ze względu na nakładające się nazwy pól\n{2}\nrozważ użycie adnotacji typu lub zmień kolejność otwartych instrukcji.
         
       
       
@@ -1247,6 +1297,16 @@
         Używanie metod z atrybutem "NoEagerConstraintApplicationAttribute" wymaga parametru /langversion:6.0 lub nowszego
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         To wyrażenie obsługuje indeksowanie, np. „expr.[index]”. Składnia wyrażenia „expr[index]” wymaga parametru /langversion:preview. Zobacz: https://aka.ms/fsharp-index-notation.
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        To zastąpienie przyjmuje krotki zamiast wielu argumentów. Spróbuj dodać dodatkową warstwę nawiasów w definicji metody (np. „member _. Foo((x, y))”) lub usuń nawiasy w deklaracji metody abstrakcyjnej (np. „abstract member Foo: „a * ”b -> „c”).
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        Konstrukcji „let! ... and! ...” można użyć tylko wtedy, gdy konstruktor wyrażeń obliczeniowych definiuje metodę „{0}” lub odpowiednie metody „MergeSource” i „Bind”
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        Nie można dodać powiązań statycznych do rozszerzeń wewnętrznych. Zamiast tego rozważ użycie „statycznego elementu członkowskiego”.
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        Nieoczekiwany typ funkcji w definicji pola przypadku unii. Jeśli zamierzasz, aby pole było funkcją, rozważ ujęcie podpisu funkcji w nawiasy, np. | Przypadek a -> b | Przypadek (a -> b).
         
       
       
@@ -1552,6 +1617,11 @@
         Rozważ użycie polecenia „return!” zamiast „return”.
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         Ten atrybut jest obecnie nieobsługiwany przez kompilator języka F#. Zastosowanie go nie spowoduje osiągnięcie zamierzonego skutku.
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        Nierozpoznana opcja: „{0}”. Użyj polecenia „--help”, aby dowiedzieć się więcej o rozpoznawanych opcjach wiersza polecenia.
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        Po określeniu widoczności właściwości ustawienie widoczności metody „set” lub „get” jest niedozwolone.
         
       
       
@@ -4479,7 +4549,7 @@
       
       
         The expression form {{ expr with ... }} may only be used with record types. To build object types use {{ new Type(...) with ... }}
-        Wyrażenie w postaci {{ wyrażenie with ... }} może być używane tylko z typami rekordów. Aby utworzyć typy obiektów, użyj wyrażenia {{ new Typ(...) with ... }}
+        Wyrażenie w formie {{ expr with ... }} może być używane tylko z typami rekordów. Aby utworzyć typy obiektów, użyj wyrażenia {{ new Type(...) with ... }}
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        W przypadku języka F#7 i niższych, definicje wartości statycznych mogą być używane tylko w typach z konstruktorem podstawowym („type X(args) = ...”). Aby włączyć je we wszystkich innych typach, użyj wersji językowej „wersja zapoznawcza”.
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        Możliwe niepoprawne wcięcie: ten token jest poza kontekstem rozpoczynającym się w pozycji {0}. Spróbuj użyć dodatkowego wcięcia dla tego tokenu lub standardowych konwencji formatowania.
+        Nieoczekiwana składnia lub możliwe niepoprawne wcięcie: ten token jest poza kontekstem uruchomionym na pozycji {0}. Spróbuj jeszcze bardziej wciąć to ustawienie.\nAby kontynuować używanie niezgodnych wcięć, przekaż flagę „--strict-indentation-” do kompilatora lub ustaw wersję języka na F# 7.
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        Nieprawidłowe użycie elementu „fixed”. Element „fixed” może być używany tylko w deklaracji formularza „use x = fixed expr”, gdzie wyrażeniem jest jeden z następujących elementów: tablica, adres elementu tablicy, ciąg, byref, inref lub typ implementujący funkcję GetPinnableReference()
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Klucz menedżera pakietów „{0}” nie został zarejestrowany w {1}. Aktualnie zarejestrowane: {2}. Aby dowiedzieć się więcej o rozszerzeniach, odwiedź stronę: https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pt-BR.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pt-BR.xlf
index 2673132d50..8cdbcdb29c 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pt-BR.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pt-BR.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        A cadeia de caracteres interpolada contém identificadores sem tipo. É recomendável adicionar especificadores de formato com tipo.
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        Esta expressão é um registro anônimo, use {{|...|}} em vez de {{...}}.
         
       
       
@@ -82,6 +82,11 @@
         Se um tipo usar os atributos [<Sealed>] e [<AbstractClass>], isso significará que ele é estático. A implementação de interfaces não é permitida.
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         O uso de ':=' da biblioteca F# foi preterido. Consulte https://aka.ms/fsharp-refcell-ops. Por exemplo, altere 'cell := expr' para 'cell.Value <- expr'.
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        O membro ou a função "{0}" tem o atributo "TailCallAttribute", mas não está sendo usado de maneira recursiva em cauda.
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        As restrições "unmanaged" e "not struct" são inconsistentes
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        sublinhado ponto abreviação para função somente acessador
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        Gera avisos se um membro ou função tem o atributo "TailCall", mas não está sendo usado de maneira recursiva em cauda.
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        Interseção de restrição em tipos flexíveis
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        associações fixas estendidas para byref e GetPinnableReference
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        Interpolação de cadeia de caracteres estendida semelhante a literais de cadeia de caracteres bruta C#.
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        Nomes de argumento implícitos aprimorados
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        Diagnóstico 3559 (avisar quando obj inferido) no nível informativo, desativado por padrão
         
       
       
@@ -397,9 +417,14 @@
         gerenciamento de pacotes
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        preferir String.GetPinnableReference em associações fixas
         
       
       
@@ -437,6 +462,11 @@
         máquinas de estado retomável
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         restrições de auto-tipo
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        Permitir associações let estáticas em tipos de união, registro, struct e não incremental
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        Gera erros de recuo incorreto, permite uma melhor recuperação e análise durante a edição
         
       
       
@@ -472,6 +502,11 @@
         representação estrutural para padrões ativos
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         Suporte para try-with em expressões de sequência
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        Interoperabilidade entre a restrição genérica não gerenciada de C# e F# (emitir modreq adicional)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        Gera avisos quando várias correspondências de tipo de registro foram encontradas durante a resolução de nomes devido à sobreposição de nomes de campo.
         
       
       
         'while!' expression
-        'while!' expression
+        expressão "while!"
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        Usado em expressões de computação para introduzir um constructo de looping em que a condição é o resultado de outra expressão de computação.
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        Não há suporte para interpolação de cadeia de caracteres estendida nesta versão do F#.
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        Este não é um identificador válido
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        O literal da cadeia de caracteres bruta interpolada entre aspas triplas não começa com caracteres “$” suficientes para permitir essa quantidade de chaves de abertura consecutivas como conteúdo.
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        O literal da cadeia de caracteres bruta interpolada entre aspas triplas não começa com caracteres “$” suficientes para permitir essa quantidade de caracteres "%" consecutivos.
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        A cadeia de caracteres interpolada contém chaves de fechamento sem correspondência.
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        Substituir regras de recuo implícitas pela versão da linguagem
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        A sintaxe de interseção de restrição só pode ser usada com tipos flexíveis, por exemplo, "#IDisposable & #ISomeInterface".
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+        Esperando uma expressão
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        Padrão esperado
         
       
       
         Expecting type
-        Expecting type
+        Esperando tipo
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        Palavra-chave "{0}" ausente
         
       
       
         Expecting member body
-        Expecting member body
+        Esperando corpo do membro
         
       
       
         Missing union case name
-        Missing union case name
+        Nome do caso de união ausente
         
       
       
@@ -912,9 +957,9 @@
         Este acesso de membro é ambíguo. Use parênteses em torno da criação do objeto, por exemplo, '(new SomeType(args)).MemberName''.
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        O estado pickle recém-adicionado não pode ser usado em FSharp.Core, pois ele também deve estar funcionando em compiladores e ferramentas mais antigos também. A janela de tempo é de pelo menos três anos após a introdução do recurso. Violação: {0}. Contexto: \n {1} 
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (Nome sugerido)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        O significado de _ é ambíguo aqui. Ele não pode ser usado para uma variável descartada e uma abreviação de função no mesmo escopo.
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        Esse registro anônimo deve ter os campos {0}; mas aqui tem campos {1}.
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        Esse registro anônimo deve ter campos {0}; mas aqui tem o campo "{1}".
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        Esse registro anônimo não tem os campos {0}.
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        Esse registro anônimo tem campos extras. Remover campos {0}.
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        Esse registro anônimo deve ter o campo "{0}", mas aqui tem campos {1}.
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        Esse registro anônimo deve ter o campo "{0}", mas aqui tem o campo "{1}".
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        Este registro anônimo não tem o campo "{0}".
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        Esse registro anônimo tem um campo extra. Remover campo "{0}".
         
       
       
@@ -1112,6 +1157,11 @@
         Essa expressão de registro copiar e atualizar altera todos os campos do tipo de registro '{0}'. Considere usar a sintaxe de construção de registro em vez disso.
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         A sintaxe 'expr1[expr2]' é usada para indexação. Considere adicionar uma anotação de tipo para habilitar a indexação ou, se chamar uma função, adicione um espaço, por exemplo, 'expr1 [expr2]'.
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        O campo "{0}" aparece várias vezes nesta expressão de registro ou padrão
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        Foram encontradas várias correspondências de tipo:\n{0}\nO tipo "{1}" foi usado. Devido aos nomes de campo sobrepostos\n{2}\nconsidere usar anotações de tipo ou alterar a ordem das instruções abertas.
         
       
       
@@ -1247,6 +1297,16 @@
         Usar métodos com 'NoEagerConstraintApplicationAttribute' requer /langversion:6.0 ou posterior
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         Essa expressão oferece suporte à indexação, por exemplo, 'expr. [index]'. A sintaxe 'expr[index]' requer /langversion:preview. Consulte https://aka.ms/fsharp-index-notation.
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        Essa substituição usa uma tupla em vez de vários argumentos. Tente adicionar uma camada adicional de parênteses na definição do método (por exemplo, "member _. Foo((x, y))") ou remova os parênteses na declaração de método abstrato (por exemplo, "membro abstrato Foo: 'a * 'b -> 'c").
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        O “let! ... and! ...” só poderá ser usada se o construtor de expressão de cálculo definir um método “{0}” ou métodos “MergeSources” e “Bind” apropriados
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        Associações estáticas não podem ser adicionadas a aumentos extrínsecos. Considere usar um "membro estático".
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        Tipo de função inesperado na definição de campo de caso de união. Se você pretende que o campo seja uma função, considere encapsular a assinatura de função com parênteses, por exemplo, | Caso de a -> b em | Caso de (a -> b).
         
       
       
@@ -1552,6 +1617,11 @@
         Considere usar 'return!' em vez de 'return'.
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         Este atributo atualmente não é suportado pelo compilador F#. A sua aplicação não alcançará o efeito pretendido.
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        Opção não reconhecida: "{0}" Use "--help" para saber mais sobre as opções de linha de comando reconhecidas.
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        Quando a visibilidade de uma propriedade é especificada, não é permitido definir a visibilidade do método set ou get.
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        Para F#7 e inferior, as definições de valores estáticos só podem ser usadas em tipos com um construtor primário ('type X(args) = ...'). Para habilitá-los em todos os outros tipos, use a versão do idioma “versão prévia”.
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        Recuo possivelmente incorreto: este token está fora do contexto iniciado na posição {0}. Tente recuar mais este token ou use conversões de formatação padrão.
+        Sintaxe inesperada ou possível recuo incorreto: esse token está fora do contexto iniciado na posição {0}. Tente recuar isso ainda mais.\nPara continuar usando o recuo não compatível, passe o sinalizador '--strict-indentation-' para o compilador ou defina a versão da linguagem como F# 7.
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        Uso inválido de “fixed”. “fixed” só pode ser usado em uma declaração da forma “use x =fixed expr” onde a expressão é uma das seguintes: uma matriz, o endereço de um elemento da matriz, uma cadeia de caracteres, um byref, um inref ou um tipo implementando GetPinnableReference()
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        A chave do gerenciador de pacotes “{0}” não foi registrada em {1}. Atualmente cadastrado: {2}. Para saber mais sobre extensões, visite: https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ru.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ru.xlf
index 8df26b4c20..1319210fbc 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ru.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ru.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        Интерполированная строка содержит нетипизированные идентификаторы. Рекомендуется добавить типизированные описатели формата.
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        Это выражение является анонимной записью. Используйте {{|...|}} вместо {{...}}.
         
       
       
@@ -82,6 +82,11 @@
         Если тип использует оба атрибута [<Sealed>] и [<AbstractClass>], это означает, что он статический. Реализация интерфейсов не допускается.
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         Использование ":=" из библиотеки F# является нерекомендуемым. См. https://aka.ms/fsharp-refcell-ops. Например, замените "cell := expr" на "cell.Value <- expr".
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        Элемент или функция "{0}" содержит атрибут "TailCallAttribute", но не используется в рекурсивном хвостовом режиме.
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        Ограничения "unmanaged" и "not struct" несовместимы
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        символ подчеркивания, сокращение точки для функции только для метода доступа
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        Выдает предупреждения, если элемент или функция имеет атрибут "TailCall", но не используется в рекурсивном хвостовом режиме.
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        Пересечение ограничений на гибких типах
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        расширенные фиксированные привязки для byref и GetPinnableReference
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        Расширенная интерполяция строк, аналогичная литералам необработанных строк C#.
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        Улучшенные имена подразумеваемых аргументов
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        Diagnostic 3559 (предупреждать при выводе obj) на информационном уровне, отключено по умолчанию
         
       
       
@@ -397,9 +417,14 @@
         управление пакетами
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        рекомендуется использовать String.GetPinnableReference в фиксированных привязках
         
       
       
@@ -437,6 +462,11 @@
         возобновляемые конечные автоматы
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         ограничения самостоятельного типа
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        Разрешить статические привязки "let" в типах union, record, struct, non-incremental-class
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        Выдает ошибки при неправильном отступе, обеспечивает более эффективное восстановление и анализ во время редактирования
         
       
       
@@ -472,6 +502,11 @@
         представление структуры для активных шаблонов
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         Поддержка try-with в выражениях последовательности
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        Взаимодействие между универсальным ограничением "unmanaged" C# и F#(создание дополнительного modreq)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        Выдает предупреждения, когда при разрешении имен обнаружено несколько совпадений типов записи из-за перекрывающихся имен полей.
         
       
       
         'while!' expression
-        'while!' expression
+        выражение "while!"
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        Используется в вычислительных выражениях для введения циклической конструкции, в которой условие является результатом другого вычислительного выражения.
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        Расширенная интерполяция строк не поддерживается в этой версии F#.
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        Это недопустимый идентификатор
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        Интерполированный литерал строки в тройных кавычках не начинается с достаточного количества символов "$", чтобы разрешить использовать такое же количество последовательных открывающих фигурных скобок в качестве содержимого.
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        Интерполированный литерал строки в тройных кавычках не начинается с достаточного количества символов "$", чтобы разрешить использование такого же количества последовательных символов "%".
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        Интерполированная строка содержит непарные закрывающие фигурные скобки.
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        Переопределить правила отступов, предусмотренные версией языка
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        Синтаксис пересечения ограничений можно использовать только с гибкими типами, например. "#IDisposable & #ISomeInterface".
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+        Ожидается выражение
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        Ожидается шаблон
         
       
       
         Expecting type
-        Expecting type
+        Требуется тип
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        Отсутствует ключевое слово "{0}"
         
       
       
         Expecting member body
-        Expecting member body
+        Требуется текст сообщения элемента
         
       
       
         Missing union case name
-        Missing union case name
+        Отсутствует имя случая объединения
         
       
       
@@ -912,9 +957,9 @@
         Неоднозначный доступ к этому элементу. Заключите операцию создания объекта в круглые скобки, например (new Объект(аргументы)).Элемент
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        Недавно добавленное состояние "Pickle" нельзя использовать в FSharp.Core, поскольку оно должно работать и в старых компиляторах+инструментах. Временной промежуток составляет не менее 3 лет после введения функции. Нарушение: {0}. Контекст: \n {1} 
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (предложенное имя)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        Неоднозначное значение символа _ здесь. Его нельзя использовать для пустой переменной и сокращенной функции в одной области.
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        Эта анонимная запись должна содержать поля {0}; но содержит поля {1}.
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        Эта анонимная запись должна содержать поля {0}; но содержит поле "{1}".
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        В этой анонимной записи отсутствуют поля {0}.
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        Эта анонимная запись содержит дополнительные поля. Удалите поля {0}.
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        Эта анонимная запись должна содержать поле "{0}", но содержит поля {1}.
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        Эта анонимная запись должна содержать поле "{0}", но содержит поле "{1}".
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        В этой анонимной записи отсутствует поле "{0}".
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        Эта анонимная запись содержит дополнительное поле. Удалите поле "{0}".
         
       
       
@@ -1112,6 +1157,11 @@
         Это выражение записи копирования и обновления изменяет все поля типа записи "{0}". Вместо этого можно использовать синтаксис конструкции записи.
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         Для индексирования используется синтаксис "expr1[expr2]". Рассмотрите возможность добавления аннотации типа для включения индексации или при вызове функции добавьте пробел, например "expr1 [expr2]".
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        Поле "{0}" появляется несколько раз в данном выражении записи или шаблона
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        Найдено несколько совпадений типов:\n{0}\nИспользован тип "{1}". Из-за перекрывающихся имен полей\n{2}\nрекомендуется использовать заметки типов или изменить порядок открытых операторов.
         
       
       
@@ -1247,6 +1297,16 @@
         Для использования методов с "NoEagerConstraintApplicationAttribute" требуется /langversion:6.0 или более поздняя версия
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         Это выражение поддерживает индексирование, например, "expr. [index]". Для синтаксиса "expr[index]" требуется /langversion:preview. См. https://aka.ms/fsharp-index-notation.
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        Это переопределение принимает кортеж вместо нескольких аргументов. Попробуйте добавить дополнительный слой круглых скобок в определении метода (например, "member _.Foo((x, y))") или удалить круглые скобки в объявлении абстрактного метода (например, "abstract member Foo: "a * "b -> "c").
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        Конструкцию "let! ... and! ..." можно использовать только в том случае, если построитель выражений с вычислениями определяет либо метод "{0}", либо соответствующие методы "MergeSources" и "Bind"
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        Статические привязки нельзя добавлять к внешним расширениям. Вместо этого рекомендуется использовать "static member".
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        Неожиданный тип функции в определении поля регистра объединения. Если предполагается, что поле будет представлять собой функцию, следует обернуть сигнатуру функции родительными падежами, например, | Case of a -> b в | Case of (a -> b).
         
       
       
@@ -1552,6 +1617,11 @@
         Рекомендуется использовать "return!" вместо "return".
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         Сейчас этот атрибут не поддерживается компилятором F#. Его применение не приведет к желаемому результату.
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        Нераспознанный параметр: "{0}". Используйте "--help", чтобы узнать о распознанных параметрах командной строки.
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        Если указана видимость для свойства, настройка видимости для задания или получения метода не разрешена.
         
       
       
@@ -4279,7 +4349,7 @@
       
       
         This construct may only be used within list, array and sequence expressions, e.g. expressions of the form 'seq {{ ... }}', '[ ... ]' or '[| ... |]'. These use the syntax 'for ... in ... do ... yield...' to generate elements
-        Использовать эту конструкцию можно только в выражениях списка, массива и последовательности, например в выражениях формы "seq {{ … }}", "[ … ]" или "[| … |]". Они создают элементы с помощью синтаксиса "for … in … do … yield…"
+        Использовать эту конструкцию можно только в выражениях списка, массива и последовательности, например в выражениях формы "seq {{ ... }}", "[ ... ]" или "[| ... |]". Они создают элементы с помощью синтаксиса "for ... in ... do ... yield..."
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        Определения статических значений для F#7 и ниже можно использовать только в типах с первичным конструктором ("type X(args) = ..."). Чтобы включить их во всех других типах, используйте версию языка "preview".
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        Возможно, неправильные отступы: этот токен находится вне контекста, начиная с позиции {0}. Попробуйте увеличить отступ токена или использовать стандартные соглашения о форматировании.
+        Неожиданный синтаксис или, возможно, неправильный отступ: этот токен находится вне контекста, начатого в позиции {0}. Попробуйте увеличить отступ.\nЧтобы продолжить использование несоответствующего отступа, передайте компилятору флаг '--strict-indentation-' или установите версию языка F# 7.
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        Недопустимое использование выражения "fixed". Выражение "fixed" можно использовать только в объявлении формы "use x = fixed expr", где выражение является одним из следующих объектов: массивом, адресом элемента массива, строкой, функцией byref, inref или типом, реализующим GetPinnableReference()
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Ключ диспетчера пакетов "{0}" не зарегистрирован в {1}. Сейчас зарегистрировано: {2}. Дополнительные сведения о расширениях см. на странице https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.tr.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.tr.xlf
index 8c4c9c3ae4..d9143a0db5 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.tr.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.tr.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        İlişkilendirilmiş dize, türü belirsiz tanımlayıcılar içeriyor. Türü belirtilen biçim belirticiler eklenmesi önerilir.
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        Bu ifade, anonim bir kayıt, {{...}} yerine {{|...|}} kullanın.
         
       
       
@@ -82,6 +82,11 @@
         Bir tür, hem [<Sealed>] hem de [< AbstractClass>] özniteliklerini kullanıyorsa bu statik olduğu anlamına gelir. Arabirim uygulamaya izin verilmez.
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         F# kitaplığından gelen ':=' kullanımı kullanım dışı. https://aka.ms/fsharp-refcell-ops’a bakın. Örneğin, lütfen 'cell := expr' ifadesini 'cell.Value <- expr' olarak değiştirin.
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        Üye veya '{0}' işlevi, 'TailCallAttribute' özniteliğine sahip ancak kuyruk özyinelemeli bir şekilde kullanılmıyor.
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        'unmanaged' ve 'not struct' kısıtlamaları tutarsız
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        yalnızca erişimci işlevi için alt çizgi nokta kısaltma
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        Üye veya işlevi, 'TailCallAttribute' özniteliğine sahip olmasına karşın kuyruk özyinelemeli bir şekilde kullanılmıyorsa uyarı verir.
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        Esnek türlerde kısıtlama kesişimi
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        byref ve GetPinnableReference için genişletilmiş sabit bağlamalar
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        C# ham sabit değerli dizeye benzer genişletilmiş dize ilişkilendirmesi.
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        Geliştirilmiş örtük bağımsız değişken adları
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        Tanılama 3559 (obj çıkarsanıldığında uyarı ver) bilgi düzeyinde, varsayılan olarak kapalı
         
       
       
@@ -397,9 +417,14 @@
         paket yönetimi
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        sabit bağlamalarda String.GetPinnableReference tercih edin
         
       
       
@@ -437,6 +462,11 @@
         sürdürülebilir durum makineleri
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         kendi kendine tür kısıtlamaları
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        Birleşim, kayıt, yapı ve artımlı olmayan sınıf türlerinde statik let bağlamalarına izin ver
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        Yanlış girinti üzerine hata verir ve düzenleme sırasında daha iyi kurtarma ve analize olanak sağlar
         
       
       
@@ -472,6 +502,11 @@
         etkin desenler için yapı gösterimi
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         Dizi ifadelerinde try-with desteği
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        C# ile F#' arasında yönetilmeyen genel kısıtlama (ek modreq yayın)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        Çakışan alan adları nedeniyle, ad çözümlemesi sırasında birden çok kayıt türü eşleşmesi olduğunda uyarı verir.
         
       
       
         'while!' expression
-        'while!' expression
+        'while!' ifadesi
         
       
       
@@ -524,7 +564,7 @@
       
       
         .NET-style format specifiers such as '{{x,3}}' or '{{x:N5}}' may not be mixed with '%' format specifiers.
-        '{{X,3}}' ya da '{{x:N5}}' gibi .NET stili biçim belirticileri '%' biçim belirticileriyle karışık kullanılamaz.
+        '{{x,3}}' ya da '{{x:N5}}' gibi .NET stili biçim belirticileri '%' biçim belirticileriyle karışık kullanılamaz.
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        Hesaplama ifadelerinde, koşulun başka bir hesaplama ifadesinin sonucu olduğu bir döngü yapısı eklemek için kullanılır.
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        Genişletilmiş dize ilişkilendirmesi bu F# sürümünde desteklenmiyor.
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        Bu, geçerli bir tanımlayıcı değil
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        İlişkilendirilmiş, üçlü tırnak için alınmış dize sabit değerli dize, bu kadar çok ardışık açma küme ayracına içerik olarak izin verecek yeterli '$' karakterle başlamıyor.
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        İlişkilendirilmiş, üçlü tırnak içine alınmış sabit değerli dize, bu kadar ardışık '%' karaktere izin verecek yeterli '$' karakterle başlayamaz.
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        İlişkilendirilmiş dize, eşleşmeyen kapatma küme ayraçları içeriyor.
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        Dil sürümü tarafından kapsanan girinti kurallarını geçersiz kıl
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        Kısıtlama kesişimi söz dizimi yalnızca esnek türlerle kullanılabilir. Ör. '#IDisposable & #ISomeInterface'.
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+        İfade bekleniyor
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        Desen bekleniyor
         
       
       
         Expecting type
-        Expecting type
+        Tür bekleniyor
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        Eksik '{0}' anahtar sözcüğü
         
       
       
         Expecting member body
-        Expecting member body
+        Üye gövdesi bekleniyor
         
       
       
         Missing union case name
-        Missing union case name
+        Birleşim durumu adı eksik
         
       
       
@@ -912,9 +957,9 @@
         Bu üye erişimi belirsiz. Lütfen nesne oluşturma etrafında parantez kullanın, örneğin '(yeni SomeType (args)).MemberName’
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        Yeni eklenen pickle durumu FSharp.Core'da kullanılamaz çünkü eski derleyicilerde ve araçlarda da çalışması gerekir. Zaman penceresi, özellik giriş tarihinden en az 3 yıl sonradır. İhlal: {0} . Bağlam: \n {1} 
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (Önerilen ad)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        _ öğesinin anlamı burada belirsiz. Aynı kapsamda, atılan bir değişken ve işlev kısaltması için kullanılamaz.
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        Bu anonim kayıtta {0} alanları olmalıdır ancak burada{1} alanları var.
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        Bu anonim kayıtta {0} alanları olmalıdır ancak burada '{1}' alanı var.
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        Bu anonim kayıtta {0} alanları eksik.
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        Bu anonim kayıtta ekstra alanlar var. {0} alanlarını kaldır
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        Bu anonim kayıtta '{0}' alanı olmalıdır ancak burada '{1}' alanları var.
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        Bu anonim kayıtta '{0}' alanı olmalıdır ancak burada '{1}' alanı var.
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        Bu anonim kayıtta '{0}' alanı eksik.
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        Bu anonim kayıtta fazladan bir alan var. '{0}' alanını kaldırın.
         
       
       
@@ -1112,6 +1157,11 @@
         Bu kopyalama ve güncelleştirme kayıt ifadesi, '{0}' kayıt türündeki tüm alanları değiştirir. Bunun yerine kayıt oluşturma söz dizimini kullanmayı deneyin.
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         Söz dizimi “expr1[expr2]” dizin oluşturma için kullanılıyor. Dizin oluşturmayı etkinleştirmek için bir tür ek açıklama eklemeyi düşünün veya bir işlev çağırıyorsanız bir boşluk ekleyin, örn. “expr1 [expr2]”.
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        '{0}' alanı bu kayıt ifadesinde veya deseninde birden fazla görünüyor.
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        Birden çok tür eşleşmesi bulundu:\n{0}\nTür '{1}' kullanıldı. Çakışan alan adları nedeniyle\n{2}\nek açıklamalar kullanmayı düşünün veya açık deyimlerin sırasını değiştirin.
         
       
       
@@ -1247,6 +1297,16 @@
         'NoEagerConstraintApplicationAttribute' içeren yöntemlerin kullanılması /langversion:6.0 veya üstünü gerektiriyor
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         Bu ifade dizin oluşturmayı destekler, örn. “expr.[index]”. Söz dizimi “expr.[index]” /langversion:preview gerektirir. https://aka.ms/fsharp-index-notation'a bakın.
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        Bu geçersiz kılma, birden çok bağımsız değişken yerine bir tanımlama grubu alır. Metot tanımına ek bir parantez katmanı (ör. 'member _. Foo((x, y)')) eklemeyi deneyin veya soyut yöntem bildirimindeki parantezleri kaldırın (ör. 'abstract member Foo: 'a * 'b -> 'c').
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        'let! ... and! ...' yapısı, yalnızca hesaplama ifadesi oluşturucu bir '{0}' metodunu ya da uygun 'MergeSources' ve 'Bind' metotlarını tanımlarsa kullanılabilir
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        Statik bağlamalar dış genişletmelere eklenemez. Bunun yerine 'static member' kullanmayı düşünün.
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        Birleşim durumu alan tanımında beklenmeyen işlev türü. Alanın bir işlev olmasını amaçlıyorsanız işlev imzasını parens ile sarmalamayı göz önünde bulundurun. Ör. | (a -> b) durumunda | a -> b durumu.
         
       
       
@@ -1552,6 +1617,11 @@
         'return' yerine 'return!' kullanmayı deneyin.
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         Bu öznitelik şu anda F# derleyici tarafından desteklenmiyor. Özniteliğin uygulanması istenen etkiyi sağlamaz.
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        Tanınmayan seçenek: '{0}'. Tanınan komut satırı seçenekleri hakkında bilgi edinmek için '--help' komutunu kullanın.
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        Bir özelliğin görünürlüğü belirtilirse, küme veya alma yönteminin görünürlüğünü ayarlamaya izin verilmez.
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        F#7 ve altı için, statik değer tanımları yalnızca birincil oluşturucu ('type X(args) = ...') içeren türlerde kullanılabilir. Bunları diğer tüm türlerde etkinleştirmek için 'önizleme' dil sürümünü kullanın.
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        Olası hatalı girinti: {0} konumundan başlatılan bu belirteç bağlam dışıdır. Bu belirteci daha fazla girintilemeyi veya standart biçimlendirme kurallarını kullanmayı deneyin.
+        Beklenmeyen sözdizimi veya olası yanlış girinti: Bu belirteç, {0} konumunda başlayan bağlamın ofsaytıdır. Bunu daha fazla girintilemeyi deneyin.\nUygun olmayan girintiyi kullanmaya devam etmek için '--strict-indentation-' işaretini derleyiciye iletin veya dil sürümünü F# 7 olarak ayarlayın.
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        'Sabit'in geçersiz kullanımı. 'sabit' yalnızca ifadenin aşağıdakilerden biri olduğu 'x = sabit ifade kullan' biçimindeki bir bildirimde kullanılabilir: bir dizi, bir dizi öğesinin adresi, bir dize, bir byref, bir inref veya bir GetPinnableReference()'ı uygulayan tür
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Paket yöneticisi '{0}' anahtar anahtarı bu makinede {1}. Şu anda kayıtlı: {2}. Uzantılar hakkında daha fazla bilgi edinmek için şu adresi ziyaret edin: https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf
index 03d09f8425..c62c1e73f6 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        内插字符串包含非类型化标识符。建议添加类型化格式说明符。
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        此表达式是匿名记录,请使用 {{|...|}} 而不是 {{...}}。
         
       
       
@@ -82,6 +82,11 @@
         如果类型同时使用 [<Sealed>] 和 [<AbstractClass>] 属性,则表示它是静态的。不允许实现接口。
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         已弃用 F# 库中的“:=”。请参阅 https://aka.ms/fsharp-refcell-ops。 例如,请将“cell := expr”更改为“cell.Value <- expr”。
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        成员或函数“{0}”具有 "TailCallAttribute" 属性,但未以尾递归方式使用。
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        约束 "unmanaged" 和 "not struct" 不一致
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        用于仅存取器函数的下划线点速记
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        如果成员或函数具有 "TailCall" 属性,但未以尾递归方式使用,则引发警告。
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        灵活类型的约束交集
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        byref 和 GetPinnableReference 的扩展固定绑定
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        扩展字符串内插类似于 C# 原始字符串字面量。
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        改进了默示的参数名称
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        诊断 3559 (推断出 obj 时发出警告),信息级别,默认关闭
         
       
       
@@ -397,9 +417,14 @@
         包管理
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        在固定绑定中首选 String.GetPinnableReference
         
       
       
@@ -437,6 +462,11 @@
         可恢复状态机
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         自类型约束
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        允许在联合、记录、结构、非增量类类型中使用静态 let 绑定
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        在缩进不准确时引发错误,以便在编辑期间更好地恢复和分析
         
       
       
@@ -472,6 +502,11 @@
         活动模式的结构表示形式
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         支持在序列表达式中试用
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        C# 和 F# 的非托管泛型约束之间的互操作(发出额外的 modreq)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        在名称解析期间由于字段名称重叠而找到多个记录类型匹配项时引发警告。
         
       
       
         'while!' expression
-        'while!' expression
+        "while!" 表达式
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        在计算表达式中用于引入循环构造,其中条件是另一个计算表达式的结果。
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        此版本的 F# 不支持扩展字符串内插。
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        这不是有效的标识符
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        内插三引号字符串字面量的开头没有足够的 "$" 字符以允许将这么多连续的左大括号作为内容。
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        内插三引号字符串字面量的开头没有足够的 "$" 字符来允许这么多连续的 "%" 字符。
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        内插字符串包含不匹配的右大括号。
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        替代语言版本隐含的缩进规则
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        约束交集语法只能与灵活类型一起使用,例如 "#IDisposable & #ISomeInterface"。
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+        应为表达式
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        预期模式
         
       
       
         Expecting type
-        Expecting type
+        预期类型
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        缺少关键字“{0}”
         
       
       
         Expecting member body
-        Expecting member body
+        预期成员正文
         
       
       
         Missing union case name
-        Missing union case name
+        缺少联合用例名称
         
       
       
@@ -912,9 +957,9 @@
         此成员访问权限不明确。请在对象创建周围使用括号,例如 “(new SomeType(args)).MemberName”
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        新添加的泡菜状态不能在 FSharp.Core 中使用,因为它必须同时在较旧的编译器和工具中工作。时间窗口是在功能介绍后的至少 3 年内。冲突: {0}。上下文: \n {1} 
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (建议名称)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        此处的 _ 含义不明确。它不能用于同一范围内的已放弃变量和函数速记。
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        此匿名记录应具有字段 {0};但此处包含字段 {1}。
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        此匿名记录应具有字段 {0};但此处包含字段“{1}”。
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        此匿名记录缺少字段 {0}。
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        此匿名记录具有额外的字段。请删除字段 {0}。
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        此匿名记录应具有字段“{0}”,但此处具有字段 {1}。
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        此匿名记录应具有字段“{0}”,但此处具有字段“{1}”。
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        此匿名记录缺少字段“{0}”。
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        此匿名记录有一个额外的字段。删除字段“{0}”。
         
       
       
@@ -1112,6 +1157,11 @@
         此复制和更新记录表达式更改记录类型“{0}”的所有字段。请考虑改用记录构造语法。
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         语法“expr1[expr2]”用于索引。考虑添加类型批注来启用索引,或者在调用函数添加空格,例如“expr1 [expr2]”。
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        字段“{0}”在此记录表达式或模式中多次出现
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        找到多个类型匹配项: \n{0}\n使用了类型“{1}”。由于字段名称重叠,\n{2}\n考虑使用类型注释或更改 open 语句的顺序。
         
       
       
@@ -1247,6 +1297,16 @@
         将方法与 “NoEagerConstraintApplicationAttribute” 配合使用需要 /langversion:6.0 或更高版本
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         此表达式支持索引,例如“expr.[index]”。语法“expr[index]”需要 /langversion:preview。请参阅 https://aka.ms/fsharp-index-notation。
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        此重写采用元组而不是多个参数。请尝试在方法定义中添加额外的括号层(例如 'member _.Foo((x, y))'),或在抽象方法声明中删除括号 (例如 'abstract member Foo: 'a * 'b -> 'c')。
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        仅当计算表达式生成器定义了 "{0}" 方法或适当的 "MergeSources" 和 "Bind" 方法时,才可以使用 "let! ... and! ..." 构造
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        无法将静态绑定添加到外部增强。请考虑改用 "static member"。
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        联合用例字段定义中出现意外的函数类型。如果打算将字段作为函数,请考虑使用括号括起函数签名,例如 | Case of a -> b into | Case of (a -> b)。
         
       
       
@@ -1552,6 +1617,11 @@
         考虑使用 "return!",而非 "return"。
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         F# 编译器当前不支持此属性。应用它不会达到预期效果。
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        无法识别的选项: "{0}"。使用 "--help" 了解可识别的命令行选项。
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        指定属性的可见性时,不允许设置 set 或 get 方法的可见性。
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        对于 F#7 及更低版本,静态值定义只能用于具有主构造函数的类型 ("type X(args) = ...")。若要在所有其他类型中启用它们,请使用“预览版”语言版本。
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        缩进可能不正确: 此标记位于从位置 {0} 开始的上下文的右侧。请尝试进一步缩进此标记,或使用标准格式设置约定。
+        意外语法或可能错误的缩进: 此令牌对于 {0} 处开始的上下文来说越位。尝试进一步缩进此内容。\n若要继续使用不符合条件的索引,请将 "--strict-indentation-" 传递给编译器,或者将语言版本设置为 F# 7。
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        "fixed" 的使用无效。"fixed" 只能在 "use x = fixed expr" 形式的声明中使用,其中表达式为以下项之一: 数组、数组元素的地址、字符串、byref、inref 或实现 GetPinnableReference() 的类型
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        {0} 中未注册包管理器密钥“{1}”。当前已注册: {2}。若要详细了解扩展,请访问: https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf
index 60a8c88558..5f66fcae4e 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf
@@ -4,7 +4,7 @@
     
       
         Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
-        Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended.
+        差補字串包含不具類型的識別項。建議新增具類型的格式規範。
         
       
       
@@ -49,7 +49,7 @@
       
       
         This expression is an anonymous record, use {{|...|}} instead of {{...}}.
-        This expression is an anonymous record, use {{|...|}} instead of {{...}}.
+        此運算式是匿名記錄,請使用 {{|...|}} 而不是 {{...}}。
         
       
       
@@ -82,6 +82,11 @@
         如果類型同時使用 [<Sealed>] 和 [<AbstractClass>] 屬性,表示其為靜態。不允許實作介面。
         
       
+      
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        An indexed property's getter and setter must have the same type. Property '{0}' has getter of type '{1}' but setter of type '{2}'.
+        
+      
       
         The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'.
         透過 F# 程式庫使用 ':=' 的方式已淘汰。請參閱 https://aka.ms/fsharp-refcell-ops。舉例來說,請將 'cell := expr' 變更為 'cell.Value <- expr'。
@@ -114,7 +119,17 @@
       
       
         The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
-        The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way.
+        成員或函式 '{0}' 具有 'TailCallAttribute' 屬性,但未以尾遞迴方式使用。
+        
+      
+      
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        Object expressions cannot implement interfaces with static abstract members or declare static members.
+        
+      
+      
+        The TailCall attribute should only be applied to recursive functions.
+        The TailCall attribute should only be applied to recursive functions.
         
       
       
@@ -174,7 +189,7 @@
       
       
         The constraints 'unmanaged' and 'not struct' are inconsistent
-        The constraints 'unmanaged' and 'not struct' are inconsistent
+        條件約束 'unmanaged' 與 'not struct' 不一致
         
       
       
@@ -199,7 +214,7 @@
       
       
         underscore dot shorthand for accessor only function
-        underscore dot shorthand for accessor only function
+        僅存取子函式的底線點速記
         
       
       
@@ -234,12 +249,17 @@
       
       
         Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
-        Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way.
+        如果成員或函式具有 'TailCall' 屬性,但未以尾遞迴方式使用,則引發警告。
+        
+      
+      
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
+        Raises warnings if the 'TailCall' attribute is used on non-recursive functions.
         
       
       
         Constraint intersection on flexible types
-        Constraint intersection on flexible types
+        彈性類型上的條件約束交集
         
       
       
@@ -289,12 +309,12 @@
       
       
         extended fixed bindings for byref and GetPinnableReference
-        extended fixed bindings for byref and GetPinnableReference
+        ByRef 和 GetPinnableReference 的擴充固定繫結
         
       
       
         Extended string interpolation similar to C# raw string literals.
-        Extended string interpolation similar to C# raw string literals.
+        類似於 C# 原始字串常值的擴充字串插補。
         
       
       
@@ -314,7 +334,7 @@
       
       
         Improved implied argument names
-        Improved implied argument names
+        改良的隱含引數名稱
         
       
       
@@ -324,7 +344,7 @@
       
       
         Diagnostic 3559 (warn when obj inferred) at informational level, off by default
-        Diagnostic 3559 (warn when obj inferred) at informational level, off by default
+        診斷 3559 (推斷 obj 時的警告) 資訊層級,預設為關閉
         
       
       
@@ -397,9 +417,14 @@
         套件管理
         
       
+      
+        prefer extension method over plain property
+        prefer extension method over plain property
+        
+      
       
         prefer String.GetPinnableReference in fixed bindings
-        prefer String.GetPinnableReference in fixed bindings
+        在固定繫結中優先使用 String.GetPinnableReference
         
       
       
@@ -437,6 +462,11 @@
         可繼續的狀態機器
         
       
+      
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        Share underlying fields in a [<Struct>] discriminated union as long as they have same name and type
+        
+      
       
         self type constraints
         自我類型限制式
@@ -449,7 +479,7 @@
       
       
         Allow static let bindings in union, record, struct, non-incremental-class types
-        Allow static let bindings in union, record, struct, non-incremental-class types
+        允許在等位、記錄、結構、非累加類別類型中使用靜態 let 繫結
         
       
       
@@ -459,7 +489,7 @@
       
       
         Raises errors on incorrect indentation, allows better recovery and analysis during editing
-        Raises errors on incorrect indentation, allows better recovery and analysis during editing
+        縮排不正確時引發錯誤,以便在編輯期間進行更好的復原和分析
         
       
       
@@ -472,6 +502,11 @@
         現用模式的結構表示法
         
       
+      
+        Union case test properties
+        Union case test properties
+        
+      
       
         Support for try-with in sequence expressions
         支援循序運算式中的 try-with
@@ -479,7 +514,12 @@
       
       
         Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
-        Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)
+        C# 與 F# 的非受控泛型條件約束之間的 Interop (發出額外的 modreq)
+        
+      
+      
+        Indexed properties getter and setter must have the same type
+        Indexed properties getter and setter must have the same type
         
       
       
@@ -494,12 +534,12 @@
       
       
         Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
-        Raises warnings when multiple record type matches were found during name resolution because of overlapping field names.
+        在名稱解析期間由於欄位名稱重疊而找到多個記錄類型相符項目時引發警告。
         
       
       
         'while!' expression
-        'while!' expression
+        'while!' 運算式
         
       
       
@@ -604,7 +644,7 @@
       
       
         Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
-        Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression.
+        用於計算運算式中,以引進迴圈建構,其中條件是另一個計算運算式的結果。
         
       
       
@@ -614,7 +654,7 @@
       
       
         Extended string interpolation is not supported in this version of F#.
-        Extended string interpolation is not supported in this version of F#.
+        此 F# 版本不支援擴充字串插補。
         
       
       
@@ -624,7 +664,7 @@
       
       
         This is not a valid identifier
-        This is not a valid identifier
+        這不是有效的識別項
         
       
       
@@ -639,12 +679,12 @@
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content.
+        差補三重引號字串常值開頭沒有足夠的 '$' 字元,因此無法允許這麼多連續的左大括弧作為內容。
         
       
       
         The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
-        The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters.
+        差補三重引號字串常值開頭沒有足夠的 '$' 字元,因此無法允許這麼多連續的 '%' 字元。
         
       
       
@@ -654,7 +694,7 @@
       
       
         The interpolated string contains unmatched closing braces.
-        The interpolated string contains unmatched closing braces.
+        差補字串包含不成對的右大括弧。
         
       
       
@@ -794,7 +834,7 @@
       
       
         Override indentation rules implied by the language version
-        Override indentation rules implied by the language version
+        覆寫語言版本隱含的縮排規則
         
       
       
@@ -834,7 +874,7 @@
       
       
         Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
-        Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'.
+        條件約束交集語法只能搭配彈性類型使用,例如「#IDisposable 與 #ISomeInterface'」。
         
       
       
@@ -869,17 +909,22 @@
       
       
         Expecting expression
-        Expecting expression
+        必須是運算式
+        
+      
+      
+        Expecting record field
+        Expecting record field
         
       
       
         Expecting pattern
-        Expecting pattern
+        必須是模式
         
       
       
         Expecting type
-        Expecting type
+        必須是類型
         
       
       
@@ -894,17 +939,17 @@
       
       
         Missing keyword '{0}'
-        Missing keyword '{0}'
+        遺漏關鍵字 '{0}'
         
       
       
         Expecting member body
-        Expecting member body
+        必須是成員主體
         
       
       
         Missing union case name
-        Missing union case name
+        遺漏聯集案例名稱
         
       
       
@@ -912,9 +957,9 @@
         此成員存取不明確。請在物件建立前後加上括弧,例如「(new SomeType(args)).MemberName」
         
       
-      
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
-         _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses.
+      
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
+        Incomplete declaration of a static construct. Use 'static let','static do','static member' or 'static val' for declaration.
         
       
       
@@ -939,7 +984,7 @@
       
       
         Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
-        Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} 
+        新加入的 pickle state 無法用於 FSharp.Core,因為它也必須在舊版的編譯器和工具中運作。該時間範圍在功能推出至少 3 年後。違規: {0}。內容: \n {1}
         
       
       
@@ -1024,12 +1069,12 @@
       
       
         (Suggested name)
-        (Suggested name)
+        (建議的名稱)
         
       
       
         The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
-        The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope.
+        此處的 _ 意義不明確。它不能在同一個範圍中既作為已捨棄的變數又作為函式速記。
         
       
       
@@ -1059,42 +1104,42 @@
       
       
         This anonymous record should have fields {0}; but here has fields {1}.
-        This anonymous record should have fields {0}; but here has fields {1}.
+        此匿名記錄應具有欄位 {0}; 但這裡具有欄位 {1}。
         
       
       
         This anonymous record should have fields {0}; but here has field '{1}'.
-        This anonymous record should have fields {0}; but here has field '{1}'.
+        此匿名記錄應具有欄位 {0}; 但這裡具有欄位 '{1}'。
         
       
       
         This anonymous record is missing fields {0}.
-        This anonymous record is missing fields {0}.
+        此匿名記錄遺漏欄位 {0}。
         
       
       
         This anonymous record has extra fields. Remove fields {0}.
-        This anonymous record has extra fields. Remove fields {0}.
+        此匿名記錄具有額外的欄位。請移除欄位 {0}。
         
       
       
         This anonymous record should have field '{0}' but here has fields {1}.
-        This anonymous record should have field '{0}' but here has fields {1}.
+        此匿名記錄應具有欄位 '{0}',但這裡具有欄位 {1}。
         
       
       
         This anonymous record should have field '{0}' but here has field '{1}'.
-        This anonymous record should have field '{0}' but here has field '{1}'.
+        此匿名記錄應具有欄位 '{0}',但這裡具有欄位 '{1}'。
         
       
       
         This anonymous record is missing field '{0}'.
-        This anonymous record is missing field '{0}'.
+        此匿名記錄遺漏欄位 '{0}'。
         
       
       
         This anonymous record has an extra field. Remove field '{0}'.
-        This anonymous record has an extra field. Remove field '{0}'.
+        此匿名記錄具有額外的欄位。請移除欄位 '{0}'。
         
       
       
@@ -1112,6 +1157,11 @@
         此複製和更新記錄運算式將變更記錄類型為 '{0}' 的所有欄位。請考慮改用記錄建構語法。
         
       
+      
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        Shorthand lambda syntax is only supported for atomic expressions, such as method, property, field or indexer on the implied '_' argument. For example: 'let f = _.Length'.
+        
+      
       
         The syntax 'expr1[expr2]' is used for indexing. Consider adding a type annotation to enable indexing, or if calling a function add a space, e.g. 'expr1 [expr2]'.
         語法 'expr1[expr2]' 已用於編製索引。請考慮新增類型註釋來啟用編製索引,或是呼叫函式並新增空格,例如 'expr1 [expr2]'。
@@ -1234,12 +1284,12 @@
       
       
         The field '{0}' appears multiple times in this record expression or pattern
-        The field '{0}' appears multiple times in this record expression or pattern
+        欄位 '{0}' 在這個記錄運算式或模式中出現多次
         
       
       
         Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
-        Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements.
+        找到多個類型相符項目:\n{0}\n使用了類型 '{1}'。由於欄位名稱重疊,\n{2}\n請考慮使用型別註解或變更起始陳述式的順序。
         
       
       
@@ -1247,6 +1297,16 @@
         使用具有 'NoEagerConstraintApplicationAttribute' 的方法需要 /langversion:6.0 或更新版本
         
       
+      
+        No static abstract member was found that corresponds to this override
+        No static abstract member was found that corresponds to this override
+        
+      
+      
+        No static abstract property was found that corresponds to this override
+        No static abstract property was found that corresponds to this override
+        
+      
       
         This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation.
         此運算式支援編製索引,例如 'expr.[index]'。語法 'expr[index]' 需要 /langversion:preview。請參閱 https://aka.ms/fsharp-index-notation。
@@ -1279,7 +1339,7 @@
       
       
         This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
-        This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c').
+        此覆寫接受一個元組,而不是多個引數。請嘗試在方法定義中新增額外一層括弧 (例如 'member _.Foo((x, y))'),或在抽象方法宣告中移除括弧 (例如 'abstract member Foo: 'a * 'b -> 'c')。
         
       
       
@@ -1294,7 +1354,7 @@
       
       
         The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
-        The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods
+        只有在計算運算式產生器定義 '{0}' 方法或正確的 'MergeSource' 和 'Bind' 方法時,才可使用 'let! ... and! ...' 建構
         
       
       
@@ -1334,7 +1394,12 @@
       
       
         Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
-        Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead.
+        無法將靜態繫結新增至外來擴充。請考慮改用「靜態成員」。
+        
+      
+      
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
+        If a multicase union type is a struct, then all fields with the same name must be of the same type. This rule applies also to the generated 'Item' name in case of unnamed fields.
         
       
       
@@ -1379,7 +1444,7 @@
       
       
         Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
-        Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b).
+        聯集案例欄位定義中有未預期的函式類型。如果您想要讓欄位成為函式,請考慮使用括弧括住函式簽章,例如將 | Case of a -> b 變更為 | Case of (a -> b)。
         
       
       
@@ -1552,6 +1617,11 @@
         請考慮使用 'return!',而不使用 'return'。
         
       
+      
+        Parentheses can be removed.
+        Parentheses can be removed.
+        
+      
       
         This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect.
         F# 編譯器目前不支援此屬性。套用此屬性並不會達到預期的效果。
@@ -1779,7 +1849,7 @@
       
       
         Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
-        Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options.
+        無法辨識的選項: '{0}'。請使用 '--help' 來了解可辨識的命令列選項。
         
       
       
@@ -3434,7 +3504,7 @@
       
       
         When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
-        When the visibility for a property is specified, setting the visibility of the set or get method is not allowed.
+        指定屬性的可見度時,不允許設定 set 或 get 方法的可見度。
         
       
       
@@ -5028,8 +5098,8 @@
         
       
       
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
-        For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'.
+        For F#7 and lower, static 'let','do' and 'member val' definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version '8' or higher.
+        對於 F#7 和更低版本,靜態值定義只能用於具有主要建構函式的類型 ('type X(args) = ...')。若要在所有其他類型中啟用,請使用語言版本 'preview'。
         
       
       
@@ -6149,7 +6219,7 @@
       
       
         Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7.
-        縮排可能不正確: 這個語彙基元於內容的位置 {0} 處開始越位。請嘗試進一步縮排這個語彙基元,或使用標準的格式設定慣例。
+        未預期的語法或可能不正確的縮排: 此權杖與在位置 {0} 啟動的內容不同步。請嘗試進一步縮排。\n若要繼續使用不符合的縮排,請傳遞 '--strict-indentation-' 旗標給編譯器,或將語言版本設定為 F# 7。
         
       
       
@@ -7864,7 +7934,7 @@
       
       
         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()
-        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()
+        使用 'fixed' 無效。'fixed' 僅能用於格式為 'use x = fixed expr' 的宣告中,其中運算式為下列其中一項: 陣列、陣列元素的位址、字串、ByRef、INREF 或實作 GetPinnableReference() 的類型
         
       
       
@@ -8523,8 +8593,8 @@
         
       
       
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
-        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        Package manager key '{0}' was not registered in {1}. Currently registered: {2}. You can provide extra path(s) by passing '--compilertool:<extensionsfolder>' to the command line. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager
+        未在 {1} 中註冊套件管理員金鑰 '{0}'。目前已註冊: {2}。若要深入了解延伸模組,請瀏覽: https://aka.ms/dotnetdepmanager
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.cs.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.cs.xlf
index dfd401a123..318ea1464f 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.cs.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.cs.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        Názvy argumentů v signatuře {0} a implementaci {1} si neodpovídají. Použije se název argumentu ze souboru signatury. To může způsobit problémy při ladění nebo profilování.
         
       
       
@@ -22,6 +22,16 @@
         Případy sjednocení s malými písmeny jsou povolené jenom při použití atributu RequireQualifiedAccess.
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         symbol ..^
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        klíčové slovo „while!“
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.de.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.de.xlf
index 4a475b7d99..430b308631 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.de.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.de.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        Die Argumentnamen in Signatur "{0}" und Implementierung "{1}" stimmen nicht überein. Der Argumentname aus der Signaturdatei wird verwendet. Dadurch können Probleme beim Debuggen oder bei der Profilerstellung auftreten.
         
       
       
@@ -22,6 +22,16 @@
         Diskriminierte Union-Fälle in Kleinbuchstaben sind nur zulässig, wenn das RequireQualifiedAccess-Attribut verwendet wird.
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         Symbol "..^"
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        Schlüsselwort "while!"
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.es.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.es.xlf
index 0cf35d6660..9a94fe0bfc 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.es.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.es.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        Los nombres de argumento en la firma "{0}" y la implementación "{1}" no coinciden. Se utilizará el nombre del argumento desde el archivo de firma. Esto puede causar problemas durante la depuración o la generación de perfiles.
         
       
       
@@ -22,6 +22,16 @@
         Los casos de unión discriminada en minúsculas solo se permiten cuando se usa el atributo RequireQualifiedAccess
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         símbolo "..^"
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        palabra clave “while!”
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.fr.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.fr.xlf
index 7511927665..0d5bfd687a 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.fr.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.fr.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        Les noms d'arguments dans la signature '{0}' et l'implémentation '{1}' ne correspondent pas. Le nom d'argument du fichier de signature va être utilisé. Cela peut entraîner des problèmes durant le débogage ou le profilage.
         
       
       
@@ -22,6 +22,16 @@
         Les cas d’union discriminée en minuscules sont uniquement autorisés lors de l’utilisation de l’attribut RequireQualifiedAccess.
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         symbole '..^'
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        mot-clé « pendant ! »
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.it.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.it.xlf
index c107a1b23a..465456a085 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.it.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.it.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        I nomi degli argomenti nella firma '{0}' e nell'implementazione '{1}' non corrispondono. Verrà usato il nome dell'argomento del file di firma. Questa situazione potrebbe causare problemi durante il debug o la profilatura.
         
       
       
@@ -22,6 +22,16 @@
         I casi di unione discriminati minuscoli sono consentiti solo quando si usa l'attributo RequireQualifiedAccess
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         simbolo '..^'
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        parola chiave "while"
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.ja.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.ja.xlf
index ab10c6411c..c895e7a6a1 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.ja.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.ja.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        シグネチャ '{0}' と実装 '{1}' の引数の名前が一致しません。シグネチャ ファイルの引数の名前が使用されます。デバッグまたはプロファイルするときに問題が生じる原因となる可能性があります。
         
       
       
@@ -22,6 +22,16 @@
         小文字で区別される和集合のケースは、RequireQualifiedAccess 属性を使用する場合にのみ許可されます
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         シンボル '..^'
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        キーワード 'while!'
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.ko.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.ko.xlf
index 90fa1ca997..82dbc42e07 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.ko.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.ko.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        시그니처 '{0}'과(와) 구현 '{1}'의 인수 이름이 일치하지 않습니다. 시그니처 파일의 인수 이름이 사용됩니다. 이로 인해 디버깅 또는 프로파일링 시 문제가 발생할 수 있습니다.
         
       
       
@@ -22,6 +22,16 @@
         소문자로 구분된 공용 구조체 케이스는 RequireQualifiedAccess 특성을 사용하는 경우에만 허용됩니다.
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         기호 '..^'
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        'while!' 키워드
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.pl.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.pl.xlf
index ba1c73e306..e2bc31e3fb 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.pl.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.pl.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        Nazwy argumentów w podpisie „{0}” i implementacji „{1}” nie są zgodne. Używana będzie nazwa argumentu z pliku podpisu. Może to spowodować problemy podczas debugowania lub profilowania.
         
       
       
@@ -22,6 +22,16 @@
         Przypadki unii z dyskryminatorem z małymi literami są dozwolone tylko w przypadku używania atrybutu RequireQualifiedAccess
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         symbol „..^”
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        słowo kluczowe „while!”
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.pt-BR.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.pt-BR.xlf
index d4a5fe07d6..b4d1f7ba70 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.pt-BR.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.pt-BR.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        Os nomes de argumento na assinatura '{0}' e na implementação '{1}' não coincidem. O nome do argumento do arquivo da assinatura será usado. Isso pode causar problemas durante a depuração ou a criação de perfil.
         
       
       
@@ -22,6 +22,16 @@
         Os casos de união discriminados em letras minúsculas só são permitidos ao usar o atributo RequireQualifiedAccess
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         símbolo '..^'
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        palavra-chave "while!"
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.ru.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.ru.xlf
index 5a1bd97a58..5149ef4d9f 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.ru.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.ru.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        Имена аргументов в сигнатуре "{0}" и реализации "{1}" не совпадают. Будет использоваться имя аргумента из файла сигнатуры. Это может вызвать проблемы при отладке или профилировании.
         
       
       
@@ -22,6 +22,16 @@
         Размеченные в нижнем регистре случаи объединения разрешены только при использовании атрибута RequireQualifiedAccess
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         символ "..^"
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        ключевое слово "while!"
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.tr.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.tr.xlf
index d27bebc590..dde4f9ee02 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.tr.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.tr.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        {0}' imzası ve '{1}' uygulaması içindeki bağımsız değişken adları eşleşmiyor. İmza dosyasındaki bağımsız değişken adı kullanılacak. Bu, hata ayıklama veya profil oluşturma sırasında sorunlara neden olabilir.
         
       
       
@@ -22,6 +22,16 @@
         Küçük harf ayrımlı birleşim durumlarına yalnızca RequireQualifiedAccess özniteliği kullanılırken izin verilir
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         '..^' sembolü
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        'while!' anahtar sözcüğü
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hans.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hans.xlf
index 986736b401..89e54bb26c 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hans.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hans.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        签名“{0}”和实现“{1}”中的参数名称不匹配。将使用签名文件中的参数名称。在进行调试或分析时这可能会导致问题。
         
       
       
@@ -22,6 +22,16 @@
         仅当使用 RequireQualifiedAccess 属性时才允许区分小写的联合事例
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         符号 "..^"
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        关键字 "while!"
         
       
       
diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hant.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hant.xlf
index 27727b0b03..71c045b02f 100644
--- a/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hant.xlf
+++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hant.xlf
@@ -4,7 +4,7 @@
     
       
         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.
-        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.
+        特徵標記 '{0}' 和實作 '{1}' 中的引數名稱不相符。將會使用特徵標記檔案中的引數名稱。這可能會在偵錯或分析時造成問題。
         
       
       
@@ -22,6 +22,16 @@
         只有在使用 RequireQualifiedAccess 屬性時,才允許小寫區分聯結案例
         
       
+      
+         Non-static member is expected.
+         Non-static member is expected.
+        
+      
+      
+         Static member is expected.
+         Static member is expected.
+        
+      
       
         symbol '..^'
         符號 '..^'
@@ -49,7 +59,7 @@
       
       
         keyword 'while!'
-        keyword 'while!'
+        關鍵字 'while!'
         
       
       
diff --git a/src/fcs-fable/test/fcs-fable-test.fsproj b/src/fcs-fable/test/fcs-fable-test.fsproj
index bcc9b5414e..ccaf13c1aa 100644
--- a/src/fcs-fable/test/fcs-fable-test.fsproj
+++ b/src/fcs-fable/test/fcs-fable-test.fsproj
@@ -20,7 +20,7 @@
   
     
     
-    
+