         runtime_references: runtime_references,
         compile_dispatches: compile_dispatches,
         runtime_dispatches: runtime_dispatches,
-        external: source_external,
-        warnings: []
+        external: external ++ old_external
       )
 
     old_struct = Map.get(structs, module)

      end

    modules = prepend_or_merge(modules, module, module(:module), new_module, existing_module?)
    sources = prepend_or_merge(sources, source, source(:source), new_source, existing_source?)
    put_compiler_info({modules, structs, sources, pending_modules, pending_structs})
    :ok
  end


    {modules, structs, sources, pending_modules, pending_structs} = get_compiler_info()

    {module_sources, existing_module?} =
      case List.keyfind(modules, module, module(:module)) do
        module(sources: old_sources) -> {[source | List.delete(old_sources, source)], true}
