Log of the #nice channel on irc.freenode.net

Using timezone: Central European Time
<arjanb>maybe does the manual need some explaination about autoboxing00:20
<bonniot>i think it should be in a wiki page00:21
it's not fundamental, but an implementation aspect
<arjanb>right but it's a common beginners mistake00:22
<bonniot>is it?00:34
what is that mistake exactly?00:35
ok, i read the forum post00:38
<arjanb>i have a patch to disallow the combination of pre\postconditions and short method body01:23
<bonniot>in the parser?
<arjanb>yes01:24
<bonniot>wouldn't a parse error be confusing if people try to do that?01:25
<arjanb>i don't think so01:26
<bonniot>i'm not sure about this issue01:31
sure,
void foo(A a) requires 1 != 0 = null;
is confusing, but isn't it mostly bad formatting?
void foo(A a)
requires 1 != 0
= null;
is more readable01:32
<arjanb>this looks ugly to me
<bonniot>void foo(A a)
requires 1 != 0
= null;
i'm not sure that adding { return ... } would make a big difference01:34
<arjanb>the formatting of short method body doesn't fit well with the rest01:35
<bonniot>in general or in this case?01:36
<arjanb>in this case
<bonniot>to me this last version look ok:01:37
one line for the signature, one for the contract, one for the implementation
of course this is new syntax compared to C/Java, so it needs some getting used to01:38
i think we should leave it possible for now01:41
one sure thing to forbid is requires in overrides
that can be done in bossa.syntax rather than in the parser01:42
<arjanb>yes we need a specific error message for that01:43
<bonniot>yep01:46
what about:01:47
This method inherits its requirements from the method it overrides.01:48
It cannot specify additional requirements.
.
?01:49
<arjanb>sounds to heavy01:50
<bonniot>too verbose? at least it say everything explicitely01:51
i don't see why messages should be short. the first time you get time that can be helpful
after some time you won't need all the info, but that does not hurt01:52
but if you have a better idea go ahead! :-)01:56
i'm off for tonight. good night02:03
<arjanb>cu02:04
* bonniot leaves02:05
* arjanb leaves06:04
* CIA-1 leaves08:37
* CIA-3 joins
<Bluelive>foreach( x in list where x > 10 ) { print( x ) }08:46
* bonniot joins11:31
<Bluelive>hi12:16
<bonniot>hello12:22
<CIA-3>03bonniot * 10tester/Flow4j.test: Moved the flow4j sources to the nice website, where they can be updated12:23
* ChanServ leaves12:28
* ChanServ joins12:48
<Bluelive>so last steps in implementing, then i can start testing exceptions with stacktraces in alpha13:18
* arjanb joins13:39
<bonniot>hello arjan13:49
<arjanb>hi13:50
one problem i don't know what to do with is that an override can override multiple methods
so what to do if these methods have contracts?13:54
<bonniot>a method overriding one or several methods can not include requirements13:57
it does not matter whether the original ones have contracts or not
<arjanb>so the contract just disappears?13:59
<bonniot>are you spealing about the execution of contracts?
speaking
<CIA-3>03bonniot * 10Nice/src/bossa/syntax/NiceMethod.java: Give more precise information in case of contravariant overriding.14:00
<arjanb>yes
<bonniot>ok14:01
then all of the original contracts should be checked
<arjanb>hmm that's possible but i think override of multiple methods should be more explicit14:03
ouch the current implementation of override creates a hole in typechecking14:07
<bonniot>what hole?14:08
<arjanb><T> void foo(Collection<T> list) {}
void foo(List<int> list)
{
println(list[0]+1);
}
void main(String[] args){
List<String> list = new ArrayList();
list.add("abc");
list.foo();
}14:09
<bonniot>right, there should be no override14:11
i'll change that14:12
i don't think multiple overrides is a practical problem14:13
a good editor would identify overriden method(s) anyway
and convariance is checked for all of them14:14
covariance
<arjanb>if some methods overrides multiple methods than it's probably a design mistake14:16
<bonniot>not with multiple itf implementation14:17
ex:14:28
interface I1 { I1 foo(); }
interface I2 { I2 foo(); }
class A implements I1, I2 { override A foo() {} }
that makes perfect sense, no?14:29
<arjanb>maybe i'm just not sure about this14:49
<bonniot>that was discussed on nice-info before implementing overrides, about a method implementation matching several methods defined in interfaces14:56
<arjanb>714:57
i have read that14:58
<bonniot>http://nice.sourceforge.net/tests.html15:32
all tests passing again :-)
<arjanb>the groovy language has started a jsr15:33
<bonniot>yes, i saw that15:37
<arjanb>no idea what they want to achieve with that15:39
<Bluelive>groovy ?16:45
<arjanb>a scripting language for the jvm: http://groovy.codehaus.org/17:01
* ChanServ leaves17:03
* ChanServ joins17:07
* CIA-3 leaves18:00
* CIA-3 joins
* CIA-3 leaves19:00
* CIA-3 joins
<bonniot>arjanb: how is it going with contracts?21:52

Generated by Sualtam