Path: csiph.com!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Keith Thompson Newsgroups: comp.theory Subject: Re: =?utf-8?Q?Flibble=E2=80=99s?= Leap: Why Behavioral Divergence Implies a Type Distinction in the Halting Problem Date: Sun, 11 May 2025 21:37:33 -0700 Organization: None to speak of Lines: 67 Message-ID: <87bjry4f76.fsf@nosuchdomain.example.com> References: <7N2UP.527443$wBt6.464256@fx15.ams4> <39947848bf73be52ee6fbbeb6d0d929009dfec8e@i2pn2.org> <43f0f4158610d859516ba3e0115a8a2b8bd7630b@i2pn2.org> <87frha4j5w.fsf@nosuchdomain.example.com> MIME-Version: 1.0 Content-Type: text/plain Injection-Date: Mon, 12 May 2025 06:37:34 +0200 (CEST) Injection-Info: dont-email.me; posting-host="ec3410180c1ee7cec196ae011e16bd7a"; logging-data="968071"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+3rX7/MGnMyr7yYuUCLG9u" User-Agent: Gnus/5.13 (Gnus v5.13) Cancel-Lock: sha1:eqmsXRmCWn6YLDXFhJTD4Y8Birk= sha1:/YMYeMi3Lu0jkkLr6irK6PLKuKk= Xref: csiph.com comp.theory:118652 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". 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.) 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] -- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com void Void(void) { Void(); } /* The recursive call of the void */