February 11, 2004 Re: [Language design] yet another notational error | ||||
---|---|---|---|---|
| ||||
Posted in reply to davepermen | davepermen wrote: [I do not see a problem] Not beeing able to recognize a problem is a non argument. Also enforced, you do not come up with a counter example that requires a call to look like `(1,2)', a slice to look like `[1..2]' or even an assignment to look like `v=1'. If you think accompanying tools can and should take off the burdon of a proper syntax from a language, then take the following list of error messages and convince at least Walter to no longer maintain it: !(TemplateArgumentList) expected following TemplateIdentifier '%s' #line integer ["filespec"]\n expected %p has no semantic routine %s %s is deprecated %s '%s' is not a variable %s does not have a boolean value %s has no value %s is not a field %s is not a field of %s %s is not a template %s is not a template %s is not a template declaration %s is not an expression %s is not an expression %s is not an expression %s is used as a type %s must be a function %s must be an array or pointer type, not %s %s.%s is private '%s' is not a member of '%s' '%s' is not a scalar, it is a %s '%s' is not an arithmetic type '%s' is not an integral type '%s' is not an lvalue '%s' must be an interface ';' expected ';' expected after template instance ';' expected after template instance, not %s ';' expected following module declaration instead of %s '=' does not give a boolean result 'super' is only allowed in non-static member functions 'this' is only allowed in non-static member functions 'this' is required, but %s is not a base class of %s (%s) does not match argument types (%s) (%s) is false (condition) expected after version (condition) expected following version (identifier) following 'out' expected, not %s ) expected instead of '%s' ... not allowed in delete function parameter list a struct is not a valid initializer for a %s alias cannot have initializer align %d must be a power of 2 anonymous classes not allowed apply() function for %s must return an int argument expected for switch '%s' array comparison type mismatch, %s vs %s array index %lld is out of bounds [0..%lld] array index [%lld] is outside array bounds [0 .. %lld] asm statements must end in ';' at least one argument of type uint expected bad addr mode bad operand bad type/size of operands '%s' base %s is forward referenced base classes expected following ':' base type must be class or interface, not %s basic type expected, not %s binary digit expected binary-exponent-part required break is not inside a loop or switch can only * a pointer, not a '%s' can only catch class objects, not '%s' Can only concatenate arrays Can only concatenate arrays, not (%s ~ %s) can only synchronize on class objects, not '%s' can only throw class objects, not type %s can only throw classes, not %s can't have array of %s can't have associative array key of %s can't have associative array of %s Can't run '%s', check PATH can't subtract pointer from %s cannot access frame of function %s cannot assign to static array %s cannot cast %s to %s cannot cast %s to %s since sizes don't line up cannot cast from %s to %s cannot change reference to static array '%s' cannot convert string literal to void* cannot create instance of abstract class %s cannot create instance of interface %s cannot declare template at function scope cannot delete %s cannot goto forward into different try block level cannot goto into try block cannot have array of %s cannot have array of auto %s cannot have out or inout argument of bit in array cannot have out or inout parameter of type %s cannot have parameter of type %s cannot implicitly convert %s to %s cannot modify const variable '%s' cannot modify parameter '%s' in contract cannot modify slice %s cannot override final function %s cannot resolve forward reference cannot return expression from constructor cannot return value from void function cannot take address of bit in array cannot use array to initialize %s case %s not found case '%s' is not a string case not in switch statement catch or finally expected following try character entity out of range character is truncated class constructor call must be in a constructor comma expected separating array initializers, not %s comma expected separating field initializers command line length of %d is too long conflicts with %s.%s at %s constructor calls not allowed in loops or after labels constructors only are for class definitions continue is not inside a loop cyclic constructor call declaration %s is already defined declaration %s.%s is already defined declaration expected following attribute, not ';' Declaration expected, not '%s' default not in switch statement delegates are only for non-static functions delete does not give a boolean result destructors only are for class definitions does not match any template declaration duplicate case %s in switch statement duplicate initializations for index %d duplicate union initialization for %s duplicate union initialization for %s enclosing label '%s' for break not found enclosing label '%s' for continue not found end of file before closing %c of string end of file before closing --> of comment end of file before end of character entity enum %s must have at least one member enum member expected escape hex sequence has %d hex digits instead of %d expected %d arguments, not %d exponent expected expression (%s) has no type expression expected, not '%s' field %s of %s already initialized field not allowed in interface first argument must be type uint, not %s Floating point constant expression expected instead of %s floating point expected for condition foreach: %s is not an aggregate type foreach: %s is not an array of %s foreach: index cannot be inout foreach: index must be type %s, not %s foreach: key cannot be inout foreach: key cannot be out foreach: key type must be int or uint, not %s foreach: value cannot be out and type bit foreach: value must be type %s, not %s foreach: value of UTF conversion cannot be inout forward reference of base class %s forward reference to template declaration %s found '%s' instead of array initializer found '%s' instead of statement found '%s' when expecting '%s' found '%s' when expecting '%s' following '%s' found '%s' when expecting identifier following '%s.' function %s does not override any function body is not abstract in interface %s function expected before (), not '%s' function expected to return a value of type %s functions cannot be const or auto functions cannot return auto %s functions cannot return static array %s globals, statics, fields, inout and out parameters cannot be auto goto case not in switch statement goto default not in switch statement Hex digit expected, not '%c' identifier '%s' is not defined identifier '%s' is not defined identifier '%s' of '%s' is not defined identifier expected following '.' instead of '%s' identifier expected following '.', not '%s' Identifier expected following (type). Identifier expected following cast(type). Identifier expected following goto Identifier expected following import Identifier expected following module Identifier expected following package Identifier expected following package Identifier expected for template parameter identifier expected not struct identifier or integer expected, not %s illegal UTF-16 value illegal UTF-16 value %04x incompatible types for ((%s) %s (%s)): '%s' and '%s' incompatible types for array[range], had %s[] index is not a type or an expression Integer constant expression expected instead of %s integer expected integer expected, not %s integer overflow integral type expected for value-parameter, not %s interface function %s.%s is not implemented invalid numeric character reference invalid UCS-32 char \U%08x invalid UTF-8 sequence invalid UTF-8 sequence invariants only are for struct/union/class definitions is forward referenced is in multiple packages %s is in multiply defined is not a per-instance initializable field is not a static and cannot have static initializer Label '%s' already defined label '%s' has no break label '%s' has no continue label expected linkage doesn't match interface function matches more than one template declaration matching '}' expected, not %s matching '}' expected, not end of file member %s is not accessible members expected members of template declaration expected module and package have the same name multiple constructor calls multiple declarations must have the same type, not %s and %s multiple delete's for class %s multiple delete's for struct %s multiple destructors for class %s multiple source files, but only one .obj name must use body keyword after in or out need 'this' to access member %s need size of rightmost array, not type %s negative array index %s negative index %lld for static array new allocators only are for class or struct definitions new can only create structs, arrays or class objects, not %s's no allocator for %s no base class for %s no case statement following goto case; no constructor for %s no definition for static %s No expression copy for: %s no identifier for declarator no identifier for parameter %d of %s no identifier for template value parameter no property '%s' for type '%s' no super class constructor for %s no [] operator overload for type %s non-constant expression %s non-hex character '%c' nops expected number is not representable Octal digit expected odd length of UTF-16 char source %u odd length of UTF-32 char source %u odd number (%d) of hex characters in hex string one argument of type void* expected one argument of type void* expected, not %s only fields allowed in anonymous struct only one or two arguments for array foreach only one or two arguments for associative array foreach opcode expected, not %s out result %s is already defined overlapping initialization for struct %s.%s overloads %s and %s both match argument list for %s overrides but is not covariant with %s package and module have the same name parameter %s.%s is already defined parameter '%s' multiply defined parameters must be main() or main(char[][] args) parenthesized TemplateParameterList expected following TemplateIdentifier pointer expected before ->, not '%s' pragma(identifier expected pragma(identifier expected PragmaStatement::toCBuffer() ptr expected redundant 'in' statement redundant 'out' statement redundant storage class '%s' reference to auto class must be auto return statements cannot be in contracts return value expected return without calling constructor rvalue of in expression must be an associative array, not %s semicolon expected semicolon expected following function declaration semicolon expected to close %s declaration semicolon expected, not '%s' source file name '%s' must have .%s extension special function not allowed in interface %s special member functions not allowed for %ss statement expected to be { }, not %s string expected for pragma msg, not '%s' string expected for pragma msg, not '%s' StringExp::toDt(type = %s) struct %s is forward referenced struct member expected super class constructor call must be in a constructor surrogate UTF-16 high value %04x at EOF surrogate UTF-16 high value past end of string surrogate UTF-16 low value %04x out of range surrogate UTF-16 low value out of range switch statement already has a default synchronized function %s must be a member of a class template %s is not a member of %s template identifier %s is not a member of %s template identifier %s is not a member of %s template member expected TemplateIdentifier expected following instance TemplateIdentifier expected following template Throw statements cannot be in contracts too many initializers %d for array[%d] too many initializers for %s type %s is not an expression undefined escape hex sequence \%c undefined escape sequence \%c undefined identifier %s undefined identifier '%s' undefined label %s unexpected identifer '%s' in declarator unknown operand for floating point instruction unpaired surrogate UTF-16 value unpaired surrogate UTF-16 value %04x unrecognized declaration unrecognized file extension %s unrecognized pragma(%s) unrecognized pragma(%s) unrecognized switch '%s' unrecognized token unsupported char '%c' unsupported char 0x%02x unterminated /* */ comment unterminated /+ +/ comment unterminated character constant unterminated string constant starting at %s use '{ }' for an empty statement, not a ';' UTF-32 value %08x greater than 0x10FFFF valid linkage identifiers are D, C, C++, Pascal, Windows variable %s cannot be synchronized void functions have no result void has no value voids have no value voids have no value with expressions must be class objects, not '%s' \%c sequence must be followed by %d hex characters ] expected instead of '%s' { enum members } expected So long. |
February 11, 2004 Re: [Language design] yet another notational error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Manfred Nowak | you act stupid. case closed. "Manfred Nowak" <svv1999@hotmail.com> schrieb im Newsbeitrag news:c0e095$hlr$1@digitaldaemon.com... > davepermen wrote: > > [I do not see a problem] > > Not beeing able to recognize a problem is a non argument. Also enforced, you do not come up with a counter example that requires a call to look like `(1,2)', a slice to look like `[1..2]' or even an assignment to look like `v=1'. > > If you think accompanying tools can and should take off the burdon > of a proper syntax from a language, then take the following list of error > messages and convince at least Walter to no longer maintain it: > > !(TemplateArgumentList) expected following TemplateIdentifier '%s' > #line integer ["filespec"]\n expected > %p has no semantic routine > %s %s is deprecated > %s '%s' is not a variable > %s does not have a boolean value > %s has no value > %s is not a field > %s is not a field of %s > %s is not a template > %s is not a template > %s is not a template declaration > %s is not an expression > %s is not an expression > %s is not an expression > %s is used as a type > %s must be a function > %s must be an array or pointer type, not %s > %s.%s is private > '%s' is not a member of '%s' > '%s' is not a scalar, it is a %s > '%s' is not an arithmetic type > '%s' is not an integral type > '%s' is not an lvalue > '%s' must be an interface > ';' expected > ';' expected after template instance > ';' expected after template instance, not %s > ';' expected following module declaration instead of %s > '=' does not give a boolean result > 'super' is only allowed in non-static member functions > 'this' is only allowed in non-static member functions > 'this' is required, but %s is not a base class of %s > (%s) does not match argument types (%s) > (%s) is false > (condition) expected after version > (condition) expected following version > (identifier) following 'out' expected, not %s > ) expected instead of '%s' > ... not allowed in delete function parameter list > a struct is not a valid initializer for a %s > alias cannot have initializer > align %d must be a power of 2 > anonymous classes not allowed > apply() function for %s must return an int > argument expected for switch '%s' > array comparison type mismatch, %s vs %s > array index %lld is out of bounds [0..%lld] > array index [%lld] is outside array bounds [0 .. %lld] > asm statements must end in ';' > at least one argument of type uint expected > bad addr mode > bad operand > bad type/size of operands '%s' > base %s is forward referenced > base classes expected following ':' > base type must be class or interface, not %s > basic type expected, not %s > binary digit expected > binary-exponent-part required > break is not inside a loop or switch > can only * a pointer, not a '%s' > can only catch class objects, not '%s' > Can only concatenate arrays > Can only concatenate arrays, not (%s ~ %s) > can only synchronize on class objects, not '%s' > can only throw class objects, not type %s > can only throw classes, not %s > can't have array of %s > can't have associative array key of %s > can't have associative array of %s > Can't run '%s', check PATH > can't subtract pointer from %s > cannot access frame of function %s > cannot assign to static array %s > cannot cast %s to %s > cannot cast %s to %s since sizes don't line up > cannot cast from %s to %s > cannot change reference to static array '%s' > cannot convert string literal to void* > cannot create instance of abstract class %s > cannot create instance of interface %s > cannot declare template at function scope > cannot delete %s > cannot goto forward into different try block level > cannot goto into try block > cannot have array of %s > cannot have array of auto %s > cannot have out or inout argument of bit in array > cannot have out or inout parameter of type %s > cannot have parameter of type %s > cannot implicitly convert %s to %s > cannot modify const variable '%s' > cannot modify parameter '%s' in contract > cannot modify slice %s > cannot override final function %s > cannot resolve forward reference > cannot return expression from constructor > cannot return value from void function > cannot take address of bit in array > cannot use array to initialize %s > case %s not found > case '%s' is not a string > case not in switch statement > catch or finally expected following try > character entity out of range > character is truncated > class constructor call must be in a constructor > comma expected separating array initializers, not %s > comma expected separating field initializers > command line length of %d is too long > conflicts with %s.%s at %s > constructor calls not allowed in loops or after labels > constructors only are for class definitions > continue is not inside a loop > cyclic constructor call > declaration %s is already defined > declaration %s.%s is already defined > declaration expected following attribute, not ';' > Declaration expected, not '%s' > default not in switch statement > delegates are only for non-static functions > delete does not give a boolean result > destructors only are for class definitions > does not match any template declaration > duplicate case %s in switch statement > duplicate initializations for index %d > duplicate union initialization for %s > duplicate union initialization for %s > enclosing label '%s' for break not found > enclosing label '%s' for continue not found > end of file before closing %c of string > end of file before closing --> of comment > end of file before end of character entity > enum %s must have at least one member > enum member expected > escape hex sequence has %d hex digits instead of %d > expected %d arguments, not %d > exponent expected > expression (%s) has no type > expression expected, not '%s' > field %s of %s already initialized > field not allowed in interface > first argument must be type uint, not %s > Floating point constant expression expected instead of %s > floating point expected > for condition > foreach: %s is not an aggregate type > foreach: %s is not an array of %s > foreach: index cannot be inout > foreach: index must be type %s, not %s > foreach: key cannot be inout > foreach: key cannot be out > foreach: key type must be int or uint, not %s > foreach: value cannot be out and type bit > foreach: value must be type %s, not %s > foreach: value of UTF conversion cannot be inout > forward reference of base class %s > forward reference to template declaration %s > found '%s' instead of array initializer > found '%s' instead of statement > found '%s' when expecting '%s' > found '%s' when expecting '%s' following '%s' > found '%s' when expecting identifier following '%s.' > function %s does not override any > function body is not abstract in interface %s > function expected before (), not '%s' > function expected to return a value of type %s > functions cannot be const or auto > functions cannot return auto %s > functions cannot return static array %s > globals, statics, fields, inout and out parameters cannot be auto > goto case not in switch statement > goto default not in switch statement > Hex digit expected, not '%c' > identifier '%s' is not defined > identifier '%s' is not defined > identifier '%s' of '%s' is not defined > identifier expected following '.' instead of '%s' > identifier expected following '.', not '%s' > Identifier expected following (type). > Identifier expected following cast(type). > Identifier expected following goto > Identifier expected following import > Identifier expected following module > Identifier expected following package > Identifier expected following package > Identifier expected for template parameter > identifier expected not struct > identifier or integer expected, not %s > illegal UTF-16 value > illegal UTF-16 value %04x > incompatible types for ((%s) %s (%s)): '%s' and '%s' > incompatible types for array[range], had %s[] > index is not a type or an expression > Integer constant expression expected instead of %s > integer expected > integer expected, not %s > integer overflow > integral type expected for value-parameter, not %s > interface function %s.%s is not implemented > invalid numeric character reference > invalid UCS-32 char \U%08x > invalid UTF-8 sequence > invalid UTF-8 sequence > invariants only are for struct/union/class definitions > is forward referenced > is in multiple packages %s > is in multiply defined > is not a per-instance initializable field > is not a static and cannot have static initializer > Label '%s' already defined > label '%s' has no break > label '%s' has no continue > label expected > linkage doesn't match interface function > matches more than one template declaration > matching '}' expected, not %s > matching '}' expected, not end of file > member %s is not accessible > members expected > members of template declaration expected > module and package have the same name > multiple constructor calls > multiple declarations must have the same type, not %s and %s > multiple delete's for class %s > multiple delete's for struct %s > multiple destructors for class %s > multiple source files, but only one .obj name > must use body keyword after in or out > need 'this' to access member %s > need size of rightmost array, not type %s > negative array index %s > negative index %lld for static array > new allocators only are for class or struct definitions > new can only create structs, arrays or class objects, not %s's > no allocator for %s > no base class for %s > no case statement following goto case; > no constructor for %s > no definition for static %s > No expression copy for: %s > no identifier for declarator > no identifier for parameter %d of %s > no identifier for template value parameter > no property '%s' for type '%s' > no super class constructor for %s > no [] operator overload for type %s > non-constant expression %s > non-hex character '%c' > nops expected > number is not representable > Octal digit expected > odd length of UTF-16 char source %u > odd length of UTF-32 char source %u > odd number (%d) of hex characters in hex string > one argument of type void* expected > one argument of type void* expected, not %s > only fields allowed in anonymous struct > only one or two arguments for array foreach > only one or two arguments for associative array foreach > opcode expected, not %s > out result %s is already defined > overlapping initialization for struct %s.%s > overloads %s and %s both match argument list for %s > overrides but is not covariant with %s > package and module have the same name > parameter %s.%s is already defined > parameter '%s' multiply defined > parameters must be main() or main(char[][] args) > parenthesized TemplateParameterList expected following TemplateIdentifier > pointer expected before ->, not '%s' > pragma(identifier expected > pragma(identifier expected > PragmaStatement::toCBuffer() > ptr expected > redundant 'in' statement > redundant 'out' statement > redundant storage class '%s' > reference to auto class must be auto > return statements cannot be in contracts > return value expected > return without calling constructor > rvalue of in expression must be an associative array, not %s > semicolon expected > semicolon expected following function declaration > semicolon expected to close %s declaration > semicolon expected, not '%s' > source file name '%s' must have .%s extension > special function not allowed in interface %s > special member functions not allowed for %ss > statement expected to be { }, not %s > string expected for pragma msg, not '%s' > string expected for pragma msg, not '%s' > StringExp::toDt(type = %s) > struct %s is forward referenced > struct member expected > super class constructor call must be in a constructor > surrogate UTF-16 high value %04x at EOF > surrogate UTF-16 high value past end of string > surrogate UTF-16 low value %04x out of range > surrogate UTF-16 low value out of range > switch statement already has a default > synchronized function %s must be a member of a class > template %s is not a member of %s > template identifier %s is not a member of %s > template identifier %s is not a member of %s > template member expected > TemplateIdentifier expected following instance > TemplateIdentifier expected following template > Throw statements cannot be in contracts > too many initializers %d for array[%d] > too many initializers for %s > type %s is not an expression > undefined escape hex sequence \%c > undefined escape sequence \%c > undefined identifier %s > undefined identifier '%s' > undefined label %s > unexpected identifer '%s' in declarator > unknown operand for floating point instruction > unpaired surrogate UTF-16 value > unpaired surrogate UTF-16 value %04x > unrecognized declaration > unrecognized file extension %s > unrecognized pragma(%s) > unrecognized pragma(%s) > unrecognized switch '%s' > unrecognized token > unsupported char '%c' > unsupported char 0x%02x > unterminated /* */ comment > unterminated /+ +/ comment > unterminated character constant > unterminated string constant starting at %s > use '{ }' for an empty statement, not a ';' > UTF-32 value %08x greater than 0x10FFFF > valid linkage identifiers are D, C, C++, Pascal, Windows > variable %s cannot be synchronized > void functions have no result > void has no value > voids have no value > voids have no value > with expressions must be class objects, not '%s' > \%c sequence must be followed by %d hex characters > ] expected instead of '%s' > { enum members } expected > > So long. > |
February 11, 2004 Re: [Language design] yet another notational error | ||||
---|---|---|---|---|
| ||||
Posted in reply to davepermen | davepermen wrote:
> you act stupid.
>
> case closed.
>
Settle down, girls. Can't you just be okay with disagreeing? I'm wasting time reading these posts. I get it that you two do things differently. Case closed.
|
February 11, 2004 Re: [Language design] yet another notational error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Brad Anderson | shall i add a third case closed? :D no, definitely. i stated manfred is right. i just think it's not important or dangerous. the rest was talking besides eachother. i haven't answered his questions really, so didn't he replied to mine.. i'm sorry. sorry manfred sorry brad i hope it was at least a good read:D greetings to all. i hope we find some midway.. but walter does not want to have warnings in the dmd.. well.. as it can not be an error, what should be done now? "Brad Anderson" <brad@sankaty.dot.com> schrieb im Newsbeitrag news:c0e2m4$li9$1@digitaldaemon.com... > davepermen wrote: > > you act stupid. > > > > case closed. > > > > Settle down, girls. Can't you just be okay with disagreeing? I'm wasting time > reading these posts. I get it that you two do things differently. Case closed. |
February 12, 2004 Re: custom warnings [was yet another notational error] | ||||
---|---|---|---|---|
| ||||
Posted in reply to davepermen | davepermen wrote: [...] > i hope we find some midway.. > > but walter does not want to have warnings in the dmd.. Since D has a syntax that's easy to parse, D users can develop their own tools to parse the code and look for Dangerous Situations. We could add our warnings by running a program on the code before we submit it to the compiler (let's call it dcheck). If dcheck rejects the code, we could fix it before we try to compile it. If the person who writes dcheck is worried about nearly everything, dcheck can check many, many possible problems. If someone isn't worried about any of these possible problems, he doesn't have to use dcheck at all. Now everyone's happy. :) -- Justin http://jcc_7.tripod.com/d/ |
February 12, 2004 Re: custom warnings [was yet another notational error] | ||||
---|---|---|---|---|
| ||||
Posted in reply to J C Calvarese | J C Calvarese wrote: > If dcheck rejects the code, we could fix it before we try to compile it. > > If the person who writes dcheck is worried about nearly everything, dcheck can check many, many possible problems. If someone isn't worried about any of these possible problems, he doesn't have to use dcheck at all. > > Now everyone's happy. :) > Isn't there something like that for C/C++? Actually I think there's a load of these programs for C/C++ out there. I think there called "code analysers". Anyway good luck to anyone to attempts to make one. -- -Anderson: http://badmama.com.au/~anderson/ |
February 12, 2004 Re: [Language design] yet another notational error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Manfred Nowak | Manfred Nowak wrote:
> J C Calvarese wrote:
>
>
>>Seriously...
>
> [...]
>
>>(If a person only wants to complain, then they can just complain.)
>
>
> http://remus.rutgers.edu/~rhoads/Obfuscated_C/bright
>
> How quick can you tell the public, what the meaning of the comments in
> the example referenced above is?
>
> So long.
Oh, be serious.
I challenge you to design any kind of language (computer or otherwise) in which it's not possible to obfuscate, either accidentally or intentionally.
|
February 12, 2004 Re: [Language design] yet another notational error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Richard Krehbiel | Richard Krehbiel wrote:
>
> I challenge you to design any kind of language (computer or otherwise) in which it's not possible to obfuscate, either accidentally or intentionally.
How about LOGO? ;)
Sean
|
February 12, 2004 Re: [Language design] yet another notational error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Richard Krehbiel | Richard Krehbiel wrote:
[...]
> any kind of language
[...]
That is easy. For example the languages recognized by the following regular expressions:
1) ^$
2) ^0|1$
3) ^1*$
Make a system fool proof, and only fools will use it.
Have you obfuscated your own request? <g>
So long.
|
February 12, 2004 Re: [Language design] yet another notational error | ||||
---|---|---|---|---|
| ||||
Posted in reply to Manfred Nowak | "Manfred Nowak" <svv1999@hotmail.com> wrote in message news:c0d8o6$2ab7$1@digitaldaemon.com... > Sam McCall wrote: > > > Um, I think it's because walter has more difficult issues to deal with than . versus .. > > I see. Would you have had a look at his code, then you would have noticed, that he codes as if D has already more than the proposed change incorporated: always two spaces around `..' while one space would suffice. Whereas in comments he follows the natural way of specifying slices: mostly without surrounding spaces. Over the years I have slowly gravitated towards putting spaces around operators, and a space following the use of comma. It's just easier to read that way for me. It helps also to use a monospaced font rather than a proportional one, I can't read code in proportional fonts <g>. The problem in your example is one I had not thought of, though it's fixable by not allowing implicit conversions of floating point to ints, which I thought was already there but apparently not. I haven't used color syntax highlighting editors myself, but such should make such errors stand out like a neon sign, and should help a lot in eliminating such coding errors from the start. |
Copyright © 1999-2021 by the D Language Foundation