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 +1/−1
- src/Fqn.hs +66/−12
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 )