The following code runs fine. There is a whole bunch of types imported, so whittling it down to the problem is not too easy.

import plus.models.assumption;
import pprint.pp;
import std.stdio;
import std.datetime;

void main() {
  immutable am = AssumptionModel();
  writeln(pp(am));
}

That code writes a formatted view of the assumption model. One small code change:

    writeln(pp(am)); => writeln(pp(&am));

Does not cause a compile error, but rather a link error (using rdmd even with --force):

How is this possible?

Link Error:

      --- errorlevel 1
      | Undefined symbols for architecture x86_64:
| "_D44TypeInfo_HAyayS4plus6models6common9RateCurve6__initZ", referenced from: | _D6object58__T16AssociativeArrayTAyaTyS4plus6models6common9RateCurveZ16AssociativeArray6rehashMFNdZHAyayS4plus6models6common9RateCurve in linkerror.o | "_D56TypeInfo_HAyayS4plus6models10assumption15DateAssumptions6__initZ", referenced from: | _D6object70__T16AssociativeArrayTAyaTyS4plus6models10assumption15DateAssumptionsZ16AssociativeArray6rehashMFNdZHAyayS4plus6models10assumption15DateAssumptions in linkerror.o | "_D57TypeInfo_HAyayS4plus6models10assumption16AssetAssumptions6__initZ", referenced from: | _D6object71__T16AssociativeArrayTAyaTyS4plus6models10assumption16AssetAssumptionsZ16AssociativeArray6rehashMFNdZHAyayS4plus6models10assumption16AssetAssumptions in linkerror.o | "_D61TypeInfo_HAyayS4plus6models10assumption20LiabilityAssumptions6__initZ", referenced from: | _D6object75__T16AssociativeArrayTAyaTyS4plus6models10assumption20LiabilityAssumptionsZ16AssociativeArray6rehashMFNdZHAyayS4plus6models10assumption20LiabilityAssumptions in linkerror.o
      | ld: symbol(s) not found for architecture x86_64
      | collect2: ld returned 1 exit status


----------------------------------

Original successful output:
{
 (AssumptionModel).inflation = {
  (RateCurve).curveData = [

  ]
 }
 (AssumptionModel).assetAssumptions = {
 }
 (AssumptionModel).liabilityAssumptions = {
 }
 (AssumptionModel).accountGrowthMap = {
 }
 (AssumptionModel).incomeModelOverrides = {
 }
 (AssumptionModel).expenseModelOverrides = {
 }
 (AssumptionModel).dateAssumptions = {
 }
}

Reply via email to