dplassgit / d2lang

D2 is a strongly-typed, statically-typed, (mostly) inferred-type compiled language.
MIT License
6 stars 1 forks source link

Dead code eliminator is eliminating proc calls with side effects #249

Closed dplassgit closed 10 months ago

dplassgit commented 1 year ago
a: proc {
  println "hi"
}
b: proc {
  x = a()
}
b()

should print "hi" but it does not because x=a() is completely eliminated because x is considered dead

dplassgit commented 1 year ago

A workaround is to just remove the assignment, e.g., a()

dplassgit commented 1 year ago

The workaround works because naked proc calls generate different code than proc calls whose return value is read.