digitalmars.D - AssociativeArray.opIndex
- H. S. Teoh (15/15) Mar 02 2012 In attempting to fix issue 5030, I'm finding that defining
- David Nadlinger (8/13) Mar 03 2012 These two error messages indicate that the AssociativeArray
- Daniel Murphy (6/7) Mar 03 2012 The AssociateArray stuct has semantic run on it with errors gagged. Spo...
- Alix Pexton (4/11) Mar 03 2012 I checked the language reference, __FILE__ seems to be a little under
- H. S. Teoh (8/14) Mar 03 2012 [...]
- Daniel Murphy (7/18) Mar 03 2012 (I think) because in most cases when semantic on AssocitiveArray fails, ...
- Jonathan M Davis (7/14) Mar 03 2012 There are two of them, not one. file is supposed to be a string, and lin...
- Daniel Murphy (6/21) Mar 03 2012 Yeah well, there are several levels between something being wrong and
In attempting to fix issue 5030, I'm finding that defining AssociativeArray.opIndex gives an odd error when druntime is compiled: dmd: mtype.c:4411: StructDeclaration* TypeAArray::getImpl(): Assertion `impl' failed. This error only happens when opIndex is declared like this: Value opIndex(Key key, int file=__FILE__, int line=__LINE__) It seems to be OK when declared without the extra parameters, but then if there's any error in the function body, such as a missing return value, another strange error happens: src/core/thread.d(2835): Error: undefined identifier module thread.keys Even though the error has nothing to do with thread.d at all. Apparently there are some unstated assumptions about what's in struct AssociativeArray? T -- Chance favours the prepared mind. -- Louis Pasteur
Mar 02 2012
On Saturday, 3 March 2012 at 05:42:19 UTC, H. S. Teoh wrote:dmd: mtype.c:4411: StructDeclaration* TypeAArray::getImpl(): Assertion `impl' failed. […] src/core/thread.d(2835): Error: undefined identifier module thread.keysThese two error messages indicate that the AssociativeArray template couldn't be instantiated (could be more explicit, I know, but DMD currently assumes it always works. To see what's wrong, you can explicitly instantiate it as AssociativeArray!(Key, Value), so that you'll get to see the actual error messages. David
Mar 03 2012
"H. S. Teoh" <hsteoh quickfur.ath.cx> wrote in message news:mailman.341.1330753339.24984.digitalmars-d puremagic.com...Value opIndex(Key key, int file=__FILE__, int line=__LINE__)The AssociateArray stuct has semantic run on it with errors gagged. Spot the error in the line above! If you're messing with dmd, try editing 'verror' to print error messages while gagged and it should show up.
Mar 03 2012
On 03/03/2012 11:50, Daniel Murphy wrote:"H. S. Teoh"<hsteoh quickfur.ath.cx> wrote in message news:mailman.341.1330753339.24984.digitalmars-d puremagic.com...I checked the language reference, __FILE__ seems to be a little under documented ^^ A...Value opIndex(Key key, int file=__FILE__, int line=__LINE__)The AssociateArray stuct has semantic run on it with errors gagged. Spot the error in the line above! If you're messing with dmd, try editing 'verror' to print error messages while gagged and it should show up.
Mar 03 2012
On Sat, Mar 03, 2012 at 10:50:10PM +1100, Daniel Murphy wrote:"H. S. Teoh" <hsteoh quickfur.ath.cx> wrote in message news:mailman.341.1330753339.24984.digitalmars-d puremagic.com...[...] Ah, that's why I'm getting weird error messages. Silly mistake, should be string file=__FILE__. :-) Why are errors gagged in this case tho? T -- Doubtless it is a good thing to have an open mind, but a truly open mind should be open at both ends, like the food-pipe, with the capacity for excretion as well as absorption. -- Northrop FryeValue opIndex(Key key, int file=__FILE__, int line=__LINE__)The AssociateArray stuct has semantic run on it with errors gagged. Spot the error in the line above!
Mar 03 2012
"H. S. Teoh" <hsteoh quickfur.ath.cx> wrote in message news:mailman.350.1330790511.24984.digitalmars-d puremagic.com...On Sat, Mar 03, 2012 at 10:50:10PM +1100, Daniel Murphy wrote:(I think) because in most cases when semantic on AssocitiveArray fails, it's because the user tried to create an invalid AA and error messages for it should have already been issued. Eg an AA of type void[void] wouldn't compile, but error messages from the struct in object.d would just be confusing noise."H. S. Teoh" <hsteoh quickfur.ath.cx> wrote in message news:mailman.341.1330753339.24984.digitalmars-d puremagic.com...[...] Ah, that's why I'm getting weird error messages. Silly mistake, should be string file=__FILE__. :-) Why are errors gagged in this case tho?Value opIndex(Key key, int file=__FILE__, int line=__LINE__)The AssociateArray stuct has semantic run on it with errors gagged. Spot the error in the line above!
Mar 03 2012
On Saturday, March 03, 2012 22:50:10 Daniel Murphy wrote:"H. S. Teoh" <hsteoh quickfur.ath.cx> wrote in message news:mailman.341.1330753339.24984.digitalmars-d puremagic.com...There are two of them, not one. file is supposed to be a string, and line should be a size_t - though in this particular case, using int for line probably won't result in a compilation error. It's still not correct though - especially when you end up in situations where someone actually gives an argument to line rather than letting it be the default. - Jonathan M DavisValue opIndex(Key key, int file=__FILE__, int line=__LINE__)The AssociateArray stuct has semantic run on it with errors gagged. Spot the error in the line above!
Mar 03 2012
"Jonathan M Davis" <jmdavisProg gmx.com> wrote in message news:mailman.354.1330804749.24984.digitalmars-d puremagic.com...On Saturday, March 03, 2012 22:50:10 Daniel Murphy wrote:Yeah well, there are several levels between something being wrong and something being correct. Using int instead of string is definately wrong, while using int instead of size_t is only wrong on 64bit, or 32bit when you're using really really really long files."H. S. Teoh" <hsteoh quickfur.ath.cx> wrote in message news:mailman.341.1330753339.24984.digitalmars-d puremagic.com...There are two of them, not one. file is supposed to be a string, and line should be a size_t - though in this particular case, using int for line probably won't result in a compilation error. It's still not correct though - especially when you end up in situations where someone actually gives an argument to line rather than letting it be the default. - Jonathan M DavisValue opIndex(Key key, int file=__FILE__, int line=__LINE__)The AssociateArray stuct has semantic run on it with errors gagged. Spot the error in the line above!
Mar 03 2012