CARVIEW |
Select Language
HTTP/2 200
date: Fri, 18 Jul 2025 13:15:47 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"65f5f0666da4b3e157e88844ec6d6629"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=MFlG4WnHEbxLzOxc58FoUsUQVGa3GnPfPOVISzkJ6VEt%2BNupg%2F9yodCIL2EMRlM0dzvYgCVILxZm3OyJDVVUOTU5mlgh1jBo24x6H8r%2FW6CDEMjM2WZ1FhhVf4r8bKaQCGPsfXkt97tIZbggCB7s3749ZwN2YBdndO%2F1X5N3iIA%2BKrZI5r82e0BLKpSK7ajeYUdoHXdD89amBMpU7Xlfzb36IDE6%2BPGSy%2BNr%2F5KsNWkQFepE7X7bRrpiIlP7%2Fu9xVo3RYpsFXXsHJz8qtq%2Fb%2Fw%3D%3D--O0fM9i%2BTkoZC4JKw--5Xn7E4d%2FxyAtLUPUc6LKeA%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.903561223.1752844547; Path=/; Domain=github.com; Expires=Sat, 18 Jul 2026 13:15:47 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Sat, 18 Jul 2026 13:15:47 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: 9150:2122AD:F2962A:1215CCE:687A4902
Compiler Assumptions · google/closure-compiler Wiki · GitHub
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Compiler Assumptions
Laura Harker edited this page Aug 20, 2019
·
11 revisions
To allow for better optimizations in the general case, the compiler makes various assumptions. This is an attempt to document these assumptions more fully.
There are two main kinds of assumptions the compiler makes.
- Assumptions about how the code you pass to Closure Compiler interacts with code the compiler does not see. Examples include browser APIs, JSON data, and libraries you include but do not compile. See https://developers.google.com/closure/compiler/docs/api-tutorial3#mixed.
- Assumptions about patterns that are valid JavaScript, but do not work in the compiler. See examples below.
The most important assumptions are described in Understanding the Restrictions Imposed by the Closure Compiler, however there are some additional assumptions.
- Name references are assumed to never throw, as described here
- Property reads are assumed to be side effect free, as described here. We support getters only if they are side-effect free
- In ADVANCED mode, property sets do not have arbitrary side-effects (it is ok to remove property writes if the property is never read), as described here
- The original value of Function.length may not be preserved, as described here.
- toString and valueOf are assumed to be side-effect free.
- instanceof is assumed to never throw
General:
- "undefined", "NaN" and "Infinity" have not been externally redefined.
- Object, Array, String, Number and Boolean have not been redefined. Standard methods on Object, Array, String, Number and Boolean have not been redefined in a way that breaks the original contract.
Debugging compiled code is difficult. Here are some basic tips:
- The Closure Compiler debugger is useful for testing the compiler on small code samples. It's also helpful for creating smaller repros.
- The Closure Compiler supports source maps
- The
--debug
flag makes name mangling less confusing. The compiler gives variables and properties more meaningful names. - The
--formatting=PRETTY_PRINT
orformatting=PRETTY_PRINT_INPUT_DELIMITER
flags make the output code more readable. - The
--print_source_after_each_pass
flag print all the source code to stdout after each compiler pass. It's helpful when determining what compiler pass is responsible for breaking your code.
Ask the closure-compiler-users mailing list if you're stuck, or if you don't know whether a compiler behavior is a bug or caused by violating a compiler assumption.
Clone this wiki locally
You can’t perform that action at this time.