Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/absil/il.fs
Original file line number Diff line number Diff line change
Expand Up @@ -678,8 +678,8 @@ type ILTypeRef =

member tref.FullName = String.concat "." (tref.Enclosing @ [tref.Name])

member tref.BasicQualifiedName =
String.concat "+" (tref.Enclosing @ [ tref.Name ])
member tref.BasicQualifiedName =
(String.concat "+" (tref.Enclosing @ [ tref.Name ] )).Replace(",", @"\,")

member tref.AddQualifiedNameExtensionWithNoShortPrimaryAssembly(basic) =
let sco = tref.Scope.QualifiedNameWithNoShortPrimaryAssembly
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
//<Expects status=success></Expects>
open System
open System.Reflection

open Microsoft.FSharp.Quotations
open Microsoft.FSharp.Quotations.Patterns
open Microsoft.FSharp.Quotations.DerivedPatterns

let failures = ref false
let report_failure () =
stderr.WriteLine " NO"; failures := true
let test s b = stderr.Write(s:string); if b then stderr.WriteLine " OK" else report_failure()

(*--------------------*)

// Test cases for Github Issue # 10 module cannot contain ,

// Comma in module name
module ``,`` =
let x = 3

// Lots of comma's in module name
module ``,,,,,,,,,,,`` =
let x = 5

// Lots of comma's and other characters in module name
module ``One, 2, Three, 4, Five`` =
let x = 7

// Nested modules with commas
module ``Nested modules with commas`` =
module ``One, `` =
module ``Two, `` =
module ``Three, `` =
let x = 9

module ``Comma in type name`` =
type ``,`` =
static member x = 13

// Lots of comma's in type name
module ``Lots of comma's in type name`` =
type ``,,,,,,,`` =
static member x = 15

// Lots of comma's and other characters in type name
module ``Lots of comma's and other characters in type name`` =
type ``One, 2, Three, 4, Five`` =
static member x = 17

do
let eval expr value = if (expr) = value then true else false

test "Comma in module name" (eval ``,``.x 3)
test "Lots of comma's in module name" (eval ``,,,,,,,,,,,``.x 5)
test "Lots of comma's and other characters in module name" (eval ``One, 2, Three, 4, Five``.x 7)
test "Nested modules with commas" (eval ``Nested modules with commas``.``One, ``.``Two, ``.``Three, ``.x 9)

test "Comma in type name" (eval ``Comma in type name``.``,``.x 13)
test "Lots of comma's in type name" (eval ``Lots of comma's in type name``.``,,,,,,,``.x 15)
test "Lots of comma's and other characters in type name" (eval ``Lots of comma's and other characters in type name``.``One, 2, Three, 4, Five``.x 17)

let eval expr value = (match expr with | PropertyGet (a, b, c) -> (if (b.GetGetMethod(true) :> MethodBase).Invoke(null, null) :?>int = value then true else false) | _ -> false)

test "Comma in module name from quotation" (eval <@@ ``,``.x @@> 3)
test "Lots of comma's in module name from quotation" (eval <@@ ``,,,,,,,,,,,``.x @@> 5)
test "Lots of comma's and other characters in module name from quotation" (eval <@@ ``One, 2, Three, 4, Five``.x @@> 7)
test "Nested modules with commas from quotation" (eval <@@ ``Nested modules with commas``.``One, ``.``Two, ``.``Three, ``.x @@> 9)

test "Comma in type name from quotation" (eval <@@ ``Comma in type name``.``,``.x @@> 13)
test "Lots of comma's in type name from quotation" (eval <@@ ``Lots of comma's in type name``.``,,,,,,,``.x @@> 15)
test "Lots of comma's and other characters in type name from quotation" (eval <@@ ``Lots of comma's and other characters in type name``.``One, 2, Three, 4, Five``.x @@> 17)

let aa =
if !failures then (stdout.WriteLine "Test Failed"; exit 1)

do (stdout.WriteLine "Test Passed";
System.IO.File.WriteAllText("test.ok","ok");
exit 0)
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@
SOURCE=E_KeywordIdent01.fs # E_KeywordIdent01.fs
SOURCE=E_ValidIdentifier03.fs SCFLAGS="--test:ErrorRanges" # E_ValidIdentifier03.fs
SOURCE=E_ValidIdentifier04.fs # E_ValidIdentifier04.fs

SOURCE=backtickmoduleandtypenames.fsx # backtickmoduleandtypenames.fsx
SOURCE=backtickmoduleandtypenames.fsx FSIMODE=EXEC COMPILE_ONLY=1 # backtickmoduleandtypenames.fsx FSIMODE=EXEC COMPILE_ONLY=1

SOURCE=StructNotAllowDoKeyword.fs # StructNotAllowDoKeyword.fs
SOURCE=E_MissingQualification.fs SCFLAGS="--test:ErrorRanges" # E_MissingQualification.fs

Expand Down