Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • A asdf
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 64
    • Issues 64
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 21
    • Merge requests 21
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • asdf
  • asdf
  • Merge requests
  • !188

Draft: Add with-compilation-unit*

  • Review changes

  • Download
  • Patches
  • Plain diff
Open Eric Timmons requested to merge simplify-deferred-warnings into master Jul 16, 2021
  • Overview 0
  • Commits 3
  • Pipelines 2
  • Changes 4

A macro that expands to a standard with-compilation-unit, wrapped in a condition handler. The condition handler takes all warnings signaled upon exit of the wrapped w-c-u, collects them in a deferred-warnings-error condition and signals it with error.

This behavior can be controlled using the :asdf-deferred-warnings-behavior option to with-compilation-unit*, which defaults to the value of *with-compilation-unit-deferred-warnings-behavior*, which itself defaults to :error.

This was inspired by the discussion in #80 (closed) and sidesteps the issue brought up by #82.

This solution is not as nifty as the current deferred warning support, but is very simple and should work on any implementation that supports deferred warnings. Notably, we lose the ability to map deferred warnings to the file that produced them (although that could probably be fixed with some implementation specific code) and this will not nicely transfer to using separate processes to compile.

Some implementations do not support deferred warnings at all, and some support deferring them but do not resignal upon exit of the compilation unit. I'm going to document what I discover in this table below. It affects ASDF only through our tests.

impl resignals undefined vars resignals undefined functions
abcl no support no, only prints
ccl no support yes
cmucl yes yes?
ecl no support (w-c-u => progn) no support (w-c-u => progn)
sbcl yes yes
Edited Jul 17, 2021 by Eric Timmons
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: simplify-deferred-warnings