Skip to content

Commit d89c30d

Browse files
committed
Add postfix if the field name matches keyword
1 parent aebd273 commit d89c30d

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/Proto3/Suite/DotProto/Internal.hs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,16 @@ prefixedFieldName msgName fieldName = do
528528

529529
prefixedFieldNameWithFlag :: MonadError CompileError m => IsPrefixed -> String -> String -> m String
530530
prefixedFieldNameWithFlag (IsPrefixed flag) msgName fieldName = do
531-
if flag then prefixedFieldName msgName fieldName else return fieldName
531+
if flag then prefixedFieldName msgName fieldName else return $ if fieldName `elem` keywords then fieldName ++ "_" else fieldName
532+
where
533+
-- copy from https://hackage.haskell.org/package/hscolour-1.20.3/docs/src/Language-Haskell-HsColour-Classify.html#keywords
534+
-- and remove "forall", "qualified", "ccall", "as", "safe", "unsafe"
535+
keywords =
536+
["case","class","data","default","deriving","do","else"
537+
,"if","import","in","infix","infixl","infixr","instance","let","module"
538+
,"newtype","of","then","type","where","_"
539+
,"foreign"
540+
]
532541

533542
dpIdentUnqualName :: MonadError CompileError m => DotProtoIdentifier -> m String
534543
dpIdentUnqualName (Single name) = pure name

0 commit comments

Comments
 (0)