fix build under newer KConfig by bump cmake min version

This commit is contained in:
2024-09-04 19:01:58 +08:00
parent 727a2ec214
commit 9fb3681e3a
1022 changed files with 4414 additions and 1375 deletions

View File

@ -0,0 +1,51 @@
module FormatSpecifiersTest
let x = List.fold (*) 24.5 [ 1.; 2.; 3. ]
// expect "147.00"
printfn "Speed: %.2f m/s" x
printfn $"Speed: %.2f{x} m/s"
printfn $"Speed: {x:f2} m/s"
printfn $@"Speed: %.2f{x} m/s"
printfn @$"Speed: {x:f2} m/s"
// expect " 147%"
printfn """%% increase:% .0F%% over last year""" x
printfn $"""%% increase:% .0F{x}%% over last year"""
printfn $"""%% increase:{x / 100.,5:P0} over last year"""
printfn $@"""%% increase:% .0F{x}%% over last year"""
printfn @$"""%% increase:{x / 100.,5:P0} over last year"""
// expect "1.5E+002"
// NB: units should look like text even without a space
printfn @"Time: %-0.1Esecs" x
printfn $"Time: %-0.1E{x}secs"
printfn $"Time: {x:E1}secs"
printfn $@"Time: %-0.1E{x}secs"
printfn @$"Time: {x:E1}secs"
// expect "\" +147\""
printfn @"""Temp: %+12.3g K""" x
printfn $"""{'"'}Temp: %+12.3g{x} K{'"'}"""
printfn $"""{'"'}Temp: {'+',9}{x:g3} K{'"'}"""
printfn $@"""Temp: %+12.3g{x} K"""
printfn @$"""Temp: {'+',9}{x:g3} K"""
// Since F# 6.0
printfn @"%B" 0b1_000_000
printfn "%B" "\x40"B.[0]
printfn $"""%B{'\064'B}"""
printfn $@"""%B{0b1_000_000}"""
printfn @$"""%B{'\064'B}"""
// These don't work
printfn ``%.2f`` x
printfn $"%.2f" x
printfn $@"%.2f" x
printfn @$"%.2f" x
printfn $"%.2f {x}"
printfn $@"%.2f {x}"
printfn @$"%.2f {x}"
printfn $"""%.2f {x}"""
printfn $@"""%.2f {x}"""
printfn @$"""%.2f {x}"""

View File

@ -0,0 +1,52 @@
0 400 400 module FormatSpecifiersTest
1 400 400
0 400 400 let x = List.fold (*) 24.5 [ 1.; 2.; 3. ]
1 400 400
0 400 400 // expect "147.00"
0 400 400 printfn "Speed: %.2f m/s" x
0 400 400 printfn $"Speed: %.2f{x} m/s"
0 400 400 printfn $"Speed: {x:f2} m/s"
0 400 400 printfn $@"Speed: %.2f{x} m/s"
0 400 400 printfn @$"Speed: {x:f2} m/s"
1 400 400
0 400 400 // expect " 147%"
0 400 400 printfn """%% increase:% .0F%% over last year""" x
0 400 400 printfn $"""%% increase:% .0F{x}%% over last year"""
0 400 400 printfn $"""%% increase:{x / 100.,5:P0} over last year"""
0 400 400 printfn $@"""%% increase:% .0F{x}%% over last year"""
0 400 400 printfn @$"""%% increase:{x / 100.,5:P0} over last year"""
1 400 400
2 400 401 + // expect "1.5E+002"
0 401 400 | // NB: units should look like text even without a space
0 400 400 printfn @"Time: %-0.1Esecs" x
0 400 400 printfn $"Time: %-0.1E{x}secs"
0 400 400 printfn $"Time: {x:E1}secs"
0 400 400 printfn $@"Time: %-0.1E{x}secs"
0 400 400 printfn @$"Time: {x:E1}secs"
1 400 400
0 400 400 // expect "\" +147\""
0 400 400 printfn @"""Temp: %+12.3g K""" x
0 400 400 printfn $"""{'"'}Temp: %+12.3g{x} K{'"'}"""
0 400 400 printfn $"""{'"'}Temp: {'+',9}{x:g3} K{'"'}"""
0 400 400 printfn $@"""Temp: %+12.3g{x} K"""
0 400 400 printfn @$"""Temp: {'+',9}{x:g3} K"""
1 400 400
0 400 400 // Since F# 6.0
0 400 400 printfn @"%B" 0b1_000_000
0 400 400 printfn "%B" "\x40"B.[0]
0 400 400 printfn $"""%B{'\064'B}"""
0 400 400 printfn $@"""%B{0b1_000_000}"""
0 400 400 printfn @$"""%B{'\064'B}"""
1 400 400
0 400 400 // These don't work
0 400 400 printfn ``%.2f`` x
0 400 400 printfn $"%.2f" x
0 400 400 printfn $@"%.2f" x
0 400 400 printfn @$"%.2f" x
0 400 400 printfn $"%.2f {x}"
0 400 400 printfn $@"%.2f {x}"
0 400 400 printfn @$"%.2f {x}"
0 400 400 printfn $"""%.2f {x}"""
0 400 400 printfn $@"""%.2f {x}"""
0 400 400 printfn @$"""%.2f {x}"""
1 400 400

View File

@ -0,0 +1,51 @@
{1}module{0} {6}FormatSpecifiersTest{0}
{1}let{0} {6}x{0} {12}={0} {3}List{0}.{2}fold{0} {12}(*){0} {13}24.5{0} {12}[{0} {13}1.{12};{0} {13}2.{12};{0} {13}3.{0} {12}]{0}
{9}// expect "147.00"{0}
{2}printfn{0} {15}"Speed: {19}%.2f{15} m/s"{0} {6}x{0}
{2}printfn{0} {15}$"Speed: {19}%.2f{15}{x} m/s"{0}
{2}printfn{0} {15}$"Speed: {x{19}:f2{15}} m/s"{0}
{2}printfn{0} {16}$@"Speed: {19}%.2f{16}{x} m/s"{0}
{2}printfn{0} {16}@$"Speed: {x{19}:f2{16}} m/s"{0}
{9}// expect " 147%"{0}
{2}printfn{0} {15}"""{19}%%{15} increase:{19}% .0F%%{15} over last year"""{0} {6}x{0}
{2}printfn{0} {15}$"""{19}%%{15} increase:{19}% .0F{15}{x}{19}%%{15} over last year"""{0}
{2}printfn{0} {15}$"""{19}%%{15} increase:{x / 100.{19},5:P0{15}} over last year"""{0}
{2}printfn{0} {16}$@"""{19}%%{16} increase:{19}% .0F{16}{x}{19}%%{16} over last year"""{0}
{2}printfn{0} {16}@$"""{19}%%{16} increase:{x / 100.{19},5:P0{16}} over last year"""{0}
{9}// expect "1.5E+002"{0}
{9}// NB: units should look like text even without a space{0}
{2}printfn{0} {16}@"Time: {19}%-0.1E{16}secs"{0} {6}x{0}
{2}printfn{0} {15}$"Time: {19}%-0.1E{15}{x}secs"{0}
{2}printfn{0} {15}$"Time: {x{19}:E1{15}}secs"{0}
{2}printfn{0} {16}$@"Time: {19}%-0.1E{16}{x}secs"{0}
{2}printfn{0} {16}@$"Time: {x{19}:E1{16}}secs"{0}
{9}// expect "\" +147\""{0}
{2}printfn{0} {16}@"""Temp: {19}%+12.3g{16} K"""{0} {6}x{0}
{2}printfn{0} {15}$"""{'"'}Temp: {19}%+12.3g{15}{x} K{'"'}"""{0}
{2}printfn{0} {15}$"""{'"'}Temp: {'+'{19},9{15}}{x{19}:g3{15}} K{'"'}"""{0}
{2}printfn{0} {16}$@"""Temp: {19}%+12.3g{16}{x} K"""{0}
{2}printfn{0} {16}@$"""Temp: {'+'{19},9{16}}{x{19}:g3{16}} K"""{0}
{9}// Since F# 6.0{0}
{2}printfn{0} {16}@"{19}%B{16}"{0} {13}0b1_000_000{0}
{2}printfn{0} {15}"{19}%B{15}"{0} {15}"\x40"B{0}.{12}[{13}0{12}]{0}
{2}printfn{0} {15}$"""{19}%B{15}{'\064'B}"""{0}
{2}printfn{0} {16}$@"""{19}%B{16}{0b1_000_000}"""{0}
{2}printfn{0} {16}@$"""{19}%B{16}{'\064'B}"""{0}
{9}// These don't work{0}
{2}printfn{0} {7}``%.2f``{0} {6}x{0}
{2}printfn{0} {15}$"%.2f"{0} {6}x{0}
{2}printfn{0} {16}$@"%.2f"{0} {6}x{0}
{2}printfn{0} {16}@$"%.2f"{0} {6}x{0}
{2}printfn{0} {15}$"%.2f {x}"{0}
{2}printfn{0} {16}$@"%.2f {x}"{0}
{2}printfn{0} {16}@$"%.2f {x}"{0}
{2}printfn{0} {15}$"""%.2f {x}"""{0}
{2}printfn{0} {16}$@"""%.2f {x}"""{0}
{2}printfn{0} {16}@$"""%.2f {x}"""{0}

View File

@ -0,0 +1,14 @@
// not folded
// first line in comment fold
// second . . .
// third . . .
namespace Issue56
open System
module LineBasedFoldingCheck =
open FSharp.Quotations
open FSharp.Reflection
() |> ignore

View File

@ -0,0 +1,15 @@
0 400 400 // not folded
1 400 400
2 400 401 + // first line in comment fold
0 401 401 | // second . . .
0 401 400 | // third . . .
0 400 400 namespace Issue56
1 400 400
0 400 400 open System
1 400 400
0 400 400 module LineBasedFoldingCheck =
2 400 401 + open FSharp.Quotations
0 401 400 | open FSharp.Reflection
1 400 400
0 400 400 () |> ignore
1 400 400

View File

@ -0,0 +1,14 @@
{9}// not folded{0}
{9}// first line in comment fold{0}
{9}// second . . .{0}
{9}// third . . .{0}
{1}namespace{0} {6}Issue56{0}
{1}open{0} {3}System{0}
{1}module{0} {6}LineBasedFoldingCheck{0} {12}={0}
{1}open{0} {3}FSharp{0}.{6}Quotations{0}
{1}open{0} {3}FSharp{0}.{6}Reflection{0}
{1}(){0} {12}|>{0} {2}ignore{0}

View File

@ -0,0 +1,46 @@
(*
(** nested comment 1 **)
(*
nested comment 2
(*
nested comment 3
(*
nested comment 4
(*
nested comment 5
*)
*)
*)
*)
*)
// declare a namespace
// for the module
namespace Issue93
module NestedComments =
open FSharp.Quotations
open FSharp.Quotations.Patterns
// print the arguments
// of an evaluated expression
(* Example:
(*
printArgs <@ 1 + 2 @> ;;
// 1
// 2
*)
*)
let printArgs expr =
let getVal = function Value (v, _) -> downcast v | _ -> null
match expr with
| Call (_, _, args) ->
List.map getVal args |> List.iter (printfn "%A")
| _ ->
printfn "not an evaluated expression"
(* Example:
(*
let constExpr = <@ true @> ;;
printArgs constExpr ;;
*)
*)
// Prints:
// "not an evaluated expression"

View File

@ -0,0 +1,47 @@
2 400 401 + (*
0 401 401 | (** nested comment 1 **)
2 401 402 + (*
0 402 402 | nested comment 2
2 402 403 + (*
0 403 403 | nested comment 3
2 403 404 + (*
0 404 404 | nested comment 4
2 404 405 + (*
0 405 405 | nested comment 5
0 405 404 | *)
0 404 403 | *)
0 403 402 | *)
0 402 401 | *)
0 401 400 | *)
2 400 401 + // declare a namespace
0 401 400 | // for the module
0 400 400 namespace Issue93
1 400 400
0 400 400 module NestedComments =
2 400 401 + open FSharp.Quotations
0 401 400 | open FSharp.Quotations.Patterns
2 400 401 + // print the arguments
0 401 400 | // of an evaluated expression
2 400 401 + (* Example:
2 401 402 + (*
0 402 402 | printArgs <@ 1 + 2 @> ;;
0 402 402 | // 1
0 402 402 | // 2
0 402 401 | *)
0 401 400 | *)
0 400 400 let printArgs expr =
0 400 400 let getVal = function Value (v, _) -> downcast v | _ -> null
0 400 400 match expr with
0 400 400 | Call (_, _, args) ->
0 400 400 List.map getVal args |> List.iter (printfn "%A")
0 400 400 | _ ->
0 400 400 printfn "not an evaluated expression"
2 400 401 + (* Example:
2 401 402 + (*
0 402 402 | let constExpr = <@ true @> ;;
0 402 402 | printArgs constExpr ;;
0 402 401 | *)
0 401 400 | *)
2 400 401 + // Prints:
0 401 400 | // "not an evaluated expression"
1 400 400

View File

@ -0,0 +1,46 @@
{8}(*
(** nested comment 1 **)
(*
nested comment 2
(*
nested comment 3
(*
nested comment 4
(*
nested comment 5
*)
*)
*)
*)
*){0}
{9}// declare a namespace{0}
{9}// for the module{0}
{1}namespace{0} {6}Issue93{0}
{1}module{0} {6}NestedComments{0} {12}={0}
{1}open{0} {3}FSharp{0}.{6}Quotations{0}
{1}open{0} {3}FSharp{0}.{6}Quotations{0}.{6}Patterns{0}
{9}// print the arguments{0}
{9}// of an evaluated expression{0}
{8}(* Example:
(*
printArgs <@ 1 + 2 @> ;;
// 1
// 2
*)
*){0}
{1}let{0} {6}printArgs{0} {6}expr{0} {12}={0}
{1}let{0} {6}getVal{0} {12}={0} {1}function{0} {6}Value{0} {12}({6}v{12},{0} {6}_{12}){0} {12}->{0} {1}downcast{0} {6}v{0} {12}|{0} {6}_{0} {12}->{0} {1}null{0}
{1}match{0} {6}expr{0} {1}with{0}
{12}|{0} {6}Call{0} {12}({6}_{12},{0} {6}_{12},{0} {6}args{12}){0} {12}->{0}
{3}List{0}.{2}map{0} {6}getVal{0} {6}args{0} {12}|>{0} {3}List{0}.{2}iter{0} {12}({2}printfn{0} {15}"{19}%A{15}"{12}){0}
{12}|{0} {6}_{0} {12}->{0}
{2}printfn{0} {15}"not an evaluated expression"{0}
{8}(* Example:
(*
let constExpr = <@ true @> ;;
printArgs constExpr ;;
*)
*){0}
{9}// Prints:{0}
{9}// "not an evaluated expression"{0}

View File

@ -0,0 +1,85 @@
namespace Literals
module Issue110 =
let hexA = +0xA1B2C3D4
let hexB = -0xCC100000
// regression checks
let hexC = 0xCC100000
let binA = +0b0000_1010
let binB = -0b1010_0000
let binC = 0b1010_0000
let octA = +0o1237777700
let octB = -0o1237777700
let octC = 0o1237777700
let i8a = +0001y
let i8b = -0001y
let u8 = 0001uy
let f32a = +0.001e-003
let f32b = -0.001E+003
let f32c = 0.001e-003
let f128a = +0.001m
let f128b = -0.001m
let f128c = 0.001m
// invalid literals
let hexD = 0xa0bcde0o
let hexE = +0xa0bcd0o
let hexF = -0xa0bcd0o
let binD = 0b1010_1110xf000
let binE = +0b1010_1110xf000
let binF = -0b1010_1110xf000
let binG = 0b1010_1110o
let binH = +0b1010_1110o
let binI = -0b1010_1110o
let octD = 0o3330xaBcDeF
let octE = +0o3330xaBcDe
let octF = -0o3330xaBcDe
let octG = 0o3330b
let octH = 0o3330b
let octI = 0o3330b
module Issue111 =
// invalid literals
let a = 0000_123abc
let b = +000_123abc
let c = -0001_23abc
let d = 00123_000b
let e = +0123_000o
let f = -0123_000xcd
module Issue112 =
let i64 = 0001L
let u64 = 001UL
let f32a = 001.F
let f32b = +01.0F
let f32c = -01.00000F
let f32d = 0b0000_0010lf
let f32e = 0o000_010lf
let f32f = 0x0000000000000010lf
let f64a = 0b0000_0010LF
let f64b = 0o000_010LF
let f64c = 0x0000000000000010LF
let f128a = 001.M
let f128b = +01.0M
let f128c = -01.00000M
// regression checks
let i32 = -0001l
let u32 = +001ul
let i128 = 9999999999999999999999999999I
let f32g = 001.f
let f32h = +01.0f
let f32i = -01.00000f
let f64d = 010000e+009
let f64e = +001.0e-009
let f64f = -001.e+009
let f128d = 001.m
let f128e = +01.0m
let f128f = -01.00000m
// arithmetic expressions
let a = -001.f+01.0F
let b = +0b0111_111UL-0x100UL
let c = -01.0F + +001.f
let d = -0x100UL - +0b0111_111UL

View File

@ -0,0 +1,86 @@
0 400 400 namespace Literals
1 400 400
0 400 400 module Issue110 =
0 400 400 let hexA = +0xA1B2C3D4
0 400 400 let hexB = -0xCC100000
1 400 400
0 400 400 // regression checks
0 400 400 let hexC = 0xCC100000
0 400 400 let binA = +0b0000_1010
0 400 400 let binB = -0b1010_0000
0 400 400 let binC = 0b1010_0000
0 400 400 let octA = +0o1237777700
0 400 400 let octB = -0o1237777700
0 400 400 let octC = 0o1237777700
0 400 400 let i8a = +0001y
0 400 400 let i8b = -0001y
0 400 400 let u8 = 0001uy
0 400 400 let f32a = +0.001e-003
0 400 400 let f32b = -0.001E+003
0 400 400 let f32c = 0.001e-003
0 400 400 let f128a = +0.001m
0 400 400 let f128b = -0.001m
0 400 400 let f128c = 0.001m
1 400 400
0 400 400 // invalid literals
0 400 400 let hexD = 0xa0bcde0o
0 400 400 let hexE = +0xa0bcd0o
0 400 400 let hexF = -0xa0bcd0o
0 400 400 let binD = 0b1010_1110xf000
0 400 400 let binE = +0b1010_1110xf000
0 400 400 let binF = -0b1010_1110xf000
0 400 400 let binG = 0b1010_1110o
0 400 400 let binH = +0b1010_1110o
0 400 400 let binI = -0b1010_1110o
0 400 400 let octD = 0o3330xaBcDeF
0 400 400 let octE = +0o3330xaBcDe
0 400 400 let octF = -0o3330xaBcDe
0 400 400 let octG = 0o3330b
0 400 400 let octH = 0o3330b
0 400 400 let octI = 0o3330b
1 400 400
0 400 400 module Issue111 =
0 400 400 // invalid literals
0 400 400 let a = 0000_123abc
0 400 400 let b = +000_123abc
0 400 400 let c = -0001_23abc
0 400 400 let d = 00123_000b
0 400 400 let e = +0123_000o
0 400 400 let f = -0123_000xcd
1 400 400
0 400 400 module Issue112 =
0 400 400 let i64 = 0001L
0 400 400 let u64 = 001UL
0 400 400 let f32a = 001.F
0 400 400 let f32b = +01.0F
0 400 400 let f32c = -01.00000F
0 400 400 let f32d = 0b0000_0010lf
0 400 400 let f32e = 0o000_010lf
0 400 400 let f32f = 0x0000000000000010lf
0 400 400 let f64a = 0b0000_0010LF
0 400 400 let f64b = 0o000_010LF
0 400 400 let f64c = 0x0000000000000010LF
0 400 400 let f128a = 001.M
0 400 400 let f128b = +01.0M
0 400 400 let f128c = -01.00000M
1 400 400
0 400 400 // regression checks
0 400 400 let i32 = -0001l
0 400 400 let u32 = +001ul
0 400 400 let i128 = 9999999999999999999999999999I
0 400 400 let f32g = 001.f
0 400 400 let f32h = +01.0f
0 400 400 let f32i = -01.00000f
0 400 400 let f64d = 010000e+009
0 400 400 let f64e = +001.0e-009
0 400 400 let f64f = -001.e+009
0 400 400 let f128d = 001.m
0 400 400 let f128e = +01.0m
0 400 400 let f128f = -01.00000m
1 400 400
0 400 400 // arithmetic expressions
0 400 400 let a = -001.f+01.0F
0 400 400 let b = +0b0111_111UL-0x100UL
0 400 400 let c = -01.0F + +001.f
0 400 400 let d = -0x100UL - +0b0111_111UL
1 400 400

View File

@ -0,0 +1,85 @@
{1}namespace{0} {6}Literals{0}
{1}module{0} {6}Issue110{0} {12}={0}
{1}let{0} {6}hexA{0} {12}={0} {13}+0xA1B2C3D4{0}
{1}let{0} {6}hexB{0} {12}={0} {13}-0xCC100000{0}
{9}// regression checks{0}
{1}let{0} {6}hexC{0} {12}={0} {13}0xCC100000{0}
{1}let{0} {6}binA{0} {12}={0} {13}+0b0000_1010{0}
{1}let{0} {6}binB{0} {12}={0} {13}-0b1010_0000{0}
{1}let{0} {6}binC{0} {12}={0} {13}0b1010_0000{0}
{1}let{0} {6}octA{0} {12}={0} {13}+0o1237777700{0}
{1}let{0} {6}octB{0} {12}={0} {13}-0o1237777700{0}
{1}let{0} {6}octC{0} {12}={0} {13}0o1237777700{0}
{1}let{0} {6}i8a{0} {12}={0} {13}+0001y{0}
{1}let{0} {6}i8b{0} {12}={0} {13}-0001y{0}
{1}let{0} {6}u8{0} {12}={0} {13}0001uy{0}
{1}let{0} {6}f32a{0} {12}={0} {13}+0.001e-003{0}
{1}let{0} {6}f32b{0} {12}={0} {13}-0.001E+003{0}
{1}let{0} {6}f32c{0} {12}={0} {13}0.001e-003{0}
{1}let{0} {6}f128a{0} {12}={0} {13}+0.001m{0}
{1}let{0} {6}f128b{0} {12}={0} {13}-0.001m{0}
{1}let{0} {6}f128c{0} {12}={0} {13}0.001m{0}
{9}// invalid literals{0}
{1}let{0} {6}hexD{0} {12}={0} {13}0xa0bcde0{0}o
{1}let{0} {6}hexE{0} {12}={0} {13}+0xa0bcd0{0}o
{1}let{0} {6}hexF{0} {12}={0} {13}-0xa0bcd0{0}o
{1}let{0} {6}binD{0} {12}={0} {13}0b1010_1110{0}x{6}f000{0}
{1}let{0} {6}binE{0} {12}={0} {13}+0b1010_1110{0}x{6}f000{0}
{1}let{0} {6}binF{0} {12}={0} {13}-0b1010_1110{0}x{6}f000{0}
{1}let{0} {6}binG{0} {12}={0} {13}0b1010_1110{0}o
{1}let{0} {6}binH{0} {12}={0} {13}+0b1010_1110{0}o
{1}let{0} {6}binI{0} {12}={0} {13}-0b1010_1110{0}o
{1}let{0} {6}octD{0} {12}={0} {13}0o3330{0}x{6}aBcDeF{0}
{1}let{0} {6}octE{0} {12}={0} {13}+0o3330{0}x{6}aBcDe{0}
{1}let{0} {6}octF{0} {12}={0} {13}-0o3330{0}x{6}aBcDe{0}
{1}let{0} {6}octG{0} {12}={0} {13}0o3330{0}b
{1}let{0} {6}octH{0} {12}={0} {13}0o3330{0}b
{1}let{0} {6}octI{0} {12}={0} {13}0o3330{0}b
{1}module{0} {6}Issue111{0} {12}={0}
{9}// invalid literals{0}
{1}let{0} {6}a{0} {12}={0} {13}0000_123{0}a{6}bc{0}
{1}let{0} {6}b{0} {12}={0} {13}+000_123{0}a{6}bc{0}
{1}let{0} {6}c{0} {12}={0} {13}-0001_23{0}a{6}bc{0}
{1}let{0} {6}d{0} {12}={0} {13}00123_000{0}b
{1}let{0} {6}e{0} {12}={0} {13}+0123_000{0}o
{1}let{0} {6}f{0} {12}={0} {13}-0123_000{0}x{6}cd{0}
{1}module{0} {6}Issue112{0} {12}={0}
{1}let{0} {6}i64{0} {12}={0} {13}0001L{0}
{1}let{0} {6}u64{0} {12}={0} {13}001UL{0}
{1}let{0} {6}f32a{0} {12}={0} {13}001.F{0}
{1}let{0} {6}f32b{0} {12}={0} {13}+01.0F{0}
{1}let{0} {6}f32c{0} {12}={0} {13}-01.00000F{0}
{1}let{0} {6}f32d{0} {12}={0} {13}0b0000_0010lf{0}
{1}let{0} {6}f32e{0} {12}={0} {13}0o000_010lf{0}
{1}let{0} {6}f32f{0} {12}={0} {13}0x0000000000000010lf{0}
{1}let{0} {6}f64a{0} {12}={0} {13}0b0000_0010LF{0}
{1}let{0} {6}f64b{0} {12}={0} {13}0o000_010LF{0}
{1}let{0} {6}f64c{0} {12}={0} {13}0x0000000000000010LF{0}
{1}let{0} {6}f128a{0} {12}={0} {13}001.M{0}
{1}let{0} {6}f128b{0} {12}={0} {13}+01.0M{0}
{1}let{0} {6}f128c{0} {12}={0} {13}-01.00000M{0}
{9}// regression checks{0}
{1}let{0} {6}i32{0} {12}={0} {13}-0001l{0}
{1}let{0} {6}u32{0} {12}={0} {13}+001ul{0}
{1}let{0} {6}i128{0} {12}={0} {13}9999999999999999999999999999I{0}
{1}let{0} {6}f32g{0} {12}={0} {13}001.f{0}
{1}let{0} {6}f32h{0} {12}={0} {13}+01.0f{0}
{1}let{0} {6}f32i{0} {12}={0} {13}-01.00000f{0}
{1}let{0} {6}f64d{0} {12}={0} {13}010000e+009{0}
{1}let{0} {6}f64e{0} {12}={0} {13}+001.0e-009{0}
{1}let{0} {6}f64f{0} {12}={0} {13}-001.e+009{0}
{1}let{0} {6}f128d{0} {12}={0} {13}001.m{0}
{1}let{0} {6}f128e{0} {12}={0} {13}+01.0m{0}
{1}let{0} {6}f128f{0} {12}={0} {13}-01.00000m{0}
{9}// arithmetic expressions{0}
{1}let{0} {6}a{0} {12}={0} {13}-001.f{12}+{13}01.0F{0}
{1}let{0} {6}b{0} {12}={0} {13}+0b0111_111UL{12}-{13}0x100UL{0}
{1}let{0} {6}c{0} {12}={0} {13}-01.0F{0} {12}+{0} {13}+001.f{0}
{1}let{0} {6}d{0} {12}={0} {13}-0x100UL{0} {12}-{0} {13}+0b0111_111UL{0}

View File

@ -0,0 +1,42 @@
lexer.*.fs=fsharp
keywords.*.fs= \
abstract and as assert base begin class default delegate do done downcast \
downto elif else end exception extern false finally fixed for fun function \
global if in inherit inline interface internal lazy let let! match match! \
member module mutable namespace new null of open or override private public \
rec return return! select static struct then to true try type upcast use use! \
val void when while with yield yield! atomic break checked component const \
constraint constructor continue eager event external fixed functor global \
include method mixin object parallel process protected pure sealed tailcall \
trait virtual volatile
keywords2.*.fs= \
asr land lor lsl lsr lxor mod sig abs acos add allPairs append asin atan atan2 \
average averageBy base1 base2 blit cache cast ceil choose \
chunkBySize collect compareWith concat contains containsKey copy cos cosh count \
countBy create createBased delay difference distinct distinctBy empty eprintf except \
exists exists2 exactlyOne failwith fill filter find findBack findIndex findIndexBack \
findKey floor fold fold2 foldBack foldBack2 forall forall2 fprintf fst get groupBy head ignore indexed \
init initBased initInfinite intersect intersectMany invalidArg isEmpty isProperSubset \
isProperSuperset isSubset isSuperset item iter iter2 iteri iteri2 last length \
length1 length2 length3 length4 map map2 map3 mapFold mapFoldBack mapi mapi2 \
max maxBy maxElement min minBy minElement nameof not ofArray ofList ofSeq pairwise partition \
permute pick pown printf printfn raise readonly rebase reduce reduceBack remove replicate rev round scan \
scanBack seq set sin sinh singleton skip skipWhile snd sort sortBy sortByDescending sortDescending \
sortInPlace sortInPlaceBy sortInPlaceWith sortWith splitAt splitInto sprintf sqrt sub sum \
sumBy tail take takeWhile tan tanh toArray toList toSeq transpose truncate \
tryExactlyOne tryFind tryFindBack tryFindIndex tryFindIndexBack tryHead \
tryItem tryFindKey tryLast tryPick typeof unfold union unionMany unzip unzip3 where \
windowed zeroCreate zeroCreateBased zip zip3
keywords3.*.fs= \
ArgumentException Array Array2D Array3D Array4D BigInteger Boolean Byte Char Collections Core CultureInfo DateTime Decimal Double \
Environment Expr Float FSharp Globalization Int16 Int32 Int64 IntPtr IO Linq List Map Math Microsoft NumberStyles \
Object Parallel Printf Random ResizeArray SByte Seq Set Single String System UInt16 UInt32 UInt64 UIntPtr \
array bigint bool byte byref char comparison decimal double enum equality Error Exception exn float float32 inref int int8 int16 \
int32 int64 list nativeint nativeptr None obj Ok option Option outref ref Result sbyte Some single string unmanaged unativeint \
uint uint8 uint16 uint32 uint64 unit void voidptr voption
fold.fsharp.preprocessor=1
fold.comment=1

View File

@ -0,0 +1,53 @@
// x.fs
// Sample source file to test F# syntax highlighting
[<AutoOpen>]
module Example
#line 7 "A compiler directive"
#if DEBUG
open System
open System.IO
open System.Diagnostics
#endif
# 14 @"See: https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/strings#remarks"
// verbatim string
let xmlFragment1 = @"<book href=""https://www.worldcat.org/title/paradise-lost/oclc/1083714070"" title=""Paradise Lost"">"
// triple-quoted string
let xmlFragment2 = """<book href="https://www.worldcat.org/title/paradise-lost/oclc/1083714070" title="Paradise Lost">"""
(* you need .NET 5.0 to compile this:
https://docs.microsoft.com/en-us/dotnet/fsharp/whats-new/fsharp-50#string-interpolation
*)
let interpolated = $"""C:\{System.DateTime.Now.ToString("yyyy-MM-dd")}\""" + $"{System.Random().Next(System.Int32.MaxValue)}.log"
let ``a byte literal`` = '\209'B
// quoted expression
let expr =
<@@
let foo () = "bar"
foo ()
@@>
let bigNum (unused: 'a): float option =
Seq.init 10_000 (float >> (fun i -> i + 11.))
|> (List.ofSeq
>> List.take 5
>> List.fold (*) 1.0)
|> Some
match bigNum () with
| Some num -> sprintf "%.2f > %u" num ``a byte literal``
| None -> sprintf "%A" "Have a byte string!"B
|> printfn "%s"
// GitHub Issue #38
let unescapeWinPath (path: string) =
path.Replace("\\\\", "\\").Replace("\"", "")
unescapeWinPath "\\\"Program Files (x86)\\Windows NT\\Accessories\\\""
|> System.IO.Directory.GetFiles
|> printfn "%A"

View File

@ -0,0 +1,54 @@
2 400 401 + // x.fs
0 401 400 | // Sample source file to test F# syntax highlighting
1 400 400
0 400 400 [<AutoOpen>]
0 400 400 module Example
1 400 400
0 400 400 #line 7 "A compiler directive"
2 400 401 + #if DEBUG
2 401 402 + open System
0 402 402 | open System.IO
0 402 401 | open System.Diagnostics
0 401 400 | #endif
1 400 400
0 400 400 # 14 @"See: https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/strings#remarks"
0 400 400 // verbatim string
0 400 400 let xmlFragment1 = @"<book href=""https://www.worldcat.org/title/paradise-lost/oclc/1083714070"" title=""Paradise Lost"">"
1 400 400
0 400 400 // triple-quoted string
0 400 400 let xmlFragment2 = """<book href="https://www.worldcat.org/title/paradise-lost/oclc/1083714070" title="Paradise Lost">"""
1 400 400
2 400 401 + (* you need .NET 5.0 to compile this:
0 401 401 | https://docs.microsoft.com/en-us/dotnet/fsharp/whats-new/fsharp-50#string-interpolation
0 401 400 | *)
0 400 400 let interpolated = $"""C:\{System.DateTime.Now.ToString("yyyy-MM-dd")}\""" + $"{System.Random().Next(System.Int32.MaxValue)}.log"
1 400 400
0 400 400 let ``a byte literal`` = '\209'B
1 400 400
0 400 400 // quoted expression
0 400 400 let expr =
0 400 400 <@@
0 400 400 let foo () = "bar"
0 400 400 foo ()
0 400 400 @@>
1 400 400
0 400 400 let bigNum (unused: 'a): float option =
0 400 400 Seq.init 10_000 (float >> (fun i -> i + 11.))
0 400 400 |> (List.ofSeq
0 400 400 >> List.take 5
0 400 400 >> List.fold (*) 1.0)
0 400 400 |> Some
1 400 400
0 400 400 match bigNum () with
0 400 400 | Some num -> sprintf "%.2f > %u" num ``a byte literal``
0 400 400 | None -> sprintf "%A" "Have a byte string!"B
0 400 400 |> printfn "%s"
1 400 400
0 400 400 // GitHub Issue #38
0 400 400 let unescapeWinPath (path: string) =
0 400 400 path.Replace("\\\\", "\\").Replace("\"", "")
1 400 400
0 400 400 unescapeWinPath "\\\"Program Files (x86)\\Windows NT\\Accessories\\\""
0 400 400 |> System.IO.Directory.GetFiles
0 400 400 |> printfn "%A"
1 400 400

View File

@ -0,0 +1,53 @@
{9}// x.fs{0}
{9}// Sample source file to test F# syntax highlighting{0}
{18}[<AutoOpen>]{0}
{1}module{0} {6}Example{0}
{11}#line 7 "A compiler directive"{0}
{10}#if DEBUG{0}
{1}open{0} {3}System{0}
{1}open{0} {3}System{0}.{3}IO{0}
{1}open{0} {3}System{0}.{6}Diagnostics{0}
{10}#endif{0}
{11}# 14 @"See: https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/strings#remarks"{0}
{9}// verbatim string{0}
{1}let{0} {6}xmlFragment1{0} {12}={0} {16}@"<book href=""https://www.worldcat.org/title/paradise-lost/oclc/1083714070"" title=""Paradise Lost"">"{0}
{9}// triple-quoted string{0}
{1}let{0} {6}xmlFragment2{0} {12}={0} {15}"""<book href="https://www.worldcat.org/title/paradise-lost/oclc/1083714070" title="Paradise Lost">"""{0}
{8}(* you need .NET 5.0 to compile this:
https://docs.microsoft.com/en-us/dotnet/fsharp/whats-new/fsharp-50#string-interpolation
*){0}
{1}let{0} {6}interpolated{0} {12}={0} {15}$"""C:\{System.DateTime.Now.ToString("yyyy-MM-dd")}\"""{0} {12}+{0} {15}$"{System.Random().Next(System.Int32.MaxValue)}.log"{0}
{1}let{0} {7}``a byte literal``{0} {12}={0} {14}'\209'B{0}
{9}// quoted expression{0}
{1}let{0} {6}expr{0} {12}={0}
{17}<@@
let foo () = "bar"
foo ()
@@>{0}
{1}let{0} {6}bigNum{0} {12}({6}unused{12}:{0} {12}'{6}a{12}):{0} {3}float{0} {3}option{0} {12}={0}
{3}Seq{0}.{2}init{0} {13}10_000{0} {12}({3}float{0} {12}>>{0} {12}({1}fun{0} {6}i{0} {12}->{0} {6}i{0} {12}+{0} {13}11.{12})){0}
{12}|>{0} {12}({3}List{0}.{2}ofSeq{0}
{12}>>{0} {3}List{0}.{2}take{0} {13}5{0}
{12}>>{0} {3}List{0}.{2}fold{0} {12}(*){0} {13}1.0{12}){0}
{12}|>{0} {3}Some{0}
{1}match{0} {6}bigNum{0} {1}(){0} {1}with{0}
{12}|{0} {3}Some{0} {6}num{0} {12}->{0} {2}sprintf{0} {15}"{19}%.2f{15} > {19}%u{15}"{0} {6}num{0} {7}``a byte literal``{0}
{12}|{0} {3}None{0} {12}->{0} {2}sprintf{0} {15}"{19}%A{15}"{0} {15}"Have a byte string!"B{0}
{12}|>{0} {2}printfn{0} {15}"{19}%s{15}"{0}
{9}// GitHub Issue #38{0}
{1}let{0} {6}unescapeWinPath{0} {12}({6}path{12}:{0} {3}string{12}){0} {12}={0}
{6}path{0}.{6}Replace{12}({15}"\\\\"{12},{0} {15}"\\"{12}){0}.{6}Replace{12}({15}"\""{12},{0} {15}""{12}){0}
{6}unescapeWinPath{0} {15}"\\\"Program Files (x86)\\Windows NT\\Accessories\\\""{0}
{12}|>{0} {3}System{0}.{3}IO{0}.{6}Directory{0}.{6}GetFiles{0}
{12}|>{0} {2}printfn{0} {15}"{19}%A{15}"{0}