Closed scolsen closed 2 years ago
blocks #1412
the issue lies in concretize. it currently overwrites the lookup mode of symbols to "AFunction" when resolving interfaces -- however, for registered externals with overrides, the override text eventually used by Emit.hs is contained in the symbols lookup mode, so we need to preserve this!
minimal rerpoducible example:
FOO
will be resolved to the C nameFoo_FOO
(the carp symbol as C) instead of the correctINT_MAX
.I think this is because the current interface code "fakes" qualification on implementation paths instead of properly qualifying their symbols (override replacement occurs in qualification, on a related note, this should probably happen in emit not in qualification).