Re: [GHC] #7484: Template Haskell allows building invalid record fields/names

2013-01-03 Thread GHC
#7484: Template Haskell allows building invalid record fields/names
-+--
Reporter:  iustin|   Owner:  
Type:  bug   |  Status:  new 
Priority:  normal|   Milestone:  
   Component:  Template Haskell  | Version:  7.6.1   
Keywords:|  Os:  Unknown/Multiple
Architecture:  Unknown/Multiple  | Failure:  None/Unknown
  Difficulty:  Unknown   |Testcase:  
   Blockedby:|Blocking:  
 Related:|  
-+--

Comment(by igloo):

 The problem with doing the check in `mkName` is that it would still be
 possible to make a variable that starts with a capital letter, or a
 constructor that starts with a lower case letter.

-- 
Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7484#comment:3
GHC http://www.haskell.org/ghc/
The Glasgow Haskell Compiler

___
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs


[GHC] #7484: Template Haskell allows building invalid record fields/names

2012-12-06 Thread GHC
#7484: Template Haskell allows building invalid record fields/names
-+--
Reporter:  iustin|  Owner:  
Type:  bug   | Status:  new 
Priority:  normal|  Component:  Template Haskell
 Version:  7.6.1 |   Keywords:  
  Os:  Unknown/Multiple  |   Architecture:  Unknown/Multiple
 Failure:  None/Unknown  |  Blockedby:  
Blocking:|Related:  
-+--
 This is not really a bug, more like a unintuitive behaviour.

 Due to a bug in my definitions, I was passing a name like `opTestDelay `
 (note extra space) to a TH splice builder, which ended up with:

 {{{
 data OpCode
   = OpTestDelay {opDelayDuration  :: Double,
  opDelayOnMaster :: Bool,
  opDelayOnNodes :: [Ganeti.Types.NonEmptyString],
  opDelayRepeat :: Ganeti.Types.NonNegative Int}
 }}}

 Note the double space around the first record field. This results in the
 actual accessor functions having the space in the name, which makes them
 unusable from normal code.

 This seems to be allowed as well in other TH constructs:

 {{{
 λ runQ $ return (ValD (VarP (mkName a ) ) (NormalB (LitE (IntegerL 5)))
 [])
 ValD (VarP a ) (NormalB (LitE (IntegerL 5))) []
 }}}

 I think that names should not be allowed to contain invalid identifiers
 (that would make them non-usable in normal Haskell code), but I'm not sure
 - maybe TH is designed to allow you to shoot yourself in the foot indeed.
 Anyway, opening this bug just in case.

 Tested and behaves the same both on 6.12 and 7.6.

-- 
Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7484
GHC http://www.haskell.org/ghc/
The Glasgow Haskell Compiler

___
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs


Re: [GHC] #7484: Template Haskell allows building invalid record fields/names

2012-12-06 Thread GHC
#7484: Template Haskell allows building invalid record fields/names
-+--
Reporter:  iustin|   Owner:  
Type:  bug   |  Status:  new 
Priority:  normal|   Milestone:  
   Component:  Template Haskell  | Version:  7.6.1   
Keywords:|  Os:  Unknown/Multiple
Architecture:  Unknown/Multiple  | Failure:  None/Unknown
  Difficulty:  Unknown   |Testcase:  
   Blockedby:|Blocking:  
 Related:|  
-+--
Changes (by simonpj):

  * difficulty:  = Unknown


Comment:

 Yes I see that.  What would you like? Should `mkName` fail (by calling
 `error`) when given an illegal name?

 I wonder if some people might use an illegal name specificaly to ''avoid''
 the danger of accidental capture?  (Though you can always use `newName`
 for that.)

 Perhaps it would suffice to reject spaces in names, becuase that is
 perhaps particularly confusing.

 Simon

-- 
Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7484#comment:1
GHC http://www.haskell.org/ghc/
The Glasgow Haskell Compiler

___
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs


Re: [GHC] #7484: Template Haskell allows building invalid record fields/names

2012-12-06 Thread GHC
#7484: Template Haskell allows building invalid record fields/names
-+--
Reporter:  iustin|   Owner:  
Type:  bug   |  Status:  new 
Priority:  normal|   Milestone:  
   Component:  Template Haskell  | Version:  7.6.1   
Keywords:|  Os:  Unknown/Multiple
Architecture:  Unknown/Multiple  | Failure:  None/Unknown
  Difficulty:  Unknown   |Testcase:  
   Blockedby:|Blocking:  
 Related:|  
-+--

Comment(by iustin):

 Replying to [comment:1 simonpj]:
  Yes I see that.  What would you like? Should `mkName` fail (by calling
 `error`) when given an illegal name?

 Yes, I think that makes sense (and is appropriate).

  I wonder if some people might use an illegal name specificaly to
 ''avoid'' the danger of accidental capture?  (Though you can always use
 `newName` for that.)

 That would be a very ugly way of solving the problem. Since `newName`
 exists and works well, I don't see a problem against moving to that (if
 anyone relies on such behaviour).

  Perhaps it would suffice to reject spaces in names, becuase that is
 perhaps particularly confusing.

 Indeed. I don't know how difficult is to decide whether a name is
 correct versus simply checking for spaces; ideally names should be well-
 formed, but if spaces are much easier to detect, doing just space-checks
 is already an improvement.

 Thanks!
 Iustin

-- 
Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7484#comment:2
GHC http://www.haskell.org/ghc/
The Glasgow Haskell Compiler

___
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs