mirror of
https://github.com/github/semantic.git
synced 2025-01-04 13:34:31 +03:00
Replace Maybe Kind with an Unknown case in Kind
This commit is contained in:
parent
85b6e1e9f6
commit
72a8382104
@ -55,7 +55,7 @@ import qualified Data.Abstract.Heap as Heap
|
|||||||
import Data.Abstract.Live
|
import Data.Abstract.Live
|
||||||
import Data.Abstract.Module (ModuleInfo)
|
import Data.Abstract.Module (ModuleInfo)
|
||||||
import Data.Abstract.Name
|
import Data.Abstract.Name
|
||||||
import Data.Abstract.ScopeGraph (Path (..), Relation(..), putDeclarationScopeAtPosition)
|
import Data.Abstract.ScopeGraph (Kind(..), Path (..), Relation(..), putDeclarationScopeAtPosition)
|
||||||
import qualified Data.Map.Strict as Map
|
import qualified Data.Map.Strict as Map
|
||||||
import Data.Span (Span, emptySpan)
|
import Data.Span (Span, emptySpan)
|
||||||
import Prologue
|
import Prologue
|
||||||
@ -179,7 +179,7 @@ define :: ( HasCallStack
|
|||||||
-> Evaluator term address value m ()
|
-> Evaluator term address value m ()
|
||||||
define declaration rel def = withCurrentCallStack callStack $ do
|
define declaration rel def = withCurrentCallStack callStack $ do
|
||||||
-- TODO: This span is still wrong.
|
-- TODO: This span is still wrong.
|
||||||
declare declaration rel emptySpan Nothing Nothing
|
declare declaration rel emptySpan Unknown Nothing
|
||||||
slot <- lookupDeclaration declaration
|
slot <- lookupDeclaration declaration
|
||||||
value <- def
|
value <- def
|
||||||
assign slot value
|
assign slot value
|
||||||
|
@ -11,6 +11,7 @@ import Control.Abstract.Heap
|
|||||||
import Control.Abstract.ScopeGraph
|
import Control.Abstract.ScopeGraph
|
||||||
import Control.Abstract.Value
|
import Control.Abstract.Value
|
||||||
import Data.Abstract.BaseError
|
import Data.Abstract.BaseError
|
||||||
|
import qualified Data.Abstract.ScopeGraph as ScopeGraph
|
||||||
import Data.Abstract.Name
|
import Data.Abstract.Name
|
||||||
import Data.Map.Strict as Map
|
import Data.Map.Strict as Map
|
||||||
import Data.Span
|
import Data.Span
|
||||||
@ -41,11 +42,11 @@ defineBuiltIn declaration rel value = withCurrentCallStack callStack $ do
|
|||||||
let lexicalEdges = Map.singleton Lexical [ currentScope' ]
|
let lexicalEdges = Map.singleton Lexical [ currentScope' ]
|
||||||
associatedScope <- newPreludeScope lexicalEdges
|
associatedScope <- newPreludeScope lexicalEdges
|
||||||
-- TODO: This span is still wrong.
|
-- TODO: This span is still wrong.
|
||||||
declare declaration rel emptySpan Nothing (Just associatedScope)
|
declare declaration rel emptySpan ScopeGraph.Unknown (Just associatedScope)
|
||||||
|
|
||||||
param <- gensym
|
param <- gensym
|
||||||
withScope associatedScope $ do
|
withScope associatedScope $ do
|
||||||
declare (Declaration param) rel emptySpan Nothing Nothing
|
declare (Declaration param) rel emptySpan ScopeGraph.Unknown Nothing
|
||||||
|
|
||||||
slot <- lookupDeclaration declaration
|
slot <- lookupDeclaration declaration
|
||||||
value <- builtIn associatedScope value
|
value <- builtIn associatedScope value
|
||||||
|
@ -62,7 +62,7 @@ declare :: ( Carrier sig m
|
|||||||
=> Declaration
|
=> Declaration
|
||||||
-> Relation
|
-> Relation
|
||||||
-> Span
|
-> Span
|
||||||
-> Maybe Kind
|
-> Kind
|
||||||
-> Maybe address
|
-> Maybe address
|
||||||
-> Evaluator term address value m ()
|
-> Evaluator term address value m ()
|
||||||
declare decl rel span kind scope = do
|
declare decl rel span kind scope = do
|
||||||
|
@ -27,7 +27,7 @@ import Data.Abstract.Declarations as X
|
|||||||
import Data.Abstract.FreeVariables as X
|
import Data.Abstract.FreeVariables as X
|
||||||
import Data.Abstract.Module
|
import Data.Abstract.Module
|
||||||
import Data.Abstract.Name as X
|
import Data.Abstract.Name as X
|
||||||
import Data.Abstract.ScopeGraph (Relation(..))
|
import qualified Data.Abstract.ScopeGraph as ScopeGraph
|
||||||
import Data.Language
|
import Data.Language
|
||||||
import Data.Scientific (Scientific)
|
import Data.Scientific (Scientific)
|
||||||
import Data.Semigroup.App
|
import Data.Semigroup.App
|
||||||
@ -174,7 +174,7 @@ defineSelf :: ( AbstractValue term address value m
|
|||||||
=> Evaluator term address value m ()
|
=> Evaluator term address value m ()
|
||||||
defineSelf = do
|
defineSelf = do
|
||||||
let self = Declaration X.__self
|
let self = Declaration X.__self
|
||||||
declare self Prelude emptySpan Nothing Nothing
|
declare self Prelude emptySpan ScopeGraph.Unknown Nothing
|
||||||
slot <- lookupDeclaration self
|
slot <- lookupDeclaration self
|
||||||
assign slot =<< object =<< currentFrame
|
assign slot =<< object =<< currentFrame
|
||||||
|
|
||||||
|
@ -54,11 +54,11 @@ data Info scopeAddress = Info
|
|||||||
{ infoDeclaration :: Declaration
|
{ infoDeclaration :: Declaration
|
||||||
, infoRelation :: Relation
|
, infoRelation :: Relation
|
||||||
, infoSpan :: Span
|
, infoSpan :: Span
|
||||||
, infoKind :: Maybe Kind
|
, infoKind :: Kind
|
||||||
, infoAssociatedScope :: Maybe scopeAddress
|
, infoAssociatedScope :: Maybe scopeAddress
|
||||||
} deriving (Eq, Show, Ord, Generic, NFData)
|
} deriving (Eq, Show, Ord, Generic, NFData)
|
||||||
|
|
||||||
data Kind = TypeAlias | Class | Method | QualifiedAliasedImport | DefaultExport | Module | AbstractClass | Let | QualifiedImport | UnqualifiedImport | Assignment | RequiredParameter | PublicField | VariableDeclaration | Function | Parameter
|
data Kind = TypeAlias | Class | Method | QualifiedAliasedImport | DefaultExport | Module | AbstractClass | Let | QualifiedImport | UnqualifiedImport | Assignment | RequiredParameter | PublicField | VariableDeclaration | Function | Parameter | Unknown
|
||||||
deriving (Eq, Show, Ord, Generic, NFData)
|
deriving (Eq, Show, Ord, Generic, NFData)
|
||||||
|
|
||||||
-- Offsets and frame addresses in the heap should be addresses?
|
-- Offsets and frame addresses in the heap should be addresses?
|
||||||
@ -146,7 +146,7 @@ lookupScope scope = Map.lookup scope . unScopeGraph
|
|||||||
|
|
||||||
-- Declare a declaration with a span and an associated scope in the scope graph.
|
-- Declare a declaration with a span and an associated scope in the scope graph.
|
||||||
-- TODO: Return the whole value in Maybe or Either.
|
-- TODO: Return the whole value in Maybe or Either.
|
||||||
declare :: Ord scope => Declaration -> Relation -> Span -> Maybe Kind -> Maybe scope -> scope -> ScopeGraph scope -> (ScopeGraph scope, Maybe Position)
|
declare :: Ord scope => Declaration -> Relation -> Span -> Kind -> Maybe scope -> scope -> ScopeGraph scope -> (ScopeGraph scope, Maybe Position)
|
||||||
declare decl rel declSpan kind assocScope currentScope g = fromMaybe (g, Nothing) $ do
|
declare decl rel declSpan kind assocScope currentScope g = fromMaybe (g, Nothing) $ do
|
||||||
scope <- lookupScope currentScope g
|
scope <- lookupScope currentScope g
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ instance Evaluatable Function where
|
|||||||
param <- maybeM (throwNoNameError paramNode) (declaredName paramNode)
|
param <- maybeM (throwNoNameError paramNode) (declaredName paramNode)
|
||||||
-- TODO: This might be a motivation for a typeclass for `declarationKind` since we
|
-- TODO: This might be a motivation for a typeclass for `declarationKind` since we
|
||||||
-- sometimes create declarations for our children.
|
-- sometimes create declarations for our children.
|
||||||
param <$ declare (Declaration param) Default span (Just ScopeGraph.Parameter) Nothing
|
param <$ declare (Declaration param) Default span ScopeGraph.Parameter Nothing
|
||||||
|
|
||||||
addr <- lookupDeclaration (Declaration name)
|
addr <- lookupDeclaration (Declaration name)
|
||||||
v <- function name params functionBody associatedScope
|
v <- function name params functionBody associatedScope
|
||||||
@ -60,7 +60,7 @@ declareFunction name span kind = do
|
|||||||
currentScope' <- currentScope
|
currentScope' <- currentScope
|
||||||
let lexicalEdges = Map.singleton Lexical [ currentScope' ]
|
let lexicalEdges = Map.singleton Lexical [ currentScope' ]
|
||||||
associatedScope <- newScope lexicalEdges
|
associatedScope <- newScope lexicalEdges
|
||||||
declare (Declaration name) Default span (Just kind) (Just associatedScope)
|
declare (Declaration name) Default span kind (Just associatedScope)
|
||||||
pure associatedScope
|
pure associatedScope
|
||||||
|
|
||||||
instance Tokenize Function where
|
instance Tokenize Function where
|
||||||
@ -96,10 +96,10 @@ instance Evaluatable Method where
|
|||||||
|
|
||||||
params <- withScope associatedScope $ do
|
params <- withScope associatedScope $ do
|
||||||
-- TODO: Should we give `self` a special Relation?
|
-- TODO: Should we give `self` a special Relation?
|
||||||
declare (Declaration __self) Prelude emptySpan Nothing Nothing
|
declare (Declaration __self) Prelude emptySpan ScopeGraph.Unknown Nothing
|
||||||
for methodParameters $ \paramNode -> do
|
for methodParameters $ \paramNode -> do
|
||||||
param <- maybeM (throwNoNameError paramNode) (declaredName paramNode)
|
param <- maybeM (throwNoNameError paramNode) (declaredName paramNode)
|
||||||
param <$ declare (Declaration param) Default span (Just ScopeGraph.Parameter) Nothing
|
param <$ declare (Declaration param) Default span ScopeGraph.Parameter Nothing
|
||||||
|
|
||||||
addr <- lookupDeclaration (Declaration name)
|
addr <- lookupDeclaration (Declaration name)
|
||||||
v <- function name params methodBody associatedScope
|
v <- function name params methodBody associatedScope
|
||||||
@ -168,7 +168,7 @@ instance Evaluatable VariableDeclaration where
|
|||||||
eval eval _ (VariableDeclaration decs) = do
|
eval eval _ (VariableDeclaration decs) = do
|
||||||
for_ decs $ \declaration -> do
|
for_ decs $ \declaration -> do
|
||||||
name <- maybeM (throwNoNameError declaration) (declaredName declaration)
|
name <- maybeM (throwNoNameError declaration) (declaredName declaration)
|
||||||
declare (Declaration name) Default emptySpan (Just ScopeGraph.VariableDeclaration) Nothing
|
declare (Declaration name) Default emptySpan ScopeGraph.VariableDeclaration Nothing
|
||||||
(span, _) <- do
|
(span, _) <- do
|
||||||
ref <- eval declaration
|
ref <- eval declaration
|
||||||
subtermSpan <- get @Span
|
subtermSpan <- get @Span
|
||||||
@ -213,7 +213,7 @@ instance Evaluatable PublicFieldDefinition where
|
|||||||
span <- ask @Span
|
span <- ask @Span
|
||||||
propertyName <- maybeM (throwNoNameError publicFieldPropertyName) (declaredName publicFieldPropertyName)
|
propertyName <- maybeM (throwNoNameError publicFieldPropertyName) (declaredName publicFieldPropertyName)
|
||||||
|
|
||||||
declare (Declaration propertyName) Instance span (Just ScopeGraph.PublicField) Nothing
|
declare (Declaration propertyName) Instance span ScopeGraph.PublicField Nothing
|
||||||
slot <- lookupDeclaration (Declaration propertyName)
|
slot <- lookupDeclaration (Declaration propertyName)
|
||||||
value <- eval publicFieldValue
|
value <- eval publicFieldValue
|
||||||
assign slot value
|
assign slot value
|
||||||
@ -261,7 +261,7 @@ instance Evaluatable Class where
|
|||||||
current = (Lexical, ) <$> pure (pure currentScope')
|
current = (Lexical, ) <$> pure (pure currentScope')
|
||||||
edges = Map.fromList (superclassEdges <> current)
|
edges = Map.fromList (superclassEdges <> current)
|
||||||
classScope <- newScope edges
|
classScope <- newScope edges
|
||||||
declare (Declaration name) Default span (Just ScopeGraph.Class) (Just classScope)
|
declare (Declaration name) Default span ScopeGraph.Class (Just classScope)
|
||||||
|
|
||||||
let frameEdges = Map.singleton Superclass (Map.fromList (catMaybes superScopes))
|
let frameEdges = Map.singleton Superclass (Map.fromList (catMaybes superScopes))
|
||||||
classFrame <- newFrame classScope frameEdges
|
classFrame <- newFrame classScope frameEdges
|
||||||
@ -355,7 +355,7 @@ instance Evaluatable TypeAlias where
|
|||||||
span <- ask @Span
|
span <- ask @Span
|
||||||
assocScope <- associatedScope (Declaration kindName)
|
assocScope <- associatedScope (Declaration kindName)
|
||||||
-- TODO: Should we consider a special Relation for `TypeAlias`?
|
-- TODO: Should we consider a special Relation for `TypeAlias`?
|
||||||
declare (Declaration name) Default span (Just ScopeGraph.TypeAlias) assocScope
|
declare (Declaration name) Default span ScopeGraph.TypeAlias assocScope
|
||||||
|
|
||||||
slot <- lookupDeclaration (Declaration name)
|
slot <- lookupDeclaration (Declaration name)
|
||||||
kindSlot <- lookupDeclaration (Declaration kindName)
|
kindSlot <- lookupDeclaration (Declaration kindName)
|
||||||
|
@ -152,7 +152,7 @@ instance Evaluatable Let where
|
|||||||
assocScope <- associatedScope (Declaration valueName)
|
assocScope <- associatedScope (Declaration valueName)
|
||||||
|
|
||||||
_ <- withLexicalScopeAndFrame $ do
|
_ <- withLexicalScopeAndFrame $ do
|
||||||
declare (Declaration name) Default letSpan (Just ScopeGraph.Let) assocScope
|
declare (Declaration name) Default letSpan ScopeGraph.Let assocScope
|
||||||
letVal <- eval letValue
|
letVal <- eval letValue
|
||||||
slot <- lookupDeclaration (Declaration name)
|
slot <- lookupDeclaration (Declaration name)
|
||||||
assign slot letVal
|
assign slot letVal
|
||||||
|
@ -85,7 +85,7 @@ instance Evaluatable QualifiedImport where
|
|||||||
alias <- maybeM (throwNoNameError aliasTerm) (declaredName aliasTerm)
|
alias <- maybeM (throwNoNameError aliasTerm) (declaredName aliasTerm)
|
||||||
span <- ask @Span
|
span <- ask @Span
|
||||||
scopeAddress <- newScope mempty
|
scopeAddress <- newScope mempty
|
||||||
declare (Declaration alias) Default span (Just ScopeGraph.QualifiedImport) (Just scopeAddress)
|
declare (Declaration alias) Default span ScopeGraph.QualifiedImport (Just scopeAddress)
|
||||||
aliasSlot <- lookupDeclaration (Declaration alias)
|
aliasSlot <- lookupDeclaration (Declaration alias)
|
||||||
|
|
||||||
withScope scopeAddress $ do
|
withScope scopeAddress $ do
|
||||||
|
@ -159,7 +159,7 @@ instance Evaluatable Import where
|
|||||||
aliasFrame <- newFrame importScope (Map.singleton ScopeGraph.Import scopeMap)
|
aliasFrame <- newFrame importScope (Map.singleton ScopeGraph.Import scopeMap)
|
||||||
|
|
||||||
-- Add declaration of the alias name to the current scope (within our current module).
|
-- Add declaration of the alias name to the current scope (within our current module).
|
||||||
declare (Declaration aliasName) Default span (Just ScopeGraph.UnqualifiedImport) (Just importScope)
|
declare (Declaration aliasName) Default span ScopeGraph.UnqualifiedImport (Just importScope)
|
||||||
-- Retrieve the frame slot for the new declaration.
|
-- Retrieve the frame slot for the new declaration.
|
||||||
aliasSlot <- lookupDeclaration (Declaration aliasName)
|
aliasSlot <- lookupDeclaration (Declaration aliasName)
|
||||||
assign aliasSlot =<< object aliasFrame
|
assign aliasSlot =<< object aliasFrame
|
||||||
@ -230,7 +230,7 @@ instance Evaluatable QualifiedImport where
|
|||||||
go ((name, modulePath) : namesAndPaths) = do
|
go ((name, modulePath) : namesAndPaths) = do
|
||||||
span <- ask @Span
|
span <- ask @Span
|
||||||
scopeAddress <- newScope mempty
|
scopeAddress <- newScope mempty
|
||||||
declare (Declaration name) Default span (Just ScopeGraph.QualifiedImport) (Just scopeAddress)
|
declare (Declaration name) Default span ScopeGraph.QualifiedImport (Just scopeAddress)
|
||||||
aliasSlot <- lookupDeclaration (Declaration name)
|
aliasSlot <- lookupDeclaration (Declaration name)
|
||||||
-- a.b.c
|
-- a.b.c
|
||||||
withScope scopeAddress $
|
withScope scopeAddress $
|
||||||
@ -266,7 +266,7 @@ instance Evaluatable QualifiedAliasedImport where
|
|||||||
span <- ask @Span
|
span <- ask @Span
|
||||||
scopeAddress <- newScope mempty
|
scopeAddress <- newScope mempty
|
||||||
alias <- maybeM (throwNoNameError aliasTerm) (declaredName aliasTerm)
|
alias <- maybeM (throwNoNameError aliasTerm) (declaredName aliasTerm)
|
||||||
declare (Declaration alias) Default span (Just ScopeGraph.QualifiedAliasedImport) (Just scopeAddress)
|
declare (Declaration alias) Default span ScopeGraph.QualifiedAliasedImport (Just scopeAddress)
|
||||||
objFrame <- newFrame scopeAddress mempty
|
objFrame <- newFrame scopeAddress mempty
|
||||||
val <- object objFrame
|
val <- object objFrame
|
||||||
aliasSlot <- lookupDeclaration (Declaration alias)
|
aliasSlot <- lookupDeclaration (Declaration alias)
|
||||||
|
@ -222,7 +222,7 @@ instance Evaluatable Class where
|
|||||||
current = (Lexical, ) <$> pure (pure currentScope')
|
current = (Lexical, ) <$> pure (pure currentScope')
|
||||||
edges = Map.fromList (superclassEdges <> current)
|
edges = Map.fromList (superclassEdges <> current)
|
||||||
classScope <- newScope edges
|
classScope <- newScope edges
|
||||||
declare (Declaration name) Default span (Just ScopeGraph.Class) (Just classScope)
|
declare (Declaration name) Default span ScopeGraph.Class (Just classScope)
|
||||||
|
|
||||||
let frameEdges = Map.singleton Superclass (Map.fromList (catMaybes superScopes))
|
let frameEdges = Map.singleton Superclass (Map.fromList (catMaybes superScopes))
|
||||||
childFrame <- newFrame classScope frameEdges
|
childFrame <- newFrame classScope frameEdges
|
||||||
@ -275,7 +275,7 @@ instance Evaluatable Module where
|
|||||||
Nothing -> do
|
Nothing -> do
|
||||||
let edges = Map.singleton Lexical [ currentScope' ]
|
let edges = Map.singleton Lexical [ currentScope' ]
|
||||||
classScope <- newScope edges
|
classScope <- newScope edges
|
||||||
declare (Declaration name) Default span (Just ScopeGraph.Module) (Just classScope)
|
declare (Declaration name) Default span ScopeGraph.Module (Just classScope)
|
||||||
|
|
||||||
currentFrame' <- currentFrame
|
currentFrame' <- currentFrame
|
||||||
let frameEdges = Map.singleton Lexical (Map.singleton currentScope' currentFrame')
|
let frameEdges = Map.singleton Lexical (Map.singleton currentScope' currentFrame')
|
||||||
@ -351,7 +351,7 @@ instance Evaluatable Assignment where
|
|||||||
lhsName <- maybeM (throwNoNameError assignmentTarget) (declaredName assignmentTarget)
|
lhsName <- maybeM (throwNoNameError assignmentTarget) (declaredName assignmentTarget)
|
||||||
maybeSlot <- maybeLookupDeclaration (Declaration lhsName)
|
maybeSlot <- maybeLookupDeclaration (Declaration lhsName)
|
||||||
assignmentSpan <- ask @Span
|
assignmentSpan <- ask @Span
|
||||||
maybe (declare (Declaration lhsName) Default assignmentSpan (Just ScopeGraph.Assignment) Nothing) (const (pure ())) maybeSlot
|
maybe (declare (Declaration lhsName) Default assignmentSpan ScopeGraph.Assignment Nothing) (const (pure ())) maybeSlot
|
||||||
|
|
||||||
lhs <- ref assignmentTarget
|
lhs <- ref assignmentTarget
|
||||||
rhs <- eval assignmentValue
|
rhs <- eval assignmentValue
|
||||||
|
@ -99,7 +99,7 @@ instance Evaluatable RequiredParameter where
|
|||||||
eval eval ref RequiredParameter{..} = do
|
eval eval ref RequiredParameter{..} = do
|
||||||
name <- maybeM (throwNoNameError requiredParameterSubject) (declaredName requiredParameterSubject)
|
name <- maybeM (throwNoNameError requiredParameterSubject) (declaredName requiredParameterSubject)
|
||||||
span <- ask @Span
|
span <- ask @Span
|
||||||
declare (Declaration name) Default span (Just ScopeGraph.RequiredParameter) Nothing
|
declare (Declaration name) Default span ScopeGraph.RequiredParameter Nothing
|
||||||
|
|
||||||
lhs <- ref requiredParameterSubject
|
lhs <- ref requiredParameterSubject
|
||||||
rhs <- eval requiredParameterValue
|
rhs <- eval requiredParameterValue
|
||||||
|
@ -31,7 +31,7 @@ instance Evaluatable JavaScriptRequire where
|
|||||||
Just alias -> do
|
Just alias -> do
|
||||||
span <- ask @Span
|
span <- ask @Span
|
||||||
importScope <- newScope (Map.singleton ScopeGraph.Import [ moduleScope ])
|
importScope <- newScope (Map.singleton ScopeGraph.Import [ moduleScope ])
|
||||||
declare (Declaration alias) Default span (Just ScopeGraph.UnqualifiedImport) (Just importScope)
|
declare (Declaration alias) Default span ScopeGraph.UnqualifiedImport (Just importScope)
|
||||||
let scopeMap = Map.singleton moduleScope moduleFrame
|
let scopeMap = Map.singleton moduleScope moduleFrame
|
||||||
aliasFrame <- newFrame importScope (Map.singleton ScopeGraph.Import scopeMap)
|
aliasFrame <- newFrame importScope (Map.singleton ScopeGraph.Import scopeMap)
|
||||||
aliasSlot <- lookupDeclaration (Declaration alias)
|
aliasSlot <- lookupDeclaration (Declaration alias)
|
||||||
|
@ -68,7 +68,7 @@ instance Evaluatable QualifiedAliasedImport where
|
|||||||
aliasFrame <- newFrame importScope (Map.singleton ScopeGraph.Import scopeMap)
|
aliasFrame <- newFrame importScope (Map.singleton ScopeGraph.Import scopeMap)
|
||||||
|
|
||||||
alias <- maybeM (throwNoNameError aliasTerm) (declaredName aliasTerm)
|
alias <- maybeM (throwNoNameError aliasTerm) (declaredName aliasTerm)
|
||||||
declare (Declaration alias) Default span (Just ScopeGraph.QualifiedAliasedImport) (Just importScope)
|
declare (Declaration alias) Default span ScopeGraph.QualifiedAliasedImport (Just importScope)
|
||||||
aliasSlot <- lookupDeclaration (Declaration alias)
|
aliasSlot <- lookupDeclaration (Declaration alias)
|
||||||
assign aliasSlot =<< object aliasFrame
|
assign aliasSlot =<< object aliasFrame
|
||||||
|
|
||||||
@ -159,7 +159,7 @@ instance Evaluatable DefaultExport where
|
|||||||
withScopeAndFrame exportFrame $ do
|
withScopeAndFrame exportFrame $ do
|
||||||
valueRef <- eval term
|
valueRef <- eval term
|
||||||
let declaration = Declaration $ Name.name "__default"
|
let declaration = Declaration $ Name.name "__default"
|
||||||
declare declaration Default exportSpan (Just ScopeGraph.DefaultExport) Nothing
|
declare declaration Default exportSpan ScopeGraph.DefaultExport Nothing
|
||||||
defaultSlot <- lookupDeclaration declaration
|
defaultSlot <- lookupDeclaration declaration
|
||||||
assign defaultSlot valueRef
|
assign defaultSlot valueRef
|
||||||
|
|
||||||
@ -598,7 +598,7 @@ declareModule eval identifier statements = do
|
|||||||
Nothing -> do
|
Nothing -> do
|
||||||
let edges = Map.singleton Lexical [ currentScope' ]
|
let edges = Map.singleton Lexical [ currentScope' ]
|
||||||
childScope <- newScope edges
|
childScope <- newScope edges
|
||||||
declare (Declaration name) Default span (Just ScopeGraph.Module) (Just childScope)
|
declare (Declaration name) Default span ScopeGraph.Module (Just childScope)
|
||||||
|
|
||||||
currentFrame' <- currentFrame
|
currentFrame' <- currentFrame
|
||||||
let frameEdges = Map.singleton Lexical (Map.singleton currentScope' currentFrame')
|
let frameEdges = Map.singleton Lexical (Map.singleton currentScope' currentFrame')
|
||||||
@ -676,7 +676,7 @@ instance Evaluatable AbstractClass where
|
|||||||
current = (Lexical, ) <$> pure (pure currentScope')
|
current = (Lexical, ) <$> pure (pure currentScope')
|
||||||
edges = Map.fromList (superclassEdges <> current)
|
edges = Map.fromList (superclassEdges <> current)
|
||||||
classScope <- newScope edges
|
classScope <- newScope edges
|
||||||
declare (Declaration name) Default span (Just ScopeGraph.AbstractClass) (Just classScope)
|
declare (Declaration name) Default span ScopeGraph.AbstractClass (Just classScope)
|
||||||
|
|
||||||
let frameEdges = Map.singleton Superclass (Map.fromList (catMaybes superScopes))
|
let frameEdges = Map.singleton Superclass (Map.fromList (catMaybes superScopes))
|
||||||
childFrame <- newFrame classScope frameEdges
|
childFrame <- newFrame classScope frameEdges
|
||||||
|
Loading…
Reference in New Issue
Block a user