Thread overview |
---|
May 21, 2008 [Issue 2120] New: scope class assignment doesn't copy the whole class content | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=2120 Summary: scope class assignment doesn't copy the whole class content Product: D Version: 1.030 Platform: PC OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla@digitalmars.com ReportedBy: davidl@126.com Not sure if following is a bug. I need the semantic of backing up a class in the stack. class Scope { int i; int j; } void func(Scope m) { scope Scope save=m; m.i=4; assert(save.i==3); } void main() { Scope t=new Scope; t.i=3; t.j=3; func(t); } -- |
May 21, 2008 [Issue 2120] scope class assignment doesn't copy the whole class content | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2120 ------- Comment #1 from shro8822@vandals.uidaho.edu 2008-05-21 11:11 ------- I don't think this isn't a bug (unless I'm missing something again). In D classes use reference semantics and I don't /think/ that adding scope to the variable declaration changes this. Adding scope to the class declaration OTOH will (I think). That said, I've never used scope so I may be off in the weeds. -- |
May 22, 2008 [Issue 2120] scope class assignment doesn't copy the whole class content | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2120 bugzilla@digitalmars.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |INVALID ------- Comment #2 from bugzilla@digitalmars.com 2008-05-22 05:11 ------- Classes are by reference, not by value. This is by design, and the behavior you are seeing is typical reference semantics. Not a bug. -- |
May 22, 2008 [Issue 2120] scope class assignment doesn't copy the whole class content | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2120 davidl@126.com changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |enhancement Status|RESOLVED |REOPENED Resolution|INVALID | ------- Comment #3 from davidl@126.com 2008-05-22 05:48 ------- I can't find any use case of this in: http://www.digitalmars.com/d/2.0/class.html maybe the spec should mention when a class type is not defined as 'scope', the instance declared with 'scope' keyword, and when a class type is defined as 'scope', the instance declared without 'scope' keyword, how the compiler will inteprete the semantic. Clearfying that following code: class Scope { } void func() { scope Scope t = new Scope(); // t is on the stack(or not) and it will be deleted(or not) when exit the func scope. And any assignment of instance of other Scope instance only means the reference assignment. } -- |
May 22, 2008 [Issue 2120] scope class spec unclear | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=2120 davidl@126.com changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|scope class assignment |scope class spec unclear |doesn't copy the whole class| |content | ------- Comment #4 from davidl@126.com 2008-05-22 05:49 ------- umm, the bug is no longer about the assignment. the bug is about the spec. -- |
Copyright © 1999-2021 by the D Language Foundation