Paste: value semantics test
        
	
	
	
		| Author: | kssreeram | 
|---|
		| Mode: | text | 
|---|
		| Date: | Thu, 30 Sep 2010 10:25:15 | 
|---|
	
	Plain Text |
	
	
var _nextId = 0;
nextId() {
    var id = _nextId;
    _nextId += 1;
    return id;
}
record Test (
    id : Int
);
overload RegularRecord?(static Test) = false;
overload Test(id:Int) returned:Test {
    println("construct Test(id) ", id);
    returned.id = id;
}
overload Test() returned:Test {
    var id = nextId();
    println("construct Test ", id);
    returned.id = id;
}
overload Test(src:Test) returned:Test {
    println("copy Test ", src.id);
    returned.id = src.id;
}
overload moveUnsafe(src:Test) returned:Test {
    println("move Test ", src.id);
    returned.id = src.id;
}
overload resetUnsafe(x:Test) {
    var id = nextId();
    println("reset Test ", id);
    x.id = id;
}
overload destroy(x:Test) {
    println("destroy Test ", x.id);
}
overload assign(dest:Test, src:Test) {
    dest.id = src.id;
}
main() {
    var a = Vector(map(Test, range(3)));
}
	
	
		New Annotation