       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?)
+    sources = prepend_or_merge(sources, source, source(:source), new_source, true)
     put_compiler_info({modules, structs, sources, pending_modules, pending_structs})
     :ok
   end


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

    {source_external, existing_source?} =
      case List.keyfind(sources, source, source(:source)) do
        source(external: old_external) -> {external ++ old_external, true}
        nil -> {external, false}
      end

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

        runtime_references: runtime_references,
        compile_dispatches: compile_dispatches,
        runtime_dispatches: runtime_dispatches,
        external: external ++ old_external
      )

    old_struct = Map.get(structs, module)
