[cfe-dev] Disable #error?
Sean Silva
silvas at purdue.edu
Wed Jan 15 09:47:11 PST 2014
On Wed, Jan 15, 2014 at 7:54 AM, Alp Toker <alp at nuanti.com> wrote:
>
> On 14/01/2014 21:58, Sean Silva wrote:
>
>> Just do:
>>
>> $ sed -i -e 's/#error.*//' **/*.h
>>
>> Really, ignoring the semantics of the program being analyzed (i.e. that
>> it requests compilation to be aborted) is just as much of a hack as using
>> sed to modify the headers. In both cases, you are forcefully trampling the
>> source code's request.
>>
>
> Hi Sean,
>
> The use case for 'softer' errors is source transformation and tooling,
> where the directives aren't meant to be evaluated in the first place.
> Without evaluation, there is no request to trample on.
>
> There's certainly a class of syntactic errors that we could recover from
> more gracefully to enable safe refactoring of incomplete translation units.
>
I assume that "safe refactoring" means "respects the source code's
meaning". Code that has a syntactic error has no defined meaning and
therefore by definition cannot be refactored in a "safe" manner. Any such
approach will be purely heuristic.
-- Sean Silva
>
> What's clear is that sed isn't a viable part of that tooling. The whole
> aim is to offer a clean semantic interface to analyse and manipulate user
> code -- and in that context the original source tree is always immutable.
>
> So let's hear out the user requests -- there's something to these but I'm
> not sure quite what it is yet.
>
> Alp.
>
>
>
>> -- Sean Silva
>>
>>
>>
>> On Tue, Jan 14, 2014 at 2:37 PM, Jacob Carlborg <doob at me.com <mailto:
>> doob at me.com>> wrote:
>>
>> On 2014-01-14 18:58, Alp Toker wrote:
>>
>> This is an interesting idea. It's always a hard error right now.
>>
>> We've seen similar requests to 'downgrade' a few other errors
>> like the
>> MS inline assembly missing-backend one and I suspect there's a
>> pattern
>> developing here.
>>
>> Could you expand on your specific use-case a little?
>>
>>
>> I have a tool that translate C header files to D modules[1]. The
>> tool is designed to translate header files one at the time. The
>> problem is that in some C libraries some kind of umbrella headers
>> are used. They only serve to include other sub header files. Some
>> of these libraries enforce this by the sub header files checking
>> for a preprocessor macro defined by the umbrella header. If this
>> macro is not defined they halt the complication with the #error
>> directive.
>>
>> I'm using libclang since the tool itself is written in D. D is ABI
>> compatible with C.
>>
>> [1] https://github.com/jacob-carlborg/dstep
>>
>> -- /Jacob Carlborg
>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu <mailto:cfe-dev at cs.uiuc.edu>
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>
>>
>>
>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>
>
> --
> http://www.nuanti.com
> the browser experts
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140115/de53e4a8/attachment.html>
More information about the cfe-dev
mailing list