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

fix: delegate default impls in HugrView #1921

Merged
merged 2 commits into from
Feb 18, 2025
Merged

fix: delegate default impls in HugrView #1921

merged 2 commits into from
Feb 18, 2025

Conversation

lmondada
Copy link
Contributor

Without delegating all methods with default impls, you get the following weirdness that drove me crazy this morning

trait TraitFoo {
  fn something(&self) -> usize {
    return 42;
  }
}

impl<'t, T: TraitFoo> &'t T {}

struct A;

impl TraitFoo for A {
  fn something(&self) -> usize {
    return 0;
  }
}

let a = A();
a.something()     // is 0
(&a).something()  // is 42 :(

@lmondada lmondada requested a review from a team as a code owner February 18, 2025 12:44
@ss2165 ss2165 requested review from ss2165 and removed request for ReginaFinsterhoelzl February 18, 2025 12:45
Copy link

codecov bot commented Feb 18, 2025

Codecov Report

Attention: Patch coverage is 47.82609% with 24 lines in your changes missing coverage. Please review.

Project coverage is 83.72%. Comparing base (2f588cb) to head (d45786c).
Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
hugr-core/src/hugr/views/impls.rs 47.82% 24 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1921      +/-   ##
==========================================
- Coverage   83.78%   83.72%   -0.07%     
==========================================
  Files         196      196              
  Lines       37493    37539      +46     
  Branches    34306    34352      +46     
==========================================
+ Hits        31414    31428      +14     
- Misses       4296     4328      +32     
  Partials     1783     1783              
Flag Coverage Δ
python 92.34% <ø> (ø)
rust 82.92% <47.82%> (-0.08%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@ss2165 ss2165 requested review from aborgna-q and removed request for ss2165 February 18, 2025 12:52
Copy link
Collaborator

@aborgna-q aborgna-q left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ouch, nice catch -.-'

The HugrInternal delegates look alright, so hopefully this is the only place where this can happen.

Comment on lines 70 to 72
// TODO: cannot use delegate: return type of `as_petgraph`
// depends on Self
// fn as_petgraph(&self) -> PetgraphWrapper<'_, Self>;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's fine to keep this out.
PetgraphWrapper is a thin wrapper over a HugrView, so the default impl should be valid for all implementations.

I'd just leave a comment stating that.

@lmondada lmondada enabled auto-merge February 18, 2025 17:05
@lmondada lmondada added this pull request to the merge queue Feb 18, 2025
Merged via the queue into main with commit bb0d54b Feb 18, 2025
23 of 24 checks passed
@lmondada lmondada deleted the fix/delegate-default branch February 18, 2025 17:12
@hugrbot hugrbot mentioned this pull request Feb 17, 2025
github-merge-queue bot pushed a commit that referenced this pull request Feb 24, 2025
## 🤖 New release

* `hugr`: 0.14.3 -> 0.14.4 (✓ API compatible changes)
* `hugr-core`: 0.14.3 -> 0.14.4 (✓ API compatible changes)
* `hugr-llvm`: 0.14.3 -> 0.14.4 (✓ API compatible changes)
* `hugr-passes`: 0.14.3 -> 0.14.4
* `hugr-cli`: 0.14.3 -> 0.14.4

<details><summary><i><b>Changelog</b></i></summary><p>

## `hugr`

<blockquote>

##
[0.14.4](hugr-v0.14.3...hugr-v0.14.4)
- 2025-02-24

### Bug Fixes

- delegate default impls in HugrView (#1921)

### New Features

- add xor to logic extension (#1911)
- Add `Type::as_sum` and `SumType::variants`. (#1914)
- Add `HugrMutInternals::insert_ports` (#1915)
</blockquote>

## `hugr-core`

<blockquote>

##
[0.14.4](hugr-core-v0.14.3...hugr-core-v0.14.4)
- 2025-02-24

### Bug Fixes

- delegate default impls in HugrView (#1921)

### New Features

- add xor to logic extension (#1911)
- Add `Type::as_sum` and `SumType::variants`. (#1914)
- Add `HugrMutInternals::insert_ports` (#1915)
</blockquote>

## `hugr-llvm`

<blockquote>

##
[0.14.4](hugr-llvm-v0.14.3...hugr-llvm-v0.14.4)
- 2025-02-24

### New Features

- add xor to logic extension (#1911)
- *(hugr-llvm)* Add extension points to `PreludeCodegen` for customising
string lowering (#1918)
</blockquote>

## `hugr-passes`

<blockquote>

##
[0.14.3](hugr-passes-v0.14.2...hugr-passes-v0.14.3)
- 2025-02-05

### Bug Fixes

- Export `RemoveDeadFuncsError` (#1883)
- const-folding Module keeps at least "main" (#1901)

### Documentation

- Fix deprecation warning messages (#1891)
</blockquote>

## `hugr-cli`

<blockquote>

##
[0.14.1](hugr-cli-v0.14.0...hugr-cli-v0.14.1)
- 2024-12-18

### New Features

- Print `hugr-cli`'s correct version when using '--version' (#1790)
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).
@hugrbot hugrbot mentioned this pull request Feb 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants