diff options
author | Norbert Preining <norbert@preining.info> | 2024-03-26 03:03:59 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-03-26 03:03:59 +0000 |
commit | 904f56f2c26edc7eb11d5a27579bccbeca29c618 (patch) | |
tree | 8a4d6d2e163e93dd2c13a28db996b419aee856b4 /graphics/asymptote/genv.cc | |
parent | 05f8146ef2eea2cd71b9c96583c6d893e6c76af5 (diff) |
CTAN sync 202403260303
Diffstat (limited to 'graphics/asymptote/genv.cc')
-rw-r--r-- | graphics/asymptote/genv.cc | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/graphics/asymptote/genv.cc b/graphics/asymptote/genv.cc index 8471e3b620..fe8e1b5cab 100644 --- a/graphics/asymptote/genv.cc +++ b/graphics/asymptote/genv.cc @@ -89,9 +89,12 @@ record *genv::loadModule(symbol id, string filename) { return r; } -record *genv::loadTemplatedModule(symbol id, string filename, - mem::vector<absyntax::namedTyEntry*> *args) -{ +record *genv::loadTemplatedModule( + symbol id, + string filename, + mem::vector<absyntax::namedTyEntry*> *args, + trans::frame *parent +) { // Hackish way to load an external library. #if 0 if (endswith(".so", filename)) { @@ -106,7 +109,7 @@ record *genv::loadTemplatedModule(symbol id, string filename, em.sync(); - record *r=ast->transAsTemplatedFile(*this, id, args); + record *r=ast->transAsTemplatedFile(*this, id, args, parent); inTranslation.remove(filename); @@ -140,24 +143,31 @@ record *genv::getModule(symbol id, string filename) { return r; } - } -record *genv::getTemplatedModule(symbol id, string filename, string sigHandle, - mem::vector<absyntax::namedTyEntry*>* args) -{ +record *genv::getTemplatedModule( + symbol id, + string filename, + string sigHandle, + mem::vector<absyntax::namedTyEntry*>* args, + frame *parent +) { checkRecursion(filename); - importIndex_t Index(filename,sigHandle); - record *r=loadTemplatedModule(id, filename, args); - // Don't add an erroneous module to the dictionary in interactive mode, as - // the user may try to load it again. - if (!interact::interactive || !em.errors()) { - imap[Index]=r; - } + importIndex_t Index(filename,sigHandle); - return r; + record *r=imap[Index]; + if (r) + return r; + else { + record *r=loadTemplatedModule(id, filename, args, parent); + // Don't add an erroneous module to the dictionary in interactive mode, as + // the user may try to load it again. + if (!interact::interactive || !em.errors()) + imap[Index]=r; + return r; + } } |