{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":739504278,"defaultBranch":"main","name":"openqasm3_parser","ownerLogin":"Qiskit","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-01-05T18:13:49.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/30696987?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1714707666.0","currentOid":""},"activityList":{"items":[{"before":"de35ee57c3f6660d33e122f8a0d5b9739b968e31","after":"87e5fbfff3f696935e76c67716e18cad5a58b75e","ref":"refs/heads/main","pushedAt":"2024-05-16T12:52:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Fix broken pipe in run_tests_less.sh. (#219)\n\nRunning the script (prior to this PR) results in: `./run_tests_less.sh: 12: Syntax error: \"&\" unexpected`.\r\n\r\nThis is because plain `sh` (Bourne shell) does not support the `bash` shorthand `|&` for `2>&1 |`.","shortMessageHtmlLink":"Fix broken pipe in run_tests_less.sh. (#219)"}},{"before":"0b3739c2cf8fe85d9d125d546c029cc131c5a9fa","after":"de35ee57c3f6660d33e122f8a0d5b9739b968e31","ref":"refs/heads/main","pushedAt":"2024-05-03T03:34:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Release version 0.6.0 (#218)\n\nThis version consists of a few changes to improve compatibility\r\nwith the Qiskit OQ3 importer.","shortMessageHtmlLink":"Release version 0.6.0 (#218)"}},{"before":"5162cf87e75e55d5f3eafb8e18b39bcfbe43ca47","after":"0b3739c2cf8fe85d9d125d546c029cc131c5a9fa","ref":"refs/heads/main","pushedAt":"2024-05-02T22:12:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Improvements to `SymbolTable::gates` function (#217)\n\n* Filter U gate from output of SymbolTable::gates\r\n\r\nThe Qiskit importer otherwise needs to filter this gate out.\r\nOther consumers probably would do so as well. If it is useful in\r\nantother context, we can add an option to include the U gate\r\n\r\nReview comment: https://github.com/Qiskit/qiskit/pull/12087#discussion_r1586950430\r\n\r\n* Use impl trait for SymbolTable::gate return type\r\nSo we return an iterator, not a `Vec`.","shortMessageHtmlLink":"Improvements to SymbolTable::gates function (#217)"}},{"before":"92dead66a0f27d5a12ec301d10293f6e453b0034","after":"5162cf87e75e55d5f3eafb8e18b39bcfbe43ca47","ref":"refs/heads/main","pushedAt":"2024-05-02T19:36:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Improve code quality in symbols.rs (#215)\n\n* Add docstrings and an assert\r\n\r\n* Add doc strings and comments\r\n\r\n* Remove scope_level from SymbolRecord\r\n\r\nThis was unused. There was a comment about \"awkward\" scope numbering,\r\nand indeed some kind of awkward numbering. I removed all of that as\r\nwell. We can probably figure it out again quickly if and when needed.","shortMessageHtmlLink":"Improve code quality in symbols.rs (#215)"}},{"before":"59cc7787a969d3175a045413250b1a53b6665e72","after":"92dead66a0f27d5a12ec301d10293f6e453b0034","ref":"refs/heads/main","pushedAt":"2024-03-29T02:01:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Fix several bugs in type checking and explicit and implicit casting (#213)\n\nThese are mostly in classical declaration statements.\r\nSeveral tests have been added.\r\n\r\nCloses #208","shortMessageHtmlLink":"Fix several bugs in type checking and explicit and implicit casting (#…"}},{"before":"f6722599013da53044e01a205fb47cccd9eeb8d4","after":"59cc7787a969d3175a045413250b1a53b6665e72","ref":"refs/heads/main","pushedAt":"2024-03-28T19:00:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Add tests of the example code in the OQ3 spec (#212)\n\nThis is the start of a big project. Especially becaue a good amount of the\r\ncode fails. This is in part because we have been increasing the amount of\r\nsemantic analysis. This is good because less incorrect code is silently\r\nallowed. However the are many false positives.\r\n\r\nThis exercise is a good way to identify and organize features that\r\nare not supported or that have bugs.\r\n\r\nThis commit covers all of \"comments.rst\" and 16 percent of the file\r\n\"types.rst\".","shortMessageHtmlLink":"Add tests of the example code in the OQ3 spec (#212)"}},{"before":"233f71d3b111237acf5d1c228c7a42cfbeb2f3a1","after":"f6722599013da53044e01a205fb47cccd9eeb8d4","ref":"refs/heads/main","pushedAt":"2024-03-28T17:46:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Add SymbolTable::dump (#209)\n\nFor diagnostics","shortMessageHtmlLink":"Add SymbolTable::dump (#209)"}},{"before":"570db464b8f3677cf7ae3af6943dba79f7a6aa47","after":"233f71d3b111237acf5d1c228c7a42cfbeb2f3a1","ref":"refs/heads/main","pushedAt":"2024-03-28T17:13:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Remove unused run_rustfmt.sh (#207)\n\nI added this before publishing in order to run rustfmt on only select portions of the code\r\nwhile I vetted the results. For example sometimes comments are moved to places that change\r\ntheir intended purpose. Then Matthew formatted the entire code base and made a PR. So I\r\nthought, ok we can take the plunge. But I neglected to remove this script.","shortMessageHtmlLink":"Remove unused run_rustfmt.sh (#207)"}},{"before":"88de3768e495581a294e4c92cb1ae57add3432f9","after":"570db464b8f3677cf7ae3af6943dba79f7a6aa47","ref":"refs/heads/main","pushedAt":"2024-03-28T03:24:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Record error for statements in global scope where disallowed (#206)\n\nSome statements are not allowed except in global scope.\r\n`def`, `qubit`, `gate` `array` declarations.\r\n\r\nThis commit records a semantic error in this case.","shortMessageHtmlLink":"Record error for statements in global scope where disallowed (#206)"}},{"before":"35131ef88f8dcc454533284c2ba5e51b3c142321","after":"88de3768e495581a294e4c92cb1ae57add3432f9","ref":"refs/heads/main","pushedAt":"2024-03-28T02:09:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Check types and do casting in classical declarations (#205)\n\nImplement checking compatibility of types of lhs and rhs in classical\r\nassignment statement. If an implicit cast is needed, add an explicit\r\ncast.\r\n\r\nPrior to this commit there was essentially nothing in place to do\r\nthese things (just a very small amount, and broken at that). This is\r\ncertainly not the end of the story. There will be edge cases. But this\r\nis a good start which should capture many common scenarios.\r\n\r\nSince we are developing quickly and writing tests for this ASG is\r\nvery tedious and verbose, we have not been testing very carefully.\r\nHowever, the kind of thing done in this commit is inherently fragile,\r\nso we need to begin with more testing.\r\n\r\nCloses #203","shortMessageHtmlLink":"Check types and do casting in classical declarations (#205)"}},{"before":"e1c38cb664b260e7b2b44b9771cea3c69c39f049","after":"35131ef88f8dcc454533284c2ba5e51b3c142321","ref":"refs/heads/main","pushedAt":"2024-03-27T22:11:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Fix bug when initializing bit declaration with measurement (#202)\n\nThis bug actually happens with any initializer of a bit from\r\na bit type.\r\n\r\nThis commit fixes this bug. However the type checking in classical\r\ndeclaration statements is still broken in general.\r\n\r\nCloses #200","shortMessageHtmlLink":"Fix bug when initializing bit declaration with measurement (#202)"}},{"before":"55bec9a9ef8f9f87b35a741e21795dcc1ca42184","after":"e1c38cb664b260e7b2b44b9771cea3c69c39f049","ref":"refs/heads/main","pushedAt":"2024-03-27T21:44:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Modify the parser to make importing to Qiskit easier or possible (#201)\n\n* Modify the parser to importing to Qiskit easier or possible\r\n\r\nThe parser no longer is expected to parse bogus gate definitions\r\nfrom stdgates.inc. Rather, symbols are entered as if it had been\r\nparsed. This requires modifying how the Qiskit importer works.\r\n\r\nThe main change here is implementing `SymbolTable::gates`. This\r\nreturns some information on all gates found in the symbol table.\r\nIncluded is the minimal information required for the Qiskit importer\r\nto map `SymbolId`s to Qiskit gates.\r\n\r\n* A smaller convenience:\r\n Add GateDeclaration::num_params() for convenience\r\n\r\n* Remove `struct Identifier` from asg.rs\r\n\r\nAs noted in a comment, having enum variants `Identifier(Identifier)`\r\nwhere the field is a `struct Identifier` is not necessary, unless we\r\nwant to carry an extra copy of the name as a `String` for convenience.\r\nThis is a big price to pay for this convenience, which has not been used\r\nfor anything.\r\n\r\nThis commit removes `struct Identifier`. This also makes asg.rs more\r\nconsistent, since some of the variant already have the form `Identifier(SymbolIdResult)`\r\n\r\n* Update two out-of-date doc strings\r\n\r\n* Refactor symbol lookup for flexibility\r\n\r\nLooking up symbols has been refactored a bit. A method was added\r\nthat either returns an existing binding or makes a new one. It always\r\nreturns a `SymbolId` rather than a `Result<...>`.\r\n\r\nThis method will be used for hardware qubits.\r\n\r\n* Remove methods rendered unneeded after changing data type\r\n\r\nThe types of the fields of `Type::Gate` were changed to unsigned.","shortMessageHtmlLink":"Modify the parser to make importing to Qiskit easier or possible (#201)"}},{"before":"29b26a40a31a3a4696bf1d1c1288cb0b425ad56c","after":"55bec9a9ef8f9f87b35a741e21795dcc1ca42184","ref":"refs/heads/main","pushedAt":"2024-03-26T19:01:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Update README.md\n\nAdd a paragraph on motivation for the existence of this repo.","shortMessageHtmlLink":"Update README.md"}},{"before":"ea3ab9c002eb314241f3c7ee7af1727eca18b135","after":"29b26a40a31a3a4696bf1d1c1288cb0b425ad56c","ref":"refs/heads/main","pushedAt":"2024-03-26T18:49:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Correct typo in README.md","shortMessageHtmlLink":"Correct typo in README.md"}},{"before":"dac0d7aaa54dc61f5d6909e98978ffbc0d02a84a","after":"ea3ab9c002eb314241f3c7ee7af1727eca18b135","ref":"refs/heads/main","pushedAt":"2024-03-26T18:13:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Add more documentation on contributing (#199)","shortMessageHtmlLink":"Add more documentation on contributing (#199)"}},{"before":"22b55cc1582f1c98180099dca1f224d0fab11fd8","after":"dac0d7aaa54dc61f5d6909e98978ffbc0d02a84a","ref":"refs/heads/main","pushedAt":"2024-03-26T17:06:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Add a bit of info on contributing to README.md (#198)","shortMessageHtmlLink":"Add a bit of info on contributing to README.md (#198)"}},{"before":"5305ac349f69db705f0bd8e9f422bfd2c238f792","after":"22b55cc1582f1c98180099dca1f224d0fab11fd8","ref":"refs/heads/main","pushedAt":"2024-03-26T02:45:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Set version to 0.5.0 (#197)\n\nSeveral more features have been implemented since 0.4.0\r\nSome incompatible changes have been made. Some of this will\r\nbe noted in release notes.","shortMessageHtmlLink":"Set version to 0.5.0 (#197)"}},{"before":"a421dff647fb3828b0f142fe9e111ff4f712a309","after":"5305ac349f69db705f0bd8e9f422bfd2c238f792","ref":"refs/heads/main","pushedAt":"2024-03-26T02:19:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Sorted the array elements in ast_src.rs (#189)","shortMessageHtmlLink":"Sorted the array elements in ast_src.rs (#189)"}},{"before":"5ccf7af749aa26eaee5ffd1472f3f7ad74e0cec8","after":"a421dff647fb3828b0f142fe9e111ff4f712a309","ref":"refs/heads/main","pushedAt":"2024-03-26T01:59:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Implement imaginary literals (#194)\n\nOQ3 has no imaginary type, only complex type (I don't know of any general\r\npurpose language that differs in this respect). But it is convenient to\r\nimplement and use imaginary literals in order to handle expressions like\r\n`10 im`, `10im`, `12.3 im`, `12.3im`, etc.\r\n\r\nWe already have implemented all the machinery for timing literals. Lexing and\r\nmaniuplating imaginary literal is structurally identical, so we can use the\r\nmachinery for timing literals at (almost) no extra cost in coding or complexity.\r\nA disadvantage is that imaginary and timing literals don't belong in the same\r\ncategory. IDK, we could rename everything to `timing_or_imaginary.\r\n\r\nAn imaginary float literal can be stored and manipulated in exactly the same\r\nway, with the same semantics as a real float literal. The exception is the\r\nlast step of specifying the type. For this reason we break with the precedent\r\nof all other variants of enums in asg.rs by reusing a the struct field for\r\nreal literals. That is, we have:\r\n\r\n```\r\nFloat(FloatLiteral),\r\nImaginaryFloat(FloatLiteral),\r\n```\r\nThe type (float or complex float) is stored at a higher level as it is for\r\nall expressions.","shortMessageHtmlLink":"Implement imaginary literals (#194)"}},{"before":"8b7a788897d1790dcb98b39ed51c415c4eb2e901","after":"5ccf7af749aa26eaee5ffd1472f3f7ad74e0cec8","ref":"refs/heads/main","pushedAt":"2024-03-25T04:49:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Implement complex type specification (and declaration) (#193)\n\nThe following are now parsed correctly and construct the correct type\r\nin `oq3_semantics`:\r\n`complex w;`\r\n`complex[float] w;`\r\n`complex[float[32]] w;`\r\n\r\nNote that this does not yet implement complex literals. Nor any other\r\nbehavior peculiar to complex numbers.","shortMessageHtmlLink":"Implement complex type specification (and declaration) (#193)"}},{"before":"3396068eda4d1edf215c7ffa1e50a2554fb37cb1","after":"8b7a788897d1790dcb98b39ed51c415c4eb2e901","ref":"refs/heads/main","pushedAt":"2024-03-25T01:24:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Various small changes while preparing to improve type checking (#192)\n\n* Remove an unecessary `clone` and add comment\r\n* Add some methods for asg::IndexOperator\r\n* Rename some functions for consistency.\r\n* Corrections in comments.\r\n* Make some improvements in methods in types.rs\r\n Some of these methods are not completed yet.\r\n But this brings it a bit closer.\r\n* Add `equal_up_to_shape`. Try to make this and\r\n `equal_up_to_dims` do the correct things","shortMessageHtmlLink":"Various small changes while preparing to improve type checking (#192)"}},{"before":"682d9b6a89c39522d9f54e1f78dc7952be231340","after":"3396068eda4d1edf215c7ffa1e50a2554fb37cb1","ref":"refs/heads/main","pushedAt":"2024-03-23T02:40:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Check types of LHS and RHS in assignment \"to identifier\" (#187)\n\nBefore there was no checking that the types of the LHS and RHS were valid in assignment, with the\r\nexception of checking constness.\r\n\r\nThis commit introduces some checking in the case that the LHS is represented by an identifier\r\n(i.e. not an indexed identifier) Checking if the LHS is an indexed identifier, for example `b[1] =\r\nmeasure q;` remains to be implemented\r\n\r\n* If types have same base array type, but dimensions differ, an `IncompatibleDimensionError` is recorded. This\r\n is tested, for example, with\r\n```\r\nbit[3] b;\r\nqubit[2] q;\r\nb = measure q;\r\n```\r\n\r\n* If the RHS is an integer literal and the LHS is unsigned, then the sign of the literal is examined and\r\n the RHS is wrapped in `Cast` if the sign is positive. Otherwise `CastError`.\r\n\r\n* If the type of the RHS can be cast to that of the left, the RHS is wrapped in `Cast`.\r\n\r\n* Otherwise `IncompatibleTypes` is recorded.\r\n\r\nSeveral tests of these new behaviors are included.\r\n\r\nA few details of things added:\r\n\r\n* Fix erroneous `Type` of integer literal. Before we had UInt even though in the data we stored the sign\r\n of the literal. The type is now `Int`.\r\n* Introduce semantic errors: `IncompatibleDimensionError` and `CastError`. The latter is for trying to\r\n cast a negative integer literal to an unsigned type. We could perhaps to do better. Perhaps just make\r\n this an `IncompatibleTypes` error instead.","shortMessageHtmlLink":"Check types of LHS and RHS in assignment \"to identifier\" (#187)"}},{"before":"5200b3bc1a828ceeaab2e12c308c9311333de165","after":"682d9b6a89c39522d9f54e1f78dc7952be231340","ref":"refs/heads/main","pushedAt":"2024-03-22T04:25:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Use everywhere stdgates.inc rather than stdgates.qasm (#186)\n\nThere was some confusion. In particular the previous commit used\r\nthe incorrect name.","shortMessageHtmlLink":"Use everywhere stdgates.inc rather than stdgates.qasm (#186)"}},{"before":"4694478f1ac4ba1534dbee8d6763ea781a51a2ff","after":"5200b3bc1a828ceeaab2e12c308c9311333de165","ref":"refs/heads/main","pushedAt":"2024-03-22T03:21:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Create symbols for gates in standard library (#185)\n\nThis commit implements the following. Upon encountering `include \"stdgates.qasm\"` symbols\r\nare created for gates in the standard library according to the spec. No corresponding file\r\nneed exist. None is actually read or included. If there is such a file in the include\r\npath, it is ignored.\r\n\r\nSymbols carry a name and a type. The type `Gate` is parameterized by number of qubits and\r\nnumber of classical parameters. So the symbols created contain all the information that a\r\ndeclaration (but not definition) of the gate would carry. At the level of this\r\nparser/analyzer, this allows the gates to be used (called) after the include statement and\r\nallows type-checking to ensure that they are called with valid parameters (The latter is\r\nonly partly implemented at the time of this commit.)\r\n\r\nIf a name in the standard library is already bound, then a semantic error is recorded.\r\nSince no real file is actually included, the location associated with the error is that of\r\nthe `include` statement.","shortMessageHtmlLink":"Create symbols for gates in standard library (#185)"}},{"before":"e120cab13f430772cee9bc6d49f44331f81ae570","after":"4694478f1ac4ba1534dbee8d6763ea781a51a2ff","ref":"refs/heads/main","pushedAt":"2024-03-21T02:28:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Give correct type to qubit register param in `def` (#184)\n\nPreviously the type of any quantum parameter was `Qubit`. This\r\ncommit gives a qubit register the correct type, that is a one\r\ndimensional qubit array.\r\n\r\nA test was in place that verified the wrong behavior. Now it verifies\r\nthe correct behavior.\r\n\r\nUnrelated changes made while debugging: Some default match arms\r\nwere changed to be explicit.","shortMessageHtmlLink":"Give correct type to qubit register param in def (#184)"}},{"before":"992418a27d62622695aaa5a34e23be59c4f8b87c","after":"e120cab13f430772cee9bc6d49f44331f81ae570","ref":"refs/heads/main","pushedAt":"2024-03-20T19:27:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Mostly implement subroutine definition (def) (#181)\n\nThis commit roughly implements parsing subroutine definition end-to-end.\r\nThere are likely loose ends and edge cases that will become apparent.\r\n\r\nA few tests are included. One test exposes a bug. The corresponding issue\r\nwill be opened once this commit merges.","shortMessageHtmlLink":"Mostly implement subroutine definition (def) (#181)"}},{"before":"9705949cca89047e68c75aee66ea84fd32e4c55a","after":"992418a27d62622695aaa5a34e23be59c4f8b87c","ref":"refs/heads/main","pushedAt":"2024-03-19T03:10:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Remove some cruft and correct doc strings related to prev commit (#180)","shortMessageHtmlLink":"Remove some cruft and correct doc strings related to prev commit (#180)"}},{"before":"b5702e0fee4fa21b02c2873b83fc245f875baa9d","after":"9705949cca89047e68c75aee66ea84fd32e4c55a","ref":"refs/heads/main","pushedAt":"2024-03-19T03:03:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Never run parser if there are lexer errors (#179)\n\nThe OQ3 parser does\r\n lexer -> parser (to ast) -> semantic analysis\r\n\r\nWe want to impose a couple of invariants that were not in place in the r-a code:\r\n1. If there are any lexing errors, parsing is not performed\r\n2. If there are any parsing (to ast) errors, then semantic analysis is not performed.\r\n\r\nThis commit implements item number 1.\r\n\r\nWe follow r-a in pushing lexing and parsing errors onto a single vector. However, because\r\nof rule 1, the errors in this vector will be either all lexer errors or all parser\r\nerrors. The semantic analysis code receives a structure representing a parsed file\r\n(actually a structure including parsed included files) and errors. If there are any\r\nerrors, semantic analysis is aborted. At the level of the semantic analysis, there is no\r\nneed to check whether the errors returned are from lexing or parsing (and therefore\r\nwhether there is any parse tree at all).\r\n\r\nThe immediate impetus for this PR is that pragma statements in which \"#pragma\" is\r\nmisspelled are processed as tokens `InvalidIdent` and a lexing error is recorded.\r\nPreviously, lexing and parsing errors were lumped together and parsing always\r\nproceeded. This would result in spurious parser errors added to the lexer error. Rather\r\nthan changing the parser (to ast) to recover from lexer errors, we don't allow the parser\r\nto see lexer errors. If the parser detects a lexer error, it should throw an error.","shortMessageHtmlLink":"Never run parser if there are lexer errors (#179)"}},{"before":"b3fbaed2f6e17c7e95f9e4c6f9c3ee1ea0c05f66","after":"b5702e0fee4fa21b02c2873b83fc245f875baa9d","ref":"refs/heads/main","pushedAt":"2024-03-01T23:45:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Set version to 0.4.0 (#178)","shortMessageHtmlLink":"Set version to 0.4.0 (#178)"}},{"before":"fba5539ce0209fce773a2d94974e94ec0d473ec8","after":"b3fbaed2f6e17c7e95f9e4c6f9c3ee1ea0c05f66","ref":"refs/heads/main","pushedAt":"2024-03-01T23:35:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jlapeyre","name":"John Lapeyre","path":"/jlapeyre","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1969884?s=80&v=4"},"commit":{"message":"Support declaring single hardware qubits (#177)\n\nStatements like `qubit $1;` are supported.\r\n\r\nThis commit also undoes the previous commit (last commit before tagging 0.3.0) that\r\nimproved the error handling for attemted declaration of hardware qubits.\r\n\r\nAPI CHANGE: new variant in asg::Stmt\r\nThe variant is `Stmt::DeclareHardwareQubit(DeclareHardwareQubit)`\r\n\r\nThe struct `DeclareHardwareQubit` has method `name` to retrieve an instance of\r\n`asg::HardwareQubit`. Note that `asg::HardwareQubit` is not new in this\r\ncommit.","shortMessageHtmlLink":"Support declaring single hardware qubits (#177)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAES5-CrAA","startCursor":null,"endCursor":null}},"title":"Activity · Qiskit/openqasm3_parser"}