This has two parts:
- The "high level" bug is that inputs don't affect the
Tool.lang correctly -- Tool.lang is determined only by the presence of an -x flag or the tool class itself, meaning that blight.CC.lang will always report Lang.C unless -x c++ is passed. This manifests particularly as the wrong lang value for assembly inputs: cc foo.s ought to report Lang.Asm (which doesn't exist yet), but reports Lang.C instead.
- The "low level" bug is that
Tool.lang is a bad abstraction: a given tool invocation might be handling multiple languages at once, or no languages at all.
Long term, we should probably just kill off the Tool.lang API. Shorter term, we should try to make its behavior more intuitive (e.g. sniffing file suffixes when available, and presenting a Lang variant based on them).
This has two parts:
Tool.langcorrectly --Tool.langis determined only by the presence of an-xflag or the tool class itself, meaning thatblight.CC.langwill always reportLang.Cunless-x c++is passed. This manifests particularly as the wronglangvalue for assembly inputs:cc foo.sought to reportLang.Asm(which doesn't exist yet), but reportsLang.Cinstead.Tool.langis a bad abstraction: a given tool invocation might be handling multiple languages at once, or no languages at all.Long term, we should probably just kill off the
Tool.langAPI. Shorter term, we should try to make its behavior more intuitive (e.g. sniffing file suffixes when available, and presenting aLangvariant based on them).