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: consider static attributes that are inlined in the template #14249

Merged
merged 8 commits into from
Nov 11, 2024

Conversation

paoloricciuti
Copy link
Member

@paoloricciuti paoloricciuti commented Nov 10, 2024

Closes #14241

cc. @benmccann if you want to try the output in the playground

Before submitting the PR, please make sure you do the following

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • Prefix your PR title with feat:, fix:, chore:, or docs:.
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.

Tests and linting

  • Run the tests with pnpm test and lint the project with pnpm lint

Copy link

changeset-bot bot commented Nov 10, 2024

🦋 Changeset detected

Latest commit: 88b1115

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
svelte Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@Rich-Harris
Copy link
Member

preview: https://svelte-dev-git-preview-svelte-14249-svelte.vercel.app/

this is an automated message

Copy link
Contributor

Playground

pnpm add https://pkg.pr.new/svelte@14249

return false;
// if it's not a text attribute but it's an inlinable expression
// we will inline it in the template so we can still consider it static
return is_inlinable_expression(
Copy link
Member

Choose a reason for hiding this comment

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

Returning here with true could lead to bugs down the road in case a condition afterwards would return false

Copy link
Member Author

Choose a reason for hiding this comment

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

But the subsequent checks are only for static text attributes right?

Copy link
Member Author

Choose a reason for hiding this comment

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

Uh i guess except the last one which is about the node name itself...let me see what are we doing in that case

Copy link
Member Author

Choose a reason for hiding this comment

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

Very good catch !

Copy link
Member Author

Choose a reason for hiding this comment

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

Oh but actually i'm stuped because the rest only checks for the name so it can be problematic there too

Copy link
Member Author

Choose a reason for hiding this comment

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

I moved this check last and moved the check for node.name outside the for loop since it didn't had to be inside the loop

Copy link
Member Author

Choose a reason for hiding this comment

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

Oh but wait it's not all actually...because i need to loop over every attribute before returning true

Copy link
Member Author

Choose a reason for hiding this comment

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

Ok now it's fixed for real...i wonder if we should add some snapshots for this case to prevent easy regressions

Copy link
Contributor

@trueadm trueadm Nov 11, 2024

Choose a reason for hiding this comment

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

Let's add some snapshot tests, this code is very fragile without.

@paoloricciuti paoloricciuti merged commit 0fa43e2 into main Nov 11, 2024
11 checks passed
@paoloricciuti paoloricciuti deleted the inlined-attribute-static branch November 11, 2024 13:55
@github-actions github-actions bot mentioned this pull request Nov 11, 2024
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.

Compiler output bloat
5 participants