Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Mike Terry Newsgroups: comp.theory Subject: =?UTF-8?Q?Re:_Flibble=e2=80=99s_Leap:_Why_Behavioral_Divergence_Imp?= =?UTF-8?Q?lies_a_Type_Distinction_in_the_Halting_Problem?= Date: Tue, 13 May 2025 22:22:19 +0100 Organization: A noiseless patient Spider Lines: 78 Message-ID: <1000d6b$2258d$1@dont-email.me> References: <7N2UP.527443$wBt6.464256@fx15.ams4> <39947848bf73be52ee6fbbeb6d0d929009dfec8e@i2pn2.org> <43f0f4158610d859516ba3e0115a8a2b8bd7630b@i2pn2.org> <87frha4j5w.fsf@nosuchdomain.example.com> <87bjry4f76.fsf@nosuchdomain.example.com> MIME-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Tue, 13 May 2025 23:22:20 +0200 (CEST) Injection-Info: dont-email.me; posting-host="750d255cb0ee70f75da7805aef2899f4"; logging-data="2168077"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18UAwxzGcnzS15Le81aVPoebupc82613DU=" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0 SeaMonkey/2.53.18.2 Cancel-Lock: sha1:aSjV4KWAzGumbl4Pwg3DbmNgT5o= In-Reply-To: <87bjry4f76.fsf@nosuchdomain.example.com> Bytes: 5242 On 12/05/2025 05:37, Keith Thompson wrote: > Richard Heathfield writes: >> On 12/05/2025 04:11, Keith Thompson wrote: >>> Richard Heathfield writes: >>> [...] >>>> ALL C compilers are required to diagnose ALL syntax errors and ALL >>>> constraint violations. >>> Yes, all conforming C compilers are required to do that. (Well, >>> strictly speaking they're only required to issue at least one diagnostic >>> for any translation unit that violates a syntax rule or constraint.) >> >> I was unintentionally ambiguous, for which I apologise. >> >> The point I sought to make is that there is no syntax error (or >> constraint violation) so trivial that a compiler is given licence not >> to issue a diagnostic it if it has no other reason so to do. >> >> That is, they are all capable of ticking the box that says 'must issue >> at least one diagnostic'. >> >>> [...] >>> >>>> In my experience, Microsoft's C compiler - although not perfect - is >>>> pretty good at following conformance rules. I'd be surprised to learn >>>> from a competent source that it misses a syntax error. >>> I wouldn't, since few if any C compilers are conforming by default. >> >> I was talking about conforming mode, which IIRC (it's been a while) is >> invoked by -W4 (a warning level that I habitually used in the days >> when I still used Microsoft software). >> >>> I've just tried 4 different C compilers (gcc, clang, and tcc >>> on Ubuntu, MS Visual Studio 2022 on Windows), and none of them >>> diagnosed a stray semicolon at file scope *by default*. gcc and >>> clang can be persuaded to diagnose it. tcc, as far as I can tell, >>> cannot; I don't believe it claims to be fully conforming in any mode. >>> I wasn't able to get MSVS to diagnose it, but there could easily >>> be an option that I'm missing. >> >> Could you crank MSVS up to -W4 (or whatever the max is these days) and >> try again? I hate to impose, but of course it's your own fault for >> qualifying as a competent source. ;-) > > It's "/W4". The default appears to be "/W3". At W4 or Wall I get a messages such as: 1>c:\products\source\scratch10\ctest.c(8): warning C4019: empty statement at global scope 1>c:\products\source\scratch10\ctest.c(12): warning C4019: empty statement at global scope The help for the error code: > > With "/W4", or even "/Wall", it still doesn't diagnose a stray semicolon > at file scope. (I wouldn't expect a warning option to be the > incantation that makes the compiler conform to the standard.) Eh? On my system I got the above messages for stray semi-colons. I'm using VS2017. > > The "/Za" option is supposed to disable language extensions, but it > complains that "'/Za' and '/std:c17' command-line options are > incompatible". > > The implementation supports both C and C++. It seems to treat C as a > second-class citizen. (I think, but I'm not sure, that a stray > semicolon at file scope is legal in C++; it's called an > "empty-declaration".) > >> If it doesn't diagnose at its maximum warning level, then okay, ~I >> lose the syntax battle. > > I'd say that Microsoft's compiler loses the syntax battle. > > [Remainder read and snipped] >