diff --git a/src/Compiler/FSComp.txt b/src/Compiler/FSComp.txt index 549a12b8d9b..d8c5f1ebb06 100644 --- a/src/Compiler/FSComp.txt +++ b/src/Compiler/FSComp.txt @@ -1575,7 +1575,6 @@ featureRequiredProperties,"support for required properties" featureMatchNotAllowedForUnionCaseWithNoData,"Pattern match discard is not allowed for union case that takes no data." featureCSharpExtensionAttributeNotRequired,"Allow implicit Extension attribute on declaring types, modules" featureErrorForNonVirtualMembersOverrides,"Raises errors for non-virtual members overrides" -featureArithmeticInLiterals,"Arithmetic and logical operations in literals, enum definitions and attributes" featureErrorReportingOnStaticClasses,"Error reporting on static classes" featureWarningWhenCopyAndUpdateRecordChangesAllFields,"Raises warnings when an copy-and-update record expression changes all fields of a record." featureNonInlineLiteralsAsPrintfFormat,"String values marked as literals and IL constants as printf format" diff --git a/src/Compiler/Facilities/DiagnosticsLogger.fs b/src/Compiler/Facilities/DiagnosticsLogger.fs index 406775c8508..7cc44d88366 100644 --- a/src/Compiler/Facilities/DiagnosticsLogger.fs +++ b/src/Compiler/Facilities/DiagnosticsLogger.fs @@ -869,13 +869,6 @@ let NormalizeErrorRichText (text: RichText) = RichText.ofParts (parts.ToArray()) -/// Indicates whether a language feature check should be skipped. Typically used in recursive functions -/// where we don't want repeated recursive calls to raise the same diagnostic multiple times. -[] -type internal SuppressLanguageFeatureCheck = - | Yes - | No - let internal languageFeatureError (langVersion: LanguageVersion) (langFeature: LanguageFeature) (m: range) = let featureStr = LanguageVersion.GetFeatureString langFeature let currentVersionStr = langVersion.SpecifiedVersionString diff --git a/src/Compiler/Facilities/DiagnosticsLogger.fsi b/src/Compiler/Facilities/DiagnosticsLogger.fsi index 86d8365e271..af8aa3ff1b9 100644 --- a/src/Compiler/Facilities/DiagnosticsLogger.fsi +++ b/src/Compiler/Facilities/DiagnosticsLogger.fsi @@ -445,13 +445,6 @@ val NormalizeErrorString: text: string -> string /// classification of each part is preserved. Parts left empty by normalization are dropped. val NormalizeErrorRichText: text: RichText -> RichText -/// Indicates whether a language feature check should be skipped. Typically used in recursive functions -/// where we don't want repeated recursive calls to raise the same diagnostic multiple times. -[] -type SuppressLanguageFeatureCheck = - | Yes - | No - val languageFeatureError: langVersion: LanguageVersion -> langFeature: LanguageFeature -> m: range -> exn val checkLanguageFeatureError: langVersion: LanguageVersion -> langFeature: LanguageFeature -> m: range -> unit diff --git a/src/Compiler/Facilities/LanguageFeatures.fs b/src/Compiler/Facilities/LanguageFeatures.fs index 83838898397..6afafd3d821 100644 --- a/src/Compiler/Facilities/LanguageFeatures.fs +++ b/src/Compiler/Facilities/LanguageFeatures.fs @@ -39,7 +39,6 @@ type LanguageFeature = | MatchNotAllowedForUnionCaseWithNoData | CSharpExtensionAttributeNotRequired | ErrorForNonVirtualMembersOverrides - | ArithmeticInLiterals | ErrorReportingOnStaticClasses | WarningWhenCopyAndUpdateRecordChangesAllFields | NonInlineLiteralsAsPrintfFormat @@ -155,7 +154,6 @@ type LanguageVersion(versionText, ?disabledFeaturesArray: LanguageFeature array) LanguageFeature.MatchNotAllowedForUnionCaseWithNoData, languageVersion80 LanguageFeature.CSharpExtensionAttributeNotRequired, languageVersion80 LanguageFeature.ErrorForNonVirtualMembersOverrides, languageVersion80 - LanguageFeature.ArithmeticInLiterals, languageVersion80 LanguageFeature.ErrorReportingOnStaticClasses, languageVersion80 LanguageFeature.WarningWhenCopyAndUpdateRecordChangesAllFields, languageVersion80 LanguageFeature.NonInlineLiteralsAsPrintfFormat, languageVersion80 @@ -335,7 +333,6 @@ type LanguageVersion(versionText, ?disabledFeaturesArray: LanguageFeature array) | LanguageFeature.MatchNotAllowedForUnionCaseWithNoData -> FSComp.SR.featureMatchNotAllowedForUnionCaseWithNoData () | LanguageFeature.CSharpExtensionAttributeNotRequired -> FSComp.SR.featureCSharpExtensionAttributeNotRequired () | LanguageFeature.ErrorForNonVirtualMembersOverrides -> FSComp.SR.featureErrorForNonVirtualMembersOverrides () - | LanguageFeature.ArithmeticInLiterals -> FSComp.SR.featureArithmeticInLiterals () | LanguageFeature.ErrorReportingOnStaticClasses -> FSComp.SR.featureErrorReportingOnStaticClasses () | LanguageFeature.WarningWhenCopyAndUpdateRecordChangesAllFields -> FSComp.SR.featureWarningWhenCopyAndUpdateRecordChangesAllFields () diff --git a/src/Compiler/Facilities/LanguageFeatures.fsi b/src/Compiler/Facilities/LanguageFeatures.fsi index 1073b35d34d..f1a6a6114dd 100644 --- a/src/Compiler/Facilities/LanguageFeatures.fsi +++ b/src/Compiler/Facilities/LanguageFeatures.fsi @@ -29,7 +29,6 @@ type LanguageFeature = | MatchNotAllowedForUnionCaseWithNoData | CSharpExtensionAttributeNotRequired | ErrorForNonVirtualMembersOverrides - | ArithmeticInLiterals | ErrorReportingOnStaticClasses | WarningWhenCopyAndUpdateRecordChangesAllFields | NonInlineLiteralsAsPrintfFormat diff --git a/src/Compiler/TypedTree/TypedTreeOps.Transforms.fs b/src/Compiler/TypedTree/TypedTreeOps.Transforms.fs index 2051d27bdab..7ee5f290b23 100644 --- a/src/Compiler/TypedTree/TypedTreeOps.Transforms.fs +++ b/src/Compiler/TypedTree/TypedTreeOps.Transforms.fs @@ -2439,14 +2439,10 @@ module internal ConstantEvaluation = error (Error(FSComp.SR.tastConstantExpressionOverflow (), m)) // See also PostTypeCheckSemanticChecks.CheckAttribArgExpr, which must match this precisely - let rec EvalAttribArgExpr suppressLangFeatureCheck (g: TcGlobals) (x: Expr) = + let rec EvalAttribArgExpr (g: TcGlobals) (x: Expr) = let ignore (_x: 'a) = Unchecked.defaultof<'a> let ignore2 (_x: 'a) (_y: 'a) = Unchecked.defaultof<'a> - let inline checkFeature () = - if suppressLangFeatureCheck = SuppressLanguageFeatureCheck.No then - checkLanguageFeatureAndRecover g.langVersion LanguageFeature.ArithmeticInLiterals x.Range - match x with // Detect standard constants @@ -2476,33 +2472,28 @@ module internal ConstantEvaluation = | TypeOfExpr g _ -> x | TypeDefOfExpr g _ -> x - | Expr.Op(TOp.Coerce, _, [ arg ], _) -> EvalAttribArgExpr suppressLangFeatureCheck g arg - | EnumExpr g arg1 -> EvalAttribArgExpr suppressLangFeatureCheck g arg1 + | Expr.Op(TOp.Coerce, _, [ arg ], _) -> EvalAttribArgExpr g arg + | EnumExpr g arg1 -> EvalAttribArgExpr g arg1 // Detect bitwise or of attribute flags | AttribBitwiseOrExpr g (arg1, arg2) -> - let v1 = EvalAttribArgExpr suppressLangFeatureCheck g arg1 + let v1 = EvalAttribArgExpr g arg1 match v1 with | IntegerConstExpr -> EvalArithBinOp ((|||), (|||), (|||), (|||), (|||), (|||), (|||), (|||), ignore2, ignore2, ignore2) v1 - (EvalAttribArgExpr suppressLangFeatureCheck g arg2) + (EvalAttribArgExpr g arg2) | _ -> errorR (Error(FSComp.SR.tastNotAConstantExpression (), x.Range)) x | SpecificBinopExpr g g.unchecked_addition_vref (arg1, arg2) -> - let v1, v2 = - EvalAttribArgExpr suppressLangFeatureCheck g arg1, EvalAttribArgExpr suppressLangFeatureCheck g arg2 + let v1, v2 = EvalAttribArgExpr g arg1, EvalAttribArgExpr g arg2 match v1, v2 with | Expr.Const(Const.String x1, m, ty), Expr.Const(Const.String x2, _, _) -> Expr.Const(Const.String(x1 + x2), m, ty) - | Expr.Const(Const.Char x1, m, ty), Expr.Const(Const.Char x2, _, _) -> - checkFeature () - Expr.Const(Const.Char(x1 + x2), m, ty) + | Expr.Const(Const.Char x1, m, ty), Expr.Const(Const.Char x2, _, _) -> Expr.Const(Const.Char(x1 + x2), m, ty) | _ -> - checkFeature () - EvalArithBinOp (Checked.(+), Checked.(+), @@ -2518,10 +2509,7 @@ module internal ConstantEvaluation = v1 v2 | SpecificBinopExpr g g.unchecked_subtraction_vref (arg1, arg2) -> - checkFeature () - - let v1, v2 = - EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1, EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg2 + let v1, v2 = EvalAttribArgExpr g arg1, EvalAttribArgExpr g arg2 match v1, v2 with | Expr.Const(Const.Char x1, m, ty), Expr.Const(Const.Char x2, _, _) -> Expr.Const(Const.Char(x1 - x2), m, ty) @@ -2541,8 +2529,6 @@ module internal ConstantEvaluation = v1 v2 | SpecificBinopExpr g g.unchecked_multiply_vref (arg1, arg2) -> - checkFeature () - EvalArithBinOp (Checked.(*), Checked.(*), @@ -2555,90 +2541,63 @@ module internal ConstantEvaluation = Checked.(*), Checked.(*), Checked.(*)) - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1) - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg2) + (EvalAttribArgExpr g arg1) + (EvalAttribArgExpr g arg2) | SpecificBinopExpr g g.unchecked_division_vref (arg1, arg2) -> - checkFeature () - - EvalArithBinOp - ((/), (/), (/), (/), (/), (/), (/), (/), (/), (/), (/)) - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1) - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg2) + EvalArithBinOp ((/), (/), (/), (/), (/), (/), (/), (/), (/), (/), (/)) (EvalAttribArgExpr g arg1) (EvalAttribArgExpr g arg2) | SpecificBinopExpr g g.unchecked_modulus_vref (arg1, arg2) -> - checkFeature () - - EvalArithBinOp - ((%), (%), (%), (%), (%), (%), (%), (%), (%), (%), (%)) - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1) - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg2) + EvalArithBinOp ((%), (%), (%), (%), (%), (%), (%), (%), (%), (%), (%)) (EvalAttribArgExpr g arg1) (EvalAttribArgExpr g arg2) | SpecificBinopExpr g g.bitwise_shift_left_vref (arg1, arg2) -> - checkFeature () - - EvalArithShiftOp - ((<<<), (<<<), (<<<), (<<<), (<<<), (<<<), (<<<), (<<<)) - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1) - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg2) + EvalArithShiftOp ((<<<), (<<<), (<<<), (<<<), (<<<), (<<<), (<<<), (<<<)) (EvalAttribArgExpr g arg1) (EvalAttribArgExpr g arg2) | SpecificBinopExpr g g.bitwise_shift_right_vref (arg1, arg2) -> - checkFeature () - - EvalArithShiftOp - ((>>>), (>>>), (>>>), (>>>), (>>>), (>>>), (>>>), (>>>)) - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1) - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg2) + EvalArithShiftOp ((>>>), (>>>), (>>>), (>>>), (>>>), (>>>), (>>>), (>>>)) (EvalAttribArgExpr g arg1) (EvalAttribArgExpr g arg2) | SpecificBinopExpr g g.bitwise_and_vref (arg1, arg2) -> - checkFeature () - let v1 = EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1 + let v1 = EvalAttribArgExpr g arg1 match v1 with | IntegerConstExpr -> EvalArithBinOp ((&&&), (&&&), (&&&), (&&&), (&&&), (&&&), (&&&), (&&&), ignore2, ignore2, ignore2) v1 - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg2) + (EvalAttribArgExpr g arg2) | _ -> errorR (Error(FSComp.SR.tastNotAConstantExpression (), x.Range)) x | SpecificBinopExpr g g.bitwise_xor_vref (arg1, arg2) -> - checkFeature () - let v1 = EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1 + let v1 = EvalAttribArgExpr g arg1 match v1 with | IntegerConstExpr -> EvalArithBinOp ((^^^), (^^^), (^^^), (^^^), (^^^), (^^^), (^^^), (^^^), ignore2, ignore2, ignore2) v1 - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg2) + (EvalAttribArgExpr g arg2) | _ -> errorR (Error(FSComp.SR.tastNotAConstantExpression (), x.Range)) x | SpecificBinopExpr g g.exponentiation_vref (arg1, arg2) -> - checkFeature () - let v1 = EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1 + let v1 = EvalAttribArgExpr g arg1 match v1 with | FloatConstExpr -> EvalArithBinOp (ignore2, ignore2, ignore2, ignore2, ignore2, ignore2, ignore2, ignore2, ( ** ), ( ** ), ignore2) v1 - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg2) + (EvalAttribArgExpr g arg2) | _ -> errorR (Error(FSComp.SR.tastNotAConstantExpression (), x.Range)) x | SpecificUnopExpr g g.bitwise_unary_not_vref arg1 -> - checkFeature () - let v1 = EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1 + let v1 = EvalAttribArgExpr g arg1 match v1 with | IntegerConstExpr -> - EvalArithUnOp - ((~~~), (~~~), (~~~), (~~~), (~~~), (~~~), (~~~), (~~~), ignore, ignore) - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1) + EvalArithUnOp ((~~~), (~~~), (~~~), (~~~), (~~~), (~~~), (~~~), (~~~), ignore, ignore) (EvalAttribArgExpr g arg1) | _ -> errorR (Error(FSComp.SR.tastNotAConstantExpression (), x.Range)) x | SpecificUnopExpr g g.unchecked_unary_minus_vref arg1 -> - checkFeature () - let v1 = EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1 + let v1 = EvalAttribArgExpr g arg1 match v1 with | SignedConstExpr -> @@ -2649,15 +2608,9 @@ module internal ConstantEvaluation = errorR (Error(FSComp.SR.tastNotAConstantExpression (), v1.Range)) x | SpecificUnopExpr g g.unchecked_unary_plus_vref arg1 -> - checkFeature () - - EvalArithUnOp - ((~+), (~+), (~+), (~+), (~+), (~+), (~+), (~+), (~+), (~+)) - (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1) + EvalArithUnOp ((~+), (~+), (~+), (~+), (~+), (~+), (~+), (~+), (~+), (~+)) (EvalAttribArgExpr g arg1) | SpecificUnopExpr g g.unchecked_unary_not_vref arg1 -> - checkFeature () - - match EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1 with + match EvalAttribArgExpr g arg1 with | Expr.Const(Const.Bool value, m, ty) -> Expr.Const(Const.Bool(not value), m, ty) | expr -> errorR (Error(FSComp.SR.tastNotAConstantExpression (), expr.Range)) @@ -2666,16 +2619,14 @@ module internal ConstantEvaluation = | Expr.Match( decision = TDSwitch(input = input; cases = [ TCase(DecisionTreeTest.Const(Const.Bool test), TDSuccess([], targetNum)) ]) targets = [| TTarget(_, t0, _); TTarget(_, t1, _) |]) -> - checkFeature () - - match EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g (stripDebugPoints input) with + match EvalAttribArgExpr g (stripDebugPoints input) with | Expr.Const(Const.Bool value, _, _) -> let pass, fail = if targetNum = 0 then t0, t1 else t1, t0 if value = test then - EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g (stripDebugPoints pass) + EvalAttribArgExpr g (stripDebugPoints pass) else - EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g (stripDebugPoints fail) + EvalAttribArgExpr g (stripDebugPoints fail) | _ -> errorR (Error(FSComp.SR.tastNotAConstantExpression (), x.Range)) x @@ -2713,9 +2664,9 @@ module internal ConstantEvaluation = match x with | Expr.Op(TOp.Coerce, _, [ Expr.Op(TOp.Array, [ elemTy ], args, m) ], _) | Expr.Op(TOp.Array, [ elemTy ], args, m) -> - let args = args |> List.map (EvalAttribArgExpr SuppressLanguageFeatureCheck.No g) + let args = args |> List.map (EvalAttribArgExpr g) Expr.Op(TOp.Array, [ elemTy ], args, m) - | _ -> EvalAttribArgExpr SuppressLanguageFeatureCheck.No g x + | _ -> EvalAttribArgExpr g x /// Match an Int32 constant expression [] diff --git a/src/Compiler/xlf/FSComp.txt.cs.xlf b/src/Compiler/xlf/FSComp.txt.cs.xlf index 325b343e8ed..c57e13c228f 100644 --- a/src/Compiler/xlf/FSComp.txt.cs.xlf +++ b/src/Compiler/xlf/FSComp.txt.cs.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - Aritmetické a logické operace v literálech, definicích výčtu a atributech - - attributes to the right of the 'module' keyword atributy napravo od klíčového slova Module diff --git a/src/Compiler/xlf/FSComp.txt.de.xlf b/src/Compiler/xlf/FSComp.txt.de.xlf index 611da253f4f..fb269df55aa 100644 --- a/src/Compiler/xlf/FSComp.txt.de.xlf +++ b/src/Compiler/xlf/FSComp.txt.de.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - Arithmetische und logische Vorgänge in Literalen, Enumerationsdefinitionen und Attributen - - attributes to the right of the 'module' keyword Attribute rechts vom "Module"-Schlüsselwort diff --git a/src/Compiler/xlf/FSComp.txt.es.xlf b/src/Compiler/xlf/FSComp.txt.es.xlf index fc24eae75ba..1865d95eae4 100644 --- a/src/Compiler/xlf/FSComp.txt.es.xlf +++ b/src/Compiler/xlf/FSComp.txt.es.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - Operaciones aritméticas y lógicas en literales, definiciones de enumeración y atributos - - attributes to the right of the 'module' keyword atributos a la derecha de la palabra clave “módulo” diff --git a/src/Compiler/xlf/FSComp.txt.fr.xlf b/src/Compiler/xlf/FSComp.txt.fr.xlf index 820c71101de..ab4b4c42369 100644 --- a/src/Compiler/xlf/FSComp.txt.fr.xlf +++ b/src/Compiler/xlf/FSComp.txt.fr.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - Opérations arithmétiques et logiques dans les littéraux, les définitions d'énumération et les attributs - - attributes to the right of the 'module' keyword attributs à droite du mot clé 'module' diff --git a/src/Compiler/xlf/FSComp.txt.it.xlf b/src/Compiler/xlf/FSComp.txt.it.xlf index 6b260c73a74..a84119520f7 100644 --- a/src/Compiler/xlf/FSComp.txt.it.xlf +++ b/src/Compiler/xlf/FSComp.txt.it.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - Operazioni aritmetiche e logiche in valori letterali, definizioni di enumerazione e attributi - - attributes to the right of the 'module' keyword attributi a destra della parola chiave 'module' diff --git a/src/Compiler/xlf/FSComp.txt.ja.xlf b/src/Compiler/xlf/FSComp.txt.ja.xlf index cf52089e5cd..9e95a4e2cb0 100644 --- a/src/Compiler/xlf/FSComp.txt.ja.xlf +++ b/src/Compiler/xlf/FSComp.txt.ja.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - リテラル、列挙型の定義と属性の算術演算と論理演算 - - attributes to the right of the 'module' keyword 'module' キーワードの右側の属性 diff --git a/src/Compiler/xlf/FSComp.txt.ko.xlf b/src/Compiler/xlf/FSComp.txt.ko.xlf index dc41bf764ad..724333975b6 100644 --- a/src/Compiler/xlf/FSComp.txt.ko.xlf +++ b/src/Compiler/xlf/FSComp.txt.ko.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - 리터럴, 열거형 정의 및 특성의 산술 연산 및 논리 연산 - - attributes to the right of the 'module' keyword 'module' 키워드 오른쪽에 있는 특성 diff --git a/src/Compiler/xlf/FSComp.txt.pl.xlf b/src/Compiler/xlf/FSComp.txt.pl.xlf index b38ca63ae66..8344648a4e1 100644 --- a/src/Compiler/xlf/FSComp.txt.pl.xlf +++ b/src/Compiler/xlf/FSComp.txt.pl.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - Operacje arytmetyczne i logiczne w literałach, definicjach wyliczeń i atrybutach - - attributes to the right of the 'module' keyword atrybuty po prawej stronie słowa kluczowego "module" diff --git a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf index 6e1d8605335..dedb8642993 100644 --- a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf +++ b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - Operações aritméticas e lógicas em literais, definições de enumeração e atributos - - attributes to the right of the 'module' keyword atributos à direita da palavra-chave 'módulo' diff --git a/src/Compiler/xlf/FSComp.txt.ru.xlf b/src/Compiler/xlf/FSComp.txt.ru.xlf index 5cfd420f2e5..501a9902be6 100644 --- a/src/Compiler/xlf/FSComp.txt.ru.xlf +++ b/src/Compiler/xlf/FSComp.txt.ru.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - Арифметические и логические операции в литералах, определениях перечислений и атрибутах - - attributes to the right of the 'module' keyword атрибуты справа от ключевого слова "module" diff --git a/src/Compiler/xlf/FSComp.txt.tr.xlf b/src/Compiler/xlf/FSComp.txt.tr.xlf index dfb77dff307..ef60a6e8e76 100644 --- a/src/Compiler/xlf/FSComp.txt.tr.xlf +++ b/src/Compiler/xlf/FSComp.txt.tr.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - Sabit değerler, sabit listesi tanımları ve öznitelikler olarak aritmetik ve mantıksal işlemler - - attributes to the right of the 'module' keyword 'modül' anahtar sözcüğünün sağındaki öznitelikler diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf index 9cfe459b1e5..54cd7996fcf 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - 文本、枚举定义和属性中的算术和逻辑运算 - - attributes to the right of the 'module' keyword "module" 关键字右侧的属性 diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf index 5f31aa82294..960d3637863 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf @@ -317,11 +317,6 @@ Allow object expressions without overrides - - Arithmetic and logical operations in literals, enum definitions and attributes - 常值、列舉定義和屬性中的算術和邏輯作業 - - attributes to the right of the 'module' keyword 'module' 關鍵字右邊的屬性