Commit Graph
1200 Commits
Author SHA1 Message Date
ba2cfc2d0d Weaken digit separator placement rules (#1983)
[Proposal #143: Numeric literals](https://github.com/carbon-language/carbon-lang/blob/trunk/proposals/p0143.md) added digit separators with strict rules for placement. It missed some use-cases. In order to address this, remove placement rules for numeric literals.

Related issue: #1485 

Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
Co-authored-by: Richard Smith <richard@metafoo.co.uk>
2022-08-25 14:52:43 -07:00
07d6a03b32 Change raw string literal syntax: [#]*" represents single-line string and [#]*''' represents block string (#1360)
Use `"` for simple string literals and `'''` for block string literals.

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
Co-authored-by: Richard Smith <richard@metafoo.co.uk>
2022-08-25 14:04:22 -07:00
Wolff Dobson cb670aa6a1 Make Compiler Explorer easier to find (#2100)
Our "Getting Started" section doesn't mention the Compiler Explorer as a first step.  Compiler Explorer already has the Carbon explorer installed, so it would save interested folks a lot of time if they just want to try code out before installing a lot of tools to build from scratch.

This is a repeat link of the status section, but given the title of this section ("Getting Started") it's quite possible visitors end up here before they read the status section.
2022-08-25 09:10:07 -07:00
pk19604014 a937d911cb Changed sized_type_literal parsing logic to not crash (with CARBON_CHECK) and instead report an error with YYERROR (#2102) 2022-08-25 09:09:15 -07:00
pk19604014 98d95cd188 Cleanup: since explorer_fuzzer is now a standard cc_fuzz_test, and runs on all files in the corpus, there's no need for fuzzer_util_test to do the same manually
Before:
```
//explorer/fuzzing:fuzzer_util_test                                      PASSED in 18.5s
```

After:
```
//explorer/fuzzing:fuzzer_util_test                                      PASSED in 0.3s
```
2022-08-25 09:06:45 -07:00
Jon Ross-Perkins 25d824ef15 Pre commit update (#2098)
codespell now sees "falsy" as a mis-spelling of either "false" or "falsely"; adding it since I think this it's occasionally used this way in programming. e.g., https://developer.mozilla.org/en-US/docs/Glossary/Falsy

Adjusts to use the new check-copyright support for lines starting with a dash.
2022-08-25 08:56:46 -07:00
pmqtt f957d4d87d Feature generic choice (#2042)
Implementation of generic choices!

I hope it is useful!
2022-08-24 11:30:04 -07:00
Enzo Venturi 499188bfcf scripts: update bash scripts (#2046) 2022-08-23 14:30:27 -07:00
ethangandJon Ross-Perkins 2f3ff12704 Adding Windows support for building Carbon with Bazel. (#1754)
This PR fixes issue #298. I am attempting to build Carbon using Bazel on Windows, without the need to go through WSL. This is still a work in progress, below is a list of issues I have discovered and my fixes for them.

- Windows does not support Homebrew; however, I was able to properly install all of the required packages through [Chocolatey](https://chocolatey.org/). This was my first time using the Chocolatey package manager, yet it was fairly easy to use. I believe there are other options as well for Windows.
- As is mentioned in issue #298, your Windows installation must be running in [Developer Mode](https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development). This will allow unprivileged users to create symlinks during the build process.
- As it currently stands in trunk, clang_configuration.bzl will fail when attempting to run the method `_compute_clang_cpp_include_search_paths` on Windows. I have discovered that this is because Clang++.exe fails to execute if you provide it with an input file that does not exist. Thus, I have the build script generate an empty temp file in the Bazel repo for Clang to use when running the above method. 
- A cc toolchain specifically for Windows was created in clang_toolchain.BUILD. I simply mimicked what was done for other platforms, I apologize if this is incorrect since I am fairly new to Bazel.

As I understand it, the next step is to configure clang_cc_toolchain_config.bzl to support the new Windows toolchain. I intend to continue working on this, however as I stated I am quite new so help is seriously appreciated!

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
2022-08-23 13:28:47 -07:00
Jon Ross-Perkins 065d5224be Remove reviewer setting, let autoassign take over (#2094)
Fixes #1841

The current autoassign doesn't work, but I'm trying to fix it (e.g., #2093)
2022-08-23 12:13:41 -07:00
Jon Ross-Perkins 2bc6da2967 Try a different autoassign action (#2093)
This removes the separate data files, which have been failing to load properly ([example](https://github.com/carbon-language/carbon-lang/runs/7957047892?check_suite_focus=true)). This one wasn't working previously, but hopefully will with these changes (and it might've also just been a pull_request_target issue, but the silent "Resource not accessible by integration" failures aren't great).
2022-08-23 12:13:19 -07:00
Jon Ross-Perkins ed3a81aa08 Add action for wiki change notifications. (#2089)
Wiki can either be "require push access" or "everyone" -- apparently there's no other option. I've set it to "everyone" so that contributors can make edits without needing push access. So the options as I see it are:

- Leave wiki as "everyone" can edit, use this for notifications.
    - GitHub doesn't give notifications for wiki edits. This is trying a different approach for notifications.
- Grant push access to a larger group (contributors), don't add CODEOWNERS.
    - Not sure this is the right choice because of the implications around merges, but again maybe it'd be fine and we can expect the approval requirement to work out.
- Grant push access to contributors, add CODEOWNERS.
    - This causes the auto-assignment to CODEOWNERS that we don't want. (details in https://github.com/carbon-language/carbon-lang/pull/1367)
- Create a separate wiki repo so that we can differently handle push access.
    - This seems overly complex a solution though.

I'm hoping this approach works.
2022-08-23 12:11:58 -07:00
Vineeth B V 8c85fa2744 Added unicode support (#2027)
Can parse Unicode literals following the format \u{HHHH...} in a string
2022-08-19 13:39:11 -07:00
Andy Soffer fd28f5f9a8 Add the beginnings of a RecursiveASTVisitor-based migration tool. (#2041)
The approach uses a RecursiveASTVisitor rather than matchers. Matchers
and callbacks do not compose neatly and introduce significant runtime overhead
over RecursiveASTVisitor when an action needs to be performed on most nodes.
2022-08-19 08:46:03 -07:00
Uriel García-Rivas 7935728b9c Add usage to gen_rtti.py script (#1861)
Specify `gen_rtti.py` script should be run from a target
2022-08-17 09:30:23 -07:00
Kareem Ergawyandergawy 3d44169199 Fix integer literal token printing. (#2050)
Summary:
An `llvm::APInt` is always treated as a signed value by `operator<<`;
check [1]. This resulted in printing incorrect values for tokens that
have their MSB set to 1. For example, a value 9 would be printed as -7
since its `APInt` object would be 4-bits wide. However, integer literals
are always tokenized without the sign character so it is safe to treat
the values as unsigned for printing pruposes.

[1] https://llvm.org/doxygen/APInt_8h_source.html

Co-authored-by: ergawy <kareem.ergawy@guardsquare.com>
2022-08-17 09:29:07 -07:00
Avinal Kumar d6c72e3d33 Specify specific source for pulling homebrew container (#2062)
- Since VS Code Dev container extention has a non-interactive shell, user
cannot select a specific image if there are multiple images under same
named authors.
- This fix ensures that images are only pulled from Docker Hub and no
interactive menu is presented.
- References: #1816, #1817
- Fixes #2043

Signed-off-by: Avinal Kumar <avinal.xlvii@gmail.com>
2022-08-17 09:03:32 -07:00
David Poliakoff b342fac618 Spelling fix in the generics overview doc (#2016)
Minor usage fix in generics doc
2022-08-16 10:43:39 -07:00
Jon Ross-Perkins 15d1e07133 Unicode char limit (#2040)
The `\u{HHHH...}` can be an arbitrary length, potentially including `\u{}`.
Restrict to 1 to 8 characters.
2022-08-16 09:41:52 -07:00
pseyfert c9855c4e01 Update syntax files for vim (#2039)
Set comments and commentstring.

These variables are documented e.g. [here](https://vimhelp.org/options.txt.html#%27comments%27).

For comparison other language plugins also set these two variables [vim-go](https://github.com/fatih/vim-go/blob/master/ftplugin/go.vim#L22) or [vim-toml](https://github.com/cespare/vim-toml/blob/main/ftplugin/toml.vim#L18).

I used these variables through the [tcomment](https://github.com/tomtom/tcomment_vim) plugin. e.g. gcc toggles whether the current line is commented in or out. Also standard vim folding (mark a section and hit zf appears affected by these settings).
2022-08-15 15:06:01 -07:00
90babcddc1 Revise associated types and interface parameters in Generics terminology (#1972)
Previous text was not clear, see https://discord.com/channels/655572317891461132/941071822756143115/1004607504396861540 .

Co-authored-by: Thomas Heller <thom.heller@gmail.com>
Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
2022-08-15 15:00:00 -07:00
Zenong Zhang e6651836df Fix source code location for dynamic unformed use in ReturnVar. (#2035)
The error message should point to the source code location of `ReturnVar`, instead of the declaration of the `returned var`.
2022-08-15 12:50:28 -07:00
Adrien Leravat b7ee1dfa22 docs: fix typo in generics overview.md (#2025)
PR for tiny fix to generics overview doc, as suggest here: https://github.com/carbon-language/carbon-lang/pull/1885/files#r943743464
2022-08-15 11:22:51 -07:00
Zenong ZhangandJon Ross-Perkins b28fd7ebc9 Implement more flows on unformed static analysis (#1923)
- Added detection of unformed usage with `return var`, control-flow statements and member access.
- Refactored the work flow: made flow facts a class and moved operations of flow facts into the class.
- Added, cleaned and renamed test cases. Some test cases for the dynamic unformed check were suppressed by the static check. They are now added back.

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
2022-08-15 10:53:42 -07:00
Kareem Ergawyandergawy d7957cc4e1 Move an llvm::Error return value instead of copying it. (#2030)
Summary:
Fixes a small compilation error where an llvm::Error variable was being
returned by copy rather than by move. The llvm::Error copy constructor
is deleted.

Co-authored-by: ergawy <kareem.ergawy@guardsquare.com>
2022-08-15 10:24:57 -07:00
Enzo Venturi f338f56502 docs: fix little writing issue (#2031) 2022-08-15 10:16:49 -07:00
pk19604014 4c47d87d95 Regenerated fuzzer corpus with regen_corpus.py (#2008)
To pick up proto updates (field renames etc.) and new carbon source samples added to testdata.

```
$ rm explorer/fuzzing/fuzzer_corpus/*
$ explorer/fuzzing/regen_corpus.py
```
2022-08-15 10:14:06 -07:00
Geoff Romer 4b56764f10 Fix link to accepted proposals (#2019) 2022-08-12 16:13:11 -07:00
Jon Ross-Perkins 21311334cb Switch to pull_request_target (#2014)
https://securitylab.github.com/research/github-actions-preventing-pwn-requests/#:~:text=The%20main%20differences%20between%20the,but%20not%20from%20external%20forks.

I'm hoping I actually have the cause of my issues right this time.
2022-08-12 11:57:25 -07:00
Jon Ross-Perkins efde2dcdd9 Switch token approach (#2013)
According to this run, the attempt to get write permissions failed:
https://github.com/carbon-language/carbon-lang/runs/7811743119?check_suite_focus=true

So I'm switching to an org secret, which I believe I can definitely make work.
2022-08-12 11:42:51 -07:00
Jon Ross-Perkins 767e712b47 Try adjusting permissions to label (#2012)
Context: https://github.com/carbon-language/carbon-lang/runs/7811528469?check_suite_focus=true

Permissions seem to be different from when I was testing, seeing if this is enough.
2022-08-12 11:27:09 -07:00
Jon Ross-Perkins 9b3f80c6d6 Switch proposal process from projects to labels (#1981)
This is being done because Projects v1 requires repo write access, a serious limitation for letting people use it. Projects v2 isn't a great option because it lacks event support. Labels are pretty stable in GitHub, so this switches to that.

Note this assumes we're fine renaming "decision: accepted" -> "proposal accepted", etc. There are two reasons for this:

1) To make it clear that this is a proposal-specific label, versus something like an issue for leads label.
2) Removing the colon because it was causing trouble with yaml syntax.

This also adds the "proposal draft" label, mainly to complete the taxonomy.

I was considering whether this should be a proposal itself, but it feels like maybe it's not necessary because it's a fairly low-key infrastructure change, and I'm not sure how much people were relying on the project board anyways.

I tested this in a personal repo, basically just poking at https://github.com/jonmeow/test/pull/2
2022-08-12 11:11:09 -07:00
Jon Ross-Perkins 6b3ea40283 Update leads questions process for labels (#1995)
Separately working on labeling everything and filing tracking issues as discussed.

For project columns, the result is:

"Blocking issues" -> gone, we haven't been using it
"Questions" -> "leads questions" label, open: https://github.com/carbon-language/carbon-lang/issues?
q=is%3Aissue+is%3Aopen+label%3A%22leads+question%22
"Resolved" -> "leads questions" label, closed: https://github.com/carbon-language/carbon-lang/issues?q=is%3Aissue+is%3Aclosed+label%3A%22leads+question%22+
"Needs proposal" -> file a tracking issue, remark on the linked issue
"Deferred" -> add the "long term" label: https://github.com/carbon-language/carbon-lang/issues?q=is%3Aissue+is%3Aopen+label%3A%22leads+question%22+label%3A%22long+term%22

Note the "long term" label overlaps with the automation that reminds people when we're inactive, so it's two birds, one stone.

This is part of #1898
2022-08-12 10:55:45 -07:00
09e4417431 Mark what is provisional in the design overview (#1984)
Also references were added to clarify that some features are not provisional.

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
Co-authored-by: Geoff Romer <gromer@google.com>
2022-08-11 14:48:35 -07:00
Krishna Agarwal bb0aac61a3 Typo fixes in proposals (#1965)
Some errors and typos in the proposals
2022-08-11 12:06:51 -07:00
josh11b 3276903cee Add alias use case example (#1980)
Motivated by [a conversation in #properties on Discord](https://discord.com/channels/655572317891461132/1007005822821347328/1007016175630295060).
2022-08-10 21:34:54 -07:00
Dennis Onyeka 45a5828bb4 Update low_context_sensitivity (#1970)
Corrected a Typo error on line 220
2022-08-09 15:36:12 -07:00
90598633ec Document a little about moderators and tiers (#1909)
Note, partly writing this down to make sure everyone's in agreement with what's written.

Co-authored-by: Geoff Romer <gromer@google.com>
Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
2022-08-09 15:35:03 -07:00
f754373786 For loop for arrays (#1753)
Co-authored-by: m new <michael.burzan@outlook.de>
Co-authored-by: Geoff Romer <gromer@google.com>
Co-authored-by: Richard Smith <richard@metafoo.co.uk>
2022-08-09 15:34:24 -07:00
2c921efe36 Fix for: missing check that deduced argument converts to type of parameter #1300 (#1918)
Fix #1300

Co-authored-by: m new <michael.burzan@outlook.de>
Co-authored-by: Richard Smith <richard@metafoo.co.uk>
2022-08-09 14:47:52 -07:00
Geoff Romer 4ed8180bc7 Make Rand deterministic (#1910)
Also re-enable auto-updating of Rand test (disabled in #1894)
2022-08-09 14:17:26 -07:00
Asmi AgarwalandJon Ross-Perkins f9bd01536b Fixed error (#1966)
Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
2022-08-09 09:09:33 -07:00
Krishna Agarwal 5d12c25bbe minor mistakes (#1952) 2022-08-09 09:00:07 -07:00
3405691582 7147ea0144 Make platform-specific mmap flags the exception. (#1929)
MAP_POPULATE is a Linux mmap flag that optionally assists read-ahead on
the mapping. It is nonstandard and omission does not affect the
underlying mapping, so fall back to not including the flag, rather than
the reverse.
2022-08-08 16:38:02 -07:00
Jon Ross-Perkins 21d39ef4f9 Add 'about' to group links so the description shows (#1958) 2022-08-08 12:10:37 -07:00
cabmeurer 8f80399bad Fix typo: Add missing backtick (#1959)
There was a small typo in the `contribution_tools.md` for `bazel test //...:all`
2022-08-08 10:42:22 -07:00
Jon Ross-Perkins d7613f5ef7 Updating links for shared drive and access notes (#1933)
Part of #1902 

Fixes #1904 

Regarding #1904, using #access-requests because I've decided I feel weird using any other channel for this (including #proposal-prs-and-process)
2022-08-08 09:11:00 -07:00
Chandler Carruth a4a3cf0136 Create a sync-repos action. (#1863)
This will allow us to automatically create and maintain specific repos
based on the main repository here, pulling key files like the license
and other infrastructure and pushing them systematically to a narrow
repo. Things like editor plugins that are best packaged and installed
from a separate repos can still be developed in a central place, even
potentially sharing common things like grammars where useful.

Currently this will maintain a Vim plugin repository out of the
`utils/vim` directory, but can be easily expanded for other systems.
2022-08-06 15:42:41 -07:00
Jon Ross-Perkins b9e6f82f5d Remove project flag (#1939)
Contributors can't do this right now (requires repo write permissions), need to investigate as part of #1898 (projects v1 vs v2 results may differ)
2022-08-06 14:22:37 -07:00
Metarsit 76a262c0e9 Format Bazel files and add argument to run buildifier on pre-commit (#1919) 2022-08-05 10:09:13 -07:00