Skip to content

System vs Host vs Program layering #272

Open
@iisaduan

Description

@iisaduan

In #241, we had quite a bit of discussion about whether certain fields belong to System vs Host vs Program layering, with all reviewers agreeing that the current setup "feels weird": discussion, comment

For example, which layers should have a compiler CompilerOptions object? What options should be shared, and what options can be changed? These layering considerations are something to keep in mind as more of the system is implemented (and also when CompilerOptions are eventually refactored to be generated)

I think the confusion comes from strada having compilerOptions be a one-and-all object to hold everything. At each level, not every option is used. For examples, incremental is only used in executeCommandLine and emitter, and I'm pretty sure that the separate watchOptions object gets combined into the compilerOptions object at some points, but because the watchoptions aren't used in places like checker, we don't really see that.
So the CompilerHost would only need a subset of compilerOptions, and Program would need some overlapping subset.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions