File: 339_rebindId.sml

package info (click to toggle)
smlsharp 4.1.0-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 123,724 kB
  • sloc: ansic: 16,725; sh: 4,347; makefile: 2,191; java: 742; haskell: 493; ruby: 305; cpp: 284; pascal: 256; ml: 255; lisp: 141; asm: 97; sql: 74
file content (23 lines) | stat: -rw-r--r-- 756 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
val x = 1;
val y = x;
val x = 2;
(y,x);

(* 
2018-02-18
以下のバグを引き起こす
Bug.Bug: analyzeExp: TPEXVAR at src/compiler/compilePhases/polytyelimination/main/PolyTyElimination.sml:717
# 

この原因は,以下の組み合わせによる.
* externSetの管理をversion込で行っていないこと,
* val id = longid 宣言は,実際の外部変数を作らず,idの参照を静的に解決しているだけ.
例の場合,yは外部名 x.0 にコンパイルされ,次の x は新しx.1としてexportされる.
したがって,(x,y)に対して,
extern x.0
extern x.1
を出力する必要があるが,externSetのキーにversionがセットされていないため,
extern x.1
が出力されない.

*)