]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/scl/SCL/ModuleRepository.scl
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.scl.compiler / scl / SCL / ModuleRepository.scl
1 module {
2     export = [possibleUnsafeSclValueByName, unsafeSclValueByName, sclModuleNames, moduleByName,
3               documentationOfSCLValue, sclValueRef, possibleModuleSourceText, flushModuleRepository, 
4               flushDefaultModuleRepository]
5 }
6
7 include "./CurrentModuleRepository"
8 include "./Module"
9
10 importJava "org.simantics.scl.compiler.elaboration.modules.SCLValue" where
11     data SCLValue
12     
13     @JavaName getDocumentation
14     documentationOfSCLValue_ :: SCLValue -> <Proc> Maybe String
15
16 documentationOfSCLValue value = fromMaybe "" (documentationOfSCLValue_ value)
17
18 importJava "org.simantics.scl.compiler.module.repository.ModuleRepository" where
19     // data ModuleRepository
20     // defined in CurrentModuleRepository
21
22     @JavaName getValue
23     unsafeSclValueByName_ :: ModuleRepository -> String -> <Proc> a
24     
25     @JavaName getValueRef
26     sclValueRef_ :: ModuleRepository -> String -> <Proc> Maybe SCLValue
27     
28     @JavaName getSourceRepository
29     moduleSourceRepositoryOf :: ModuleRepository -> ModuleSourceRepository
30     
31     @JavaName getModule
32     moduleByName_ :: ModuleRepository -> String -> <Proc> Failable Module 
33     
34     @JavaName flush
35     flushModuleRepository :: ModuleRepository -> <Proc> ()
36     
37 importJava "org.simantics.scl.compiler.source.repository.ModuleSourceRepository" where
38     data ModuleSourceRepository
39     
40     @JavaName getModuleNames
41     sclModuleNames_ :: ModuleSourceRepository -> [String]
42     
43     @JavaName getPossibleSourceText
44     possibleModuleSourceText_ :: ModuleSourceRepository -> String -> <Proc> Maybe String
45
46 importJava "org.simantics.scl.compiler.errors.Failable" where
47     data Failable a
48     
49     didSucceed :: Failable a -> Boolean
50     getResult :: Failable a -> Maybe a 
51
52 unsafeSclValueByName :: String -> <Proc> a
53 unsafeSclValueByName = unsafeSclValueByName_ MODULE_REPOSITORY
54
55 sclValueRef name = sclValueRef_ MODULE_REPOSITORY name
56
57 flushDefaultModuleRepository :: <Proc> ()
58 flushDefaultModuleRepository = flushModuleRepository MODULE_REPOSITORY
59
60 possibleUnsafeSclValueByName :: String -> <Proc> Maybe a
61 possibleUnsafeSclValueByName name = Just (unsafeSclValueByName name) `catch` \(_ :: Exception) -> Nothing
62
63 sclModuleNames :: <Proc> [String]
64 sclModuleNames = sclModuleNames_ (moduleSourceRepositoryOf MODULE_REPOSITORY)
65
66 moduleByName :: String -> <Proc> Maybe Module
67 moduleByName name = getResult failable
68   where
69     failable = moduleByName_ MODULE_REPOSITORY name
70     
71 possibleModuleSourceText :: String -> <Proc> Maybe String
72 possibleModuleSourceText name = possibleModuleSourceText_ (moduleSourceRepositoryOf MODULE_REPOSITORY) name