@@ -4974,6 +4974,34 @@ def test_jslib_has_library(self):
4974
4974
''')
4975
4975
self.do_runf(test_file('hello_world.c'), emcc_args=['-L', '-lfoo.js'])
4976
4976
4977
+ def test_jslib_new_objects_basic(self):
4978
+ create_file('lib.js', '''
4979
+ addToLibrary({
4980
+ $obj: {
4981
+ a: new Map(),
4982
+ b: new Set(),
4983
+ c: new WeakMap(),
4984
+ d: new WeakSet()
4985
+ }
4986
+ });
4987
+ ''')
4988
+ self.run_process([EMCC, test_file('hello_world.c'), '--js-library=lib.js', '-sEXPORTED_FUNCTIONS=obj,_main'])
4989
+ self.assertContained("a:new Map,", read_file('a.out.js'))
4990
+ self.assertContained("b:new Set,", read_file('a.out.js'))
4991
+ self.assertContained("c:new WeakMap,", read_file('a.out.js'))
4992
+ self.assertContained("d:new WeakSet,", read_file('a.out.js'))
4993
+
4994
+ def test_jslib_new_objects_non_empty(self):
4995
+ create_file('lib.js', '''
4996
+ addToLibrary({
4997
+ $obj: {
4998
+ bad: new Map([[1,2],[3,4]])
4999
+ }
5000
+ });
5001
+ ''')
5002
+ err = self.expect_fail([EMCC, test_file('hello_world.c'), '--js-library=lib.js', '-sEXPORTED_FUNCTIONS=obj,_main'])
5003
+ self.assertContained('cannot stringify Map with data', err)
5004
+
4977
5005
def test_EMCC_BUILD_DIR(self):
4978
5006
# EMCC_BUILD_DIR was necessary in the past since we used to force the cwd to be src/ for
4979
5007
# technical reasons.
0 commit comments