packages feed

dhscanner-bitcode 1.0.10 → 1.0.11

raw patch · 2 files changed

+67/−13 lines, 2 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Fqn: Fqn :: String -> Fqn
- Fqn: [content] :: Fqn -> String
- Fqn: any :: Fqn
- Fqn: nativeBool :: Fqn
- Fqn: nativeInt :: Fqn
- Fqn: nativeNull :: Fqn
- Fqn: nativeStr :: Fqn
+ Fqn: ClassInstance :: ClassInstanceContent -> Fqn
+ Fqn: ClassInstanceContent :: InstanceName -> InstanceAttribute -> ClassInstanceContent
+ Fqn: ClassName :: ClassNameContent -> Fqn
+ Fqn: ClassNameContent :: ClassName -> ClassNameContent
+ Fqn: FieldedAccess :: Fqn -> FieldName -> Fqn
+ Fqn: Imported :: ImportedContent -> Fqn
+ Fqn: ImportedLocal :: ImportedLocalContent -> ImportedContent
+ Fqn: ImportedLocalContent :: FilePath -> [String] -> ImportedLocalContent
+ Fqn: ImportedThirdParty :: ImportedThirdPartyContent -> ImportedContent
+ Fqn: ImportedThirdPartyContent :: String -> [String] -> ImportedThirdPartyContent
+ Fqn: InstanceAttribute :: FieldName -> InstanceAttribute
+ Fqn: NativeTypeBool :: Fqn
+ Fqn: NativeTypeConstBool :: Bool -> Fqn
+ Fqn: NativeTypeConstInt :: Int -> Fqn
+ Fqn: NativeTypeConstStr :: String -> Fqn
+ Fqn: NativeTypeInt :: Fqn
+ Fqn: NativeTypeNull :: Fqn
+ Fqn: NativeTypeString :: Fqn
+ Fqn: Self :: InstanceName
+ Fqn: This :: InstanceName
+ Fqn: Unknwon :: Fqn
+ Fqn: [attributeName] :: InstanceAttribute -> FieldName
+ Fqn: [classNameContent] :: ClassNameContent -> ClassName
+ Fqn: [importedLocalLocation] :: ImportedLocalContent -> FilePath
+ Fqn: [importedLocalRest] :: ImportedLocalContent -> [String]
+ Fqn: [importedThirdPartyName] :: ImportedThirdPartyContent -> String
+ Fqn: [importedThirdPartyRest] :: ImportedThirdPartyContent -> [String]
+ Fqn: [instanceAttribute] :: ClassInstanceContent -> InstanceAttribute
+ Fqn: [instanceName] :: ClassInstanceContent -> InstanceName
+ Fqn: data ClassInstanceContent
+ Fqn: data ClassNameContent
+ Fqn: data ImportedContent
+ Fqn: data ImportedLocalContent
+ Fqn: data ImportedThirdPartyContent
+ Fqn: data InstanceAttribute
+ Fqn: data InstanceName
+ Fqn: instance Data.Aeson.Types.FromJSON.FromJSON Fqn.ClassInstanceContent
+ Fqn: instance Data.Aeson.Types.FromJSON.FromJSON Fqn.ClassNameContent
+ Fqn: instance Data.Aeson.Types.FromJSON.FromJSON Fqn.ImportedContent
+ Fqn: instance Data.Aeson.Types.FromJSON.FromJSON Fqn.ImportedLocalContent
+ Fqn: instance Data.Aeson.Types.FromJSON.FromJSON Fqn.ImportedThirdPartyContent
+ Fqn: instance Data.Aeson.Types.FromJSON.FromJSON Fqn.InstanceAttribute
+ Fqn: instance Data.Aeson.Types.FromJSON.FromJSON Fqn.InstanceName
+ Fqn: instance Data.Aeson.Types.ToJSON.ToJSON Fqn.ClassInstanceContent
+ Fqn: instance Data.Aeson.Types.ToJSON.ToJSON Fqn.ClassNameContent
+ Fqn: instance Data.Aeson.Types.ToJSON.ToJSON Fqn.ImportedContent
+ Fqn: instance Data.Aeson.Types.ToJSON.ToJSON Fqn.ImportedLocalContent
+ Fqn: instance Data.Aeson.Types.ToJSON.ToJSON Fqn.ImportedThirdPartyContent
+ Fqn: instance Data.Aeson.Types.ToJSON.ToJSON Fqn.InstanceAttribute
+ Fqn: instance Data.Aeson.Types.ToJSON.ToJSON Fqn.InstanceName
+ Fqn: instance GHC.Classes.Eq Fqn.ClassInstanceContent
+ Fqn: instance GHC.Classes.Eq Fqn.ClassNameContent
+ Fqn: instance GHC.Classes.Eq Fqn.ImportedContent
+ Fqn: instance GHC.Classes.Eq Fqn.ImportedLocalContent
+ Fqn: instance GHC.Classes.Eq Fqn.ImportedThirdPartyContent
+ Fqn: instance GHC.Classes.Eq Fqn.InstanceAttribute
+ Fqn: instance GHC.Classes.Eq Fqn.InstanceName
+ Fqn: instance GHC.Classes.Ord Fqn.ClassInstanceContent
+ Fqn: instance GHC.Classes.Ord Fqn.ClassNameContent
+ Fqn: instance GHC.Classes.Ord Fqn.ImportedContent
+ Fqn: instance GHC.Classes.Ord Fqn.ImportedLocalContent
+ Fqn: instance GHC.Classes.Ord Fqn.ImportedThirdPartyContent
+ Fqn: instance GHC.Classes.Ord Fqn.InstanceAttribute
+ Fqn: instance GHC.Classes.Ord Fqn.InstanceName
+ Fqn: instance GHC.Generics.Generic Fqn.ClassInstanceContent
+ Fqn: instance GHC.Generics.Generic Fqn.ClassNameContent
+ Fqn: instance GHC.Generics.Generic Fqn.ImportedContent
+ Fqn: instance GHC.Generics.Generic Fqn.ImportedLocalContent
+ Fqn: instance GHC.Generics.Generic Fqn.ImportedThirdPartyContent
+ Fqn: instance GHC.Generics.Generic Fqn.InstanceAttribute
+ Fqn: instance GHC.Generics.Generic Fqn.InstanceName
+ Fqn: instance GHC.Show.Show Fqn.ClassInstanceContent
+ Fqn: instance GHC.Show.Show Fqn.ClassNameContent
+ Fqn: instance GHC.Show.Show Fqn.ImportedContent
+ Fqn: instance GHC.Show.Show Fqn.ImportedLocalContent
+ Fqn: instance GHC.Show.Show Fqn.ImportedThirdPartyContent
+ Fqn: instance GHC.Show.Show Fqn.InstanceAttribute
+ Fqn: instance GHC.Show.Show Fqn.InstanceName

Files

dhscanner-bitcode.cabal view
@@ -20,7 +20,7 @@     in mind. The commands resemble an abstract RISC-style assembley, motivated by keeping
     later-phases analyses as simple as possible.
 
-version:            1.0.10
+version:            1.0.11
 license:            GPL-3.0-only
 license-file:       LICENSE
 author:             OrenGitHub
src/Fqn.hs view
@@ -6,24 +6,78 @@ 
 where
 
+-- project imports
+import qualified Token
+
 -- general imports
 import Data.Aeson
 import GHC.Generics
 
--- | Fully qualified name
-data Fqn = Fqn { content :: String } deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+-- |
+--
+-- * Fully qualified name
+-- * Resolution at the /file/ level
+-- * Unidirectional resolution only ( one pass )
+--
+data Fqn
+   = Imported ImportedContent
+   | ClassInstance ClassInstanceContent
+   | ClassName ClassNameContent
+   | FieldedAccess Fqn Token.FieldName
+   | NativeTypeInt
+   | NativeTypeString
+   | NativeTypeBool
+   | NativeTypeConstInt Int
+   | NativeTypeConstStr String
+   | NativeTypeConstBool Bool
+   | NativeTypeNull
+   | Unknwon
+   deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
-any :: Fqn
-any = Fqn { content = "any" }
+data ImportedContent
+   = ImportedLocal ImportedLocalContent
+   | ImportedThirdParty ImportedThirdPartyContent
+   deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
-nativeInt :: Fqn
-nativeInt = Fqn { content = "int" }
+data ImportedLocalContent
+   = ImportedLocalContent
+     {
+         importedLocalLocation :: FilePath,
+         importedLocalRest :: [ String ]
+     }
+     deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
-nativeStr :: Fqn
-nativeStr = Fqn { content = "str" }
+data ImportedThirdPartyContent
+   = ImportedThirdPartyContent
+     {
+         importedThirdPartyName :: String,
+         importedThirdPartyRest :: [ String ]
+     }
+     deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
-nativeBool :: Fqn
-nativeBool = Fqn { content = "bool" }
+data ClassInstanceContent
+   = ClassInstanceContent
+     {
+         instanceName :: InstanceName,
+         instanceAttribute :: InstanceAttribute
+     }
+     deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
 
-nativeNull :: Fqn
-nativeNull = Fqn { content = "null" }
+data InstanceName
+   = Self -- ^ Python, Ruby
+   | This -- ^ Java, Php, Javascript, Typescript
+   deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+
+data InstanceAttribute
+   = InstanceAttribute
+     {
+         attributeName :: Token.FieldName
+     }
+     deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )
+
+data ClassNameContent
+   = ClassNameContent
+     {
+         classNameContent :: Token.ClassName
+     }
+     deriving ( Show, Eq, Ord, Generic, ToJSON, FromJSON )