Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial, extern-ignoring support for extern class decls. #3891

Merged
merged 3 commits into from
Apr 19, 2024

Conversation

jonmeow
Copy link
Contributor

@jonmeow jonmeow commented Apr 16, 2024

This doesn't actually track whether a declaration is extern. It does, however:

  • Factor out and expand merge support for classes, sharing handling with functions.
    • This makes the ClassRedefinition diagnostic redundant, as the redeclaration checking overlaps.
  • Add partial extern handling to class handling; just some verifications of correct use.
  • Factor out extern on member handling for sharing with fn.
  • Fixes a bug in import_ref where a class's definition_id wasn't assigned when defining.

This changes how a redefinition is handled (replaced, rather than merged). I don't know whether that's ideal, but I think it results in easy-to-understand consequences, and it's more consistent with how fn works.

There's enough work here that this felt like a decent cut point, particularly as the amount of work to actually add extern tracking will be significant.

@geoffromer geoffromer added this pull request to the merge queue Apr 19, 2024
Merged via the queue into carbon-language:trunk with commit db324c7 Apr 19, 2024
7 checks passed
@jonmeow jonmeow deleted the extern-merge branch April 19, 2024 16:47
chandlerc pushed a commit to chandlerc/carbon-lang that referenced this pull request May 2, 2024
…uage#3891)

This doesn't actually track whether a declaration is `extern`. It does,
however:

- Factor out and expand merge support for classes, sharing handling with
functions.
- This makes the ClassRedefinition diagnostic redundant, as the
redeclaration checking overlaps.
- Add partial `extern` handling to class handling; just some
verifications of correct use.
- Factor out `extern` on member handling for sharing with `fn`.
- Fixes a bug in import_ref where a class's definition_id wasn't
assigned when defining.

This changes how a redefinition is handled (replaced, rather than
merged). I don't know whether that's ideal, but I think it results in
easy-to-understand consequences, and it's more consistent with how `fn`
works.

There's enough work here that this felt like a decent cut point,
particularly as the amount of work to actually add `extern` tracking
will be significant.
CJ-Johnson pushed a commit to CJ-Johnson/carbon-lang that referenced this pull request May 23, 2024
…uage#3891)

This doesn't actually track whether a declaration is `extern`. It does,
however:

- Factor out and expand merge support for classes, sharing handling with
functions.
- This makes the ClassRedefinition diagnostic redundant, as the
redeclaration checking overlaps.
- Add partial `extern` handling to class handling; just some
verifications of correct use.
- Factor out `extern` on member handling for sharing with `fn`.
- Fixes a bug in import_ref where a class's definition_id wasn't
assigned when defining.

This changes how a redefinition is handled (replaced, rather than
merged). I don't know whether that's ideal, but I think it results in
easy-to-understand consequences, and it's more consistent with how `fn`
works.

There's enough work here that this felt like a decent cut point,
particularly as the amount of work to actually add `extern` tracking
will be significant.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants