packages feed

bond 0.4.0.1 → 0.4.0.2

raw patch · 8 files changed

+36/−20 lines, 8 filesdep +scientificdep ~Diffnew-uploaderPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: scientific

Dependency ranges changed: Diff

API changes (from Hackage documentation)

- Language.Bond.Codegen.Templates: protocolReader :: Protocol -> String
- Language.Bond.Codegen.Templates: protocolWriter :: Protocol -> String
- Language.Bond.Codegen.TypeMapping: aliasMapping :: MappingContext -> [AliasMapping]
- Language.Bond.Codegen.TypeMapping: aliasName :: AliasMapping -> QualifiedName
- Language.Bond.Codegen.TypeMapping: aliasTemplate :: AliasMapping -> [Fragment]
- Language.Bond.Codegen.TypeMapping: fromNamespace :: NamespaceMapping -> QualifiedName
- Language.Bond.Codegen.TypeMapping: namespaceMapping :: MappingContext -> [NamespaceMapping]
- Language.Bond.Codegen.TypeMapping: namespaces :: MappingContext -> [Namespace]
- Language.Bond.Codegen.TypeMapping: toNamespace :: NamespaceMapping -> QualifiedName
- Language.Bond.Codegen.TypeMapping: typeMapping :: MappingContext -> TypeMapping
- Language.Bond.Codegen.Util: instance ToText Double
- Language.Bond.Codegen.Util: instance ToText Integer
- Language.Bond.Codegen.Util: instance ToText Word16
- Language.Bond.Syntax.JSON: instance FromJSON Attribute
- Language.Bond.Syntax.JSON: instance FromJSON Bond
- Language.Bond.Syntax.JSON: instance FromJSON Constant
- Language.Bond.Syntax.JSON: instance FromJSON Constraint
- Language.Bond.Syntax.JSON: instance FromJSON Declaration
- Language.Bond.Syntax.JSON: instance FromJSON Default
- Language.Bond.Syntax.JSON: instance FromJSON Field
- Language.Bond.Syntax.JSON: instance FromJSON Import
- Language.Bond.Syntax.JSON: instance FromJSON Language
- Language.Bond.Syntax.JSON: instance FromJSON Modifier
- Language.Bond.Syntax.JSON: instance FromJSON Namespace
- Language.Bond.Syntax.JSON: instance FromJSON Type
- Language.Bond.Syntax.JSON: instance FromJSON TypeParam
- Language.Bond.Syntax.JSON: instance ToJSON Attribute
- Language.Bond.Syntax.JSON: instance ToJSON Bond
- Language.Bond.Syntax.JSON: instance ToJSON Constant
- Language.Bond.Syntax.JSON: instance ToJSON Constraint
- Language.Bond.Syntax.JSON: instance ToJSON Declaration
- Language.Bond.Syntax.JSON: instance ToJSON Default
- Language.Bond.Syntax.JSON: instance ToJSON Field
- Language.Bond.Syntax.JSON: instance ToJSON Import
- Language.Bond.Syntax.JSON: instance ToJSON Language
- Language.Bond.Syntax.JSON: instance ToJSON Modifier
- Language.Bond.Syntax.JSON: instance ToJSON Namespace
- Language.Bond.Syntax.JSON: instance ToJSON Type
- Language.Bond.Syntax.JSON: instance ToJSON TypeParam
- Language.Bond.Syntax.SchemaDef: instance ToJSON FieldDef
- Language.Bond.Syntax.SchemaDef: instance ToJSON Metadata
- Language.Bond.Syntax.SchemaDef: instance ToJSON SchemaDef
- Language.Bond.Syntax.SchemaDef: instance ToJSON StructDef
- Language.Bond.Syntax.SchemaDef: instance ToJSON TypeDef
- Language.Bond.Syntax.SchemaDef: instance ToJSON Variant
- Language.Bond.Syntax.Types: aliasType :: Declaration -> Type
- Language.Bond.Syntax.Types: attrName :: Attribute -> QualifiedName
- Language.Bond.Syntax.Types: attrValue :: Attribute -> String
- Language.Bond.Syntax.Types: bondDeclarations :: Bond -> [Declaration]
- Language.Bond.Syntax.Types: bondImports :: Bond -> [Import]
- Language.Bond.Syntax.Types: bondNamespaces :: Bond -> [Namespace]
- Language.Bond.Syntax.Types: constantName :: Constant -> String
- Language.Bond.Syntax.Types: constantValue :: Constant -> Maybe Int
- Language.Bond.Syntax.Types: declAttributes :: Declaration -> [Attribute]
- Language.Bond.Syntax.Types: declName :: Declaration -> String
- Language.Bond.Syntax.Types: declNamespaces :: Declaration -> [Namespace]
- Language.Bond.Syntax.Types: declParams :: Declaration -> [TypeParam]
- Language.Bond.Syntax.Types: enumConstants :: Declaration -> [Constant]
- Language.Bond.Syntax.Types: fieldAttributes :: Field -> [Attribute]
- Language.Bond.Syntax.Types: fieldDefault :: Field -> Maybe Default
- Language.Bond.Syntax.Types: fieldModifier :: Field -> Modifier
- Language.Bond.Syntax.Types: fieldName :: Field -> String
- Language.Bond.Syntax.Types: fieldOrdinal :: Field -> Word16
- Language.Bond.Syntax.Types: fieldType :: Field -> Type
- Language.Bond.Syntax.Types: instance Eq Attribute
- Language.Bond.Syntax.Types: instance Eq Bond
- Language.Bond.Syntax.Types: instance Eq Constant
- Language.Bond.Syntax.Types: instance Eq Constraint
- Language.Bond.Syntax.Types: instance Eq Declaration
- Language.Bond.Syntax.Types: instance Eq Default
- Language.Bond.Syntax.Types: instance Eq Field
- Language.Bond.Syntax.Types: instance Eq Import
- Language.Bond.Syntax.Types: instance Eq Language
- Language.Bond.Syntax.Types: instance Eq Modifier
- Language.Bond.Syntax.Types: instance Eq Namespace
- Language.Bond.Syntax.Types: instance Eq Type
- Language.Bond.Syntax.Types: instance Eq TypeParam
- Language.Bond.Syntax.Types: instance Show Attribute
- Language.Bond.Syntax.Types: instance Show Bond
- Language.Bond.Syntax.Types: instance Show Constant
- Language.Bond.Syntax.Types: instance Show Constraint
- Language.Bond.Syntax.Types: instance Show Declaration
- Language.Bond.Syntax.Types: instance Show Default
- Language.Bond.Syntax.Types: instance Show Field
- Language.Bond.Syntax.Types: instance Show Import
- Language.Bond.Syntax.Types: instance Show Language
- Language.Bond.Syntax.Types: instance Show Modifier
- Language.Bond.Syntax.Types: instance Show Namespace
- Language.Bond.Syntax.Types: instance Show Type
- Language.Bond.Syntax.Types: instance Show TypeParam
- Language.Bond.Syntax.Types: nsLanguage :: Namespace -> Maybe Language
- Language.Bond.Syntax.Types: nsName :: Namespace -> QualifiedName
- Language.Bond.Syntax.Types: paramConstraint :: TypeParam -> Maybe Constraint
- Language.Bond.Syntax.Types: paramName :: TypeParam -> String
- Language.Bond.Syntax.Types: structBase :: Declaration -> Maybe Type
- Language.Bond.Syntax.Types: structFields :: Declaration -> [Field]
+ Language.Bond.Codegen.Templates: [protocolReader] :: Protocol -> String
+ Language.Bond.Codegen.Templates: [protocolWriter] :: Protocol -> String
+ Language.Bond.Codegen.TypeMapping: [aliasMapping] :: MappingContext -> [AliasMapping]
+ Language.Bond.Codegen.TypeMapping: [aliasName] :: AliasMapping -> QualifiedName
+ Language.Bond.Codegen.TypeMapping: [aliasTemplate] :: AliasMapping -> [Fragment]
+ Language.Bond.Codegen.TypeMapping: [fromNamespace] :: NamespaceMapping -> QualifiedName
+ Language.Bond.Codegen.TypeMapping: [namespaceMapping] :: MappingContext -> [NamespaceMapping]
+ Language.Bond.Codegen.TypeMapping: [namespaces] :: MappingContext -> [Namespace]
+ Language.Bond.Codegen.TypeMapping: [toNamespace] :: NamespaceMapping -> QualifiedName
+ Language.Bond.Codegen.TypeMapping: [typeMapping] :: MappingContext -> TypeMapping
+ Language.Bond.Codegen.Util: instance Text.Shakespeare.Text.ToText GHC.Integer.Type.Integer
+ Language.Bond.Codegen.Util: instance Text.Shakespeare.Text.ToText GHC.Types.Double
+ Language.Bond.Codegen.Util: instance Text.Shakespeare.Text.ToText GHC.Word.Word16
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.Attribute
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.Bond
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.Constant
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.Constraint
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.Declaration
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.Default
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.Field
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.Import
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.Language
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.Modifier
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.Namespace
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.Type
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.FromJSON Language.Bond.Syntax.Types.TypeParam
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.Attribute
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.Bond
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.Constant
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.Constraint
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.Declaration
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.Default
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.Field
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.Import
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.Language
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.Modifier
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.Namespace
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.Type
+ Language.Bond.Syntax.JSON: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.Types.TypeParam
+ Language.Bond.Syntax.SchemaDef: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.SchemaDef.FieldDef
+ Language.Bond.Syntax.SchemaDef: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.SchemaDef.Metadata
+ Language.Bond.Syntax.SchemaDef: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.SchemaDef.SchemaDef
+ Language.Bond.Syntax.SchemaDef: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.SchemaDef.StructDef
+ Language.Bond.Syntax.SchemaDef: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.SchemaDef.TypeDef
+ Language.Bond.Syntax.SchemaDef: instance Data.Aeson.Types.Class.ToJSON Language.Bond.Syntax.SchemaDef.Variant
+ Language.Bond.Syntax.Types: [aliasType] :: Declaration -> Type
+ Language.Bond.Syntax.Types: [attrName] :: Attribute -> QualifiedName
+ Language.Bond.Syntax.Types: [attrValue] :: Attribute -> String
+ Language.Bond.Syntax.Types: [bondDeclarations] :: Bond -> [Declaration]
+ Language.Bond.Syntax.Types: [bondImports] :: Bond -> [Import]
+ Language.Bond.Syntax.Types: [bondNamespaces] :: Bond -> [Namespace]
+ Language.Bond.Syntax.Types: [constantName] :: Constant -> String
+ Language.Bond.Syntax.Types: [constantValue] :: Constant -> Maybe Int
+ Language.Bond.Syntax.Types: [declAttributes] :: Declaration -> [Attribute]
+ Language.Bond.Syntax.Types: [declName] :: Declaration -> String
+ Language.Bond.Syntax.Types: [declNamespaces] :: Declaration -> [Namespace]
+ Language.Bond.Syntax.Types: [declParams] :: Declaration -> [TypeParam]
+ Language.Bond.Syntax.Types: [enumConstants] :: Declaration -> [Constant]
+ Language.Bond.Syntax.Types: [fieldAttributes] :: Field -> [Attribute]
+ Language.Bond.Syntax.Types: [fieldDefault] :: Field -> Maybe Default
+ Language.Bond.Syntax.Types: [fieldModifier] :: Field -> Modifier
+ Language.Bond.Syntax.Types: [fieldName] :: Field -> String
+ Language.Bond.Syntax.Types: [fieldOrdinal] :: Field -> Word16
+ Language.Bond.Syntax.Types: [fieldType] :: Field -> Type
+ Language.Bond.Syntax.Types: [nsLanguage] :: Namespace -> Maybe Language
+ Language.Bond.Syntax.Types: [nsName] :: Namespace -> QualifiedName
+ Language.Bond.Syntax.Types: [paramConstraint] :: TypeParam -> Maybe Constraint
+ Language.Bond.Syntax.Types: [paramName] :: TypeParam -> String
+ Language.Bond.Syntax.Types: [structBase] :: Declaration -> Maybe Type
+ Language.Bond.Syntax.Types: [structFields] :: Declaration -> [Field]
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.Attribute
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.Bond
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.Constant
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.Constraint
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.Declaration
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.Default
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.Field
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.Import
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.Language
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.Modifier
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.Namespace
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.Type
+ Language.Bond.Syntax.Types: instance GHC.Classes.Eq Language.Bond.Syntax.Types.TypeParam
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.Attribute
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.Bond
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.Constant
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.Constraint
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.Declaration
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.Default
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.Field
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.Import
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.Language
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.Modifier
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.Namespace
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.Type
+ Language.Bond.Syntax.Types: instance GHC.Show.Show Language.Bond.Syntax.Types.TypeParam
- Language.Bond.Parser: type ImportResolver = FilePath -> FilePath -> IO (FilePath, String)
+ Language.Bond.Parser: type ImportResolver = FilePath path of the file containing the <https://microsoft.github.io/bond/manual/compiler.html#import-statements import statement> -> FilePath (usually relative) path of the imported file -> IO (FilePath, String) the resolver function returns the resolved path of the imported file and its content
- Language.Bond.Syntax.Util: foldMapFields :: Monoid m => (Field -> m) -> Type -> m
+ Language.Bond.Syntax.Util: foldMapFields :: (Monoid m) => (Field -> m) -> Type -> m
- Language.Bond.Syntax.Util: foldMapType :: Monoid m => (Type -> m) -> Type -> m
+ Language.Bond.Syntax.Util: foldMapType :: (Monoid m) => (Type -> m) -> Type -> m
- Language.Bond.Util: optional :: Monoid m => (a -> m) -> Maybe a -> m
+ Language.Bond.Util: optional :: (Monoid m) => (a -> m) -> Maybe a -> m

Files

bond.cabal view
@@ -2,8 +2,9 @@ -- Licensed under the MIT license. See LICENSE file in the project root for full license information.
 
 name:               bond
-version:            0.4.0.1
+version:            0.4.0.2
 cabal-version:      >= 1.8
+tested-with:        GHC>=7.4.1
 synopsis:           Bond schema compiler and code generator
 description:        Bond is a cross-platform framework for handling schematized
                     data. It supports cross-language de/serialization and
@@ -27,7 +28,7 @@ maintainer:         Adam Sapek <adamsap@microsoft.com>
 bug-reports:        https://github.com/Microsoft/bond/issues
 copyright:          Copyright (c) Microsoft. All rights reserved.
-category:           Language
+category:           Language, Compiler, Code Generation
 build-type:         Simple
 
 source-repository head
@@ -42,6 +43,7 @@                     filepath >= 1.0,
                     mtl >= 2.1,
                     parsec >= 3.1,
+                    scientific >= 0.3.4.6,
                     shakespeare >= 2.0,
                     text >= 0.11
   ghc-options:      -Wall
@@ -88,7 +90,7 @@                     derive,
                     HUnit,
                     QuickCheck,
-                    Diff >= 0.2 && < 0.4,
+                    Diff >= 0.2 && <= 0.3.2,
                     pretty,
                     tasty,
                     tasty-golden,
src/Language/Bond/Codegen/Cpp/Util.hs view
@@ -139,7 +139,6 @@         };|]
   where
     constant Constant {..} = [lt|#{constantName}#{optional value constantValue}|]
-    value (-2147483648) = [lt| = -2147483647-1|]
-    value x = [lt| = #{x}|]
+    value (-2147483648) = [lt| = static_cast<int32_t>(-2147483647-1)|]
+    value x = [lt| = static_cast<int32_t>(#{x})|]
 enumDefinition _ = error "enumDefinition: impossible happened."
-
src/Language/Bond/Codegen/Cs/Types_cs.hs view
@@ -40,6 +40,7 @@     -> FieldMapping         -- ^ Specifies how to represent schema fields
     -> MappingContext -> String -> [Import] -> [Declaration] -> (String, Text)
 types_cs structMapping fieldMapping cs _ _ declarations = (fileSuffix, [lt|
+#{CS.disableCscWarnings}
 #{CS.disableReSharperWarnings}
 namespace #{csNamespace}
 {
@@ -139,7 +140,7 @@     }|]
       where
         -- constant
-        constant Constant {..} = let value x = [lt| = #{x}|] in
+        constant Constant {..} = let value x = [lt| = unchecked((int)#{x})|] in
             [lt|#{constantName}#{optional value constantValue},|]
 
     typeDefinition _ = mempty
src/Language/Bond/Codegen/Cs/Util.hs view
@@ -9,6 +9,7 @@     , schemaAttributes
     , paramConstraints
     , defaultValue
+    , disableCscWarnings
     , disableReSharperWarnings
     ) where
 
@@ -23,6 +24,12 @@ import Language.Bond.Syntax.Util
 import Language.Bond.Codegen.TypeMapping
 import Language.Bond.Codegen.Util
+
+disableCscWarnings :: Text
+disableCscWarnings = [lt|
+// suppress "Missing XML comment for publicly visible type or member"
+#pragma warning disable 1591
+|]
 
 disableReSharperWarnings :: Text
 disableReSharperWarnings = [lt|
src/Language/Bond/Codegen/CustomMapping.hs view
@@ -25,7 +25,7 @@ -- | Specification of a type alias mapping.
 data AliasMapping = AliasMapping
     { aliasName :: QualifiedName        -- ^ qualified name of a type alias
-    , aliasTemplate :: [Fragment]       -- ^ list of fragments comprising custom mapping for the alias
+    , aliasTemplate :: [Fragment]       -- ^ list of fragments comprising the custom mapping for the alias
     }
 
 -- | Specification of namespace mapping.
src/Language/Bond/Codegen/TypeMapping.hs view
@@ -10,8 +10,8 @@ Stability   : provisional
 Portability : portable
 
-The module defines abstractions for mapping from the Bond type system into the
-type systems of a target programming language.
+This module defines abstractions for mapping from the Bond type system into the
+type system of a target programming language.
 -}
 
 module Language.Bond.Codegen.TypeMapping
@@ -65,8 +65,8 @@ import Language.Bond.Codegen.CustomMapping
 
 -- | The 'MappingContext' encapsulates information about mapping Bond types
--- into types of code generation target language. A context instance is passed
--- to code generation templates.
+-- into types in the target language. A context instance is passed to code
+-- generation templates.
 data MappingContext = MappingContext
     { typeMapping :: TypeMapping
     , aliasMapping :: [AliasMapping]
@@ -74,7 +74,7 @@     , namespaces :: [Namespace]
     }
 
--- | An opaque type representing type mapping.
+-- | An opaque type representing a type mapping.
 data TypeMapping = TypeMapping
     { language :: Maybe Language
     , global :: Builder
@@ -89,7 +89,7 @@ type TypeNameBuilder = Reader MappingContext Builder
 
 -- | Returns the namespace for the 'MappingContext'. The namespace may be
--- different than specified in schema definition file due to
+-- different than specified in the schema definition file due to
 -- <#namespace-mapping namespace mapping>.
 getNamespace :: MappingContext -> QualifiedName
 getNamespace c@MappingContext {..} = resolveNamespace c namespaces
src/Language/Bond/Parser.hs view
@@ -24,6 +24,7 @@ import Data.Ord
 import Data.List
 import Data.Function
+import Data.Word
 import Control.Applicative
 import Control.Monad.Reader
 import Prelude
@@ -233,12 +234,12 @@     with params e = e { currentParams = params }
     unique p = do
         fields' <- p
-        case findDuplicates fields' of
+        case findDuplicatesBy fieldOrdinal fields' ++ findDuplicatesBy fieldName fields' of
             [] -> return fields'
-            Field {..}:_ -> fail $ "Duplicate definition of the field with ordinal " ++ show fieldOrdinal
+            Field {..}:_ -> fail $ "Duplicate definition of the field with ordinal " ++ show fieldOrdinal ++
+                " and name " ++ show fieldName
       where
-        findDuplicates xs = deleteFirstsBy ordinal xs (nubBy ordinal xs)
-        ordinal = (==) `on` fieldOrdinal
+        findDuplicatesBy accessor xs = deleteFirstsBy ((==) `on` accessor) xs (nubBy ((==) `on` accessor) xs)
 
 manySortedBy :: (a -> a -> Ordering) -> ParsecT s u m a -> ParsecT s u m [a]
 manySortedBy = manyAccum . insertBy
@@ -247,7 +248,13 @@ field :: Parser Field
 field = makeField <$> attributes <*> ordinal <*> modifier <*> ftype <*> identifier <*> optional default_
   where
-    ordinal = (fromIntegral <$> integer) <* colon <?> "field ordinal"
+    ordinal = word16 <* colon <?> "field ordinal"
+      where
+        word16 = do
+            i <- integer
+            if i <= toInteger (maxBound :: Word16) && i >= toInteger (minBound :: Word16)
+                then return (fromInteger i)
+                else fail "Field ordinal must be within the range 0-65535"
     modifier = option Optional
                     (keyword "optional" *> pure Optional
                  <|> keyword "required" *> pure Required
src/Language/Bond/Syntax/SchemaDef.hs view
@@ -36,7 +36,7 @@ import Language.Bond.Codegen.TypeMapping
 
 -- | Returns an instance of <https://microsoft.github.io/bond/manual/compiler.html#runtime-schema SchemaDef>
--- for the specified type. The SchemaDef is encoded using Bond Simple JSON
+-- for the specified type. The SchemaDef is encoded using the Bond Simple JSON
 -- protocol and returned as a lazy 'BL.ByteString'.
 encodeSchemaDef :: Type -> BL.ByteString
 encodeSchemaDef = encode . makeSchemaDef