gcc/rust/ChangeLog:
* parse/rust-parse-impl.h: Allow parsing full range expressions without
erroring out.
gcc/testsuite/ChangeLog:
* rust/compile/parse_range.rs: New test.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/rust/parse/rust-parse-impl.h
gcc/rust/ChangeLog:
* backend/rust-compile-expr.cc (CompileExpr::visit): Insert overflow
checks logic.
(CompileExpr::array_copied_expr): Insert overflow checks logic.
* backend/rust-compile-item.cc (CompileItem::visit): Insert overflow
checks logic.
gcc/rust/ChangeLog:
* expand/rust-macro-expand.cc (MacroExpander::match_matcher): Handle
fragments differently based on whether or not we are currently trying
to match a matcher in a repetition context.
(MacroExpander::match_n_matches): Use new `in_repetition` argum
gcc/rust/ChangeLog:
* ast/rust-ast-dump.h: Add shorthand `AST::Dump::debug` function to
dump an AST node on `stderr`.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/rust/ast/rust-ast-dump.h | 16
1 file changed, 16 insertions(+)
diff --git a/gcc/ru
gcc/rust/ChangeLog:
* checks/lints/rust-lint-scan-deadcode.h: Do not report public items
as dead code.
gcc/testsuite/ChangeLog:
* rust/compile/issue-1031.rs: Remove extraneous dead code warnings.
* rust/compile/issue-1289.rs: Likewise.
* rust/compile/test_
From: Philip Herron
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::TypeCheckBase):
Remove constructor.
(TypeCheckBase::coercion_site): Add `Location` argument to function.
* typecheck/rust-hir-type-check-base.h: Use
`TypeCheckBase::co
From: Philip Herron
In order to compile a block expression constant, the simplest way for us
was to reuse what code we have and to generate an artifical function which
does not get added to the translation unit. The constant then becomes
a CALL_EXPR to this artifical function which we can pass to
gcc/rust/ChangeLog:
* ast/rust-ast.h: Add assertions and accessors for fragment nodes.
* expand/rust-attribute-visitor.cc (AttrVisitor::visit): Fix expansion
context typo when visiting `InherentImpl` items.
(AttrVisitor::maybe_expand_expr): Use new Fragment accessor
gcc/rust/ChangeLog:
* expand/rust-macro-expand.cc (parse_many): Return early from parsing
loop if we encounter an error, and emit that error in the meantime.
Co-authored-by: philberty
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/rust/expand/rust-macro-expand.cc
gcc/rust/ChangeLog:
* ast/rust-ast.h: Improve assertions within ASTFragment API.
Co-authored-by: philberty
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/rust/ast/rust-ast.h | 47 ++---
1 file changed, 39 insertions(+), 8 deletions(-)
From: Philip Herron
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Add
more calls to `rust_debug` for development.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/rust/typecheck/rust-hir-type-check-expr.cc | 12
1 f
From: Philip Herron
This allows us to enforce better error handling on unify sites
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::unify_site): Add
better unification function with debug calls.
* typecheck/rust-autoderef.cc (AutoderefCycle::cy
From: Philip Herron
We are not fully setting TYPE_CANONICAL yet but we don't need to be as
strict as the C++ front-end yet. param_use_canonical_types is a command
line option we are not using either.
gcc/rust/ChangeLog:
* backend/rust-tree.cc (comptypes): Remove some C++ specific checks
From: Philip Herron
gcc/rust/ChangeLog:
* backend/rust-tree.cc (rs_type_quals): Comment out bad assertion
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/rust/backend/rust-tree.cc | 7 ---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/gcc/rust/backend/r
From: Philip Herron
We don't need to setup associated types when a trait does not contain any
associated types.
gcc/rust/ChangeLog:
* typecheck/rust-tyty-bounds.cc
(TypeBoundPredicate::contains_associated_types):
Check if a type bound predicate contains assocated types.
From: Philip Herron
Fixes #1518
gcc/rust/ChangeLog:
* typecheck/rust-tyty.h: Fix `is_concrete` for unit types with
substitutions.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/rust/typecheck/rust-tyty.h | 5 +
1 file changed, 5 insertions(+)
diff --git a/gc
From: liushuyu
... previously the exit condition was treated the same as the loop
condition (which is the inverse condition of the exit condition). Now
this is corrected.
gcc/rust/ChangeLog:
* backend/rust-compile-expr.cc (CompileExpr::visit): Properly formulate
exit condition w
From: Faisal Abbas <90.abbasfai...@gmail.com>
gcc/testsuite/ChangeLog:
* rust/compile/const7.rs: New test.
Signed-off-by: Faisal Abbas <90.abbasfai...@gmail.com>
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/testsuite/rust/compile/const7.rs | 12
1 file chan
From: Philip Herron
Deuplicate function elimination can fail when we compile helpers during
higher ranked trait bound monomorphization. This because the
TyTy::BaseType info can be lost/reset during the compilation process. This
adds a second mechanism to match based on the manged names which is a
...in all contexts.
gcc/testsuite/ChangeLog:
* rust/compile/const_generics_7.rs: New test.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/testsuite/rust/compile/const_generics_7.rs | 17 +
1 file changed, 17 insertions(+)
create mode 100644 gcc/testsuite/r
From: Faisal Abbas <90.abbasfai...@gmail.com>
..in eval_constant_expression()
gcc/testsuite/ChangeLog:
* rust/compile/const8.rs: New test.
Signed-off-by: Faisal Abbas <90.abbasfai...@gmail.com>
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/testsuite/rust/compile/const8.
From: liushuyu
gcc/testsuite/ChangeLog:
* rust/execute/torture/loop-condition-eval.rs: New test.
Signed-off-by: Zixing Liu
Tested on x86_64-pc-linux-gnu, committed on master.
---
.../execute/torture/loop-condition-eval.rs| 21 +++
1 file changed, 21 insertions(+)
From: Philip Herron
Statics can be assigned to a block expression meaning they need to behave
similarly to constant items.
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-toplevel.cc (TypeCheckTopLevel::visit):
Make static items behave more similarly to const items.
Tested
gcc/rust/ChangeLog:
* util/rust-attributes.cc: Add `macro_use` to list of builtin
attributes.
gcc/testsuite/ChangeLog:
* rust/compile/macro_export_1.rs: New test.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/rust/util/rust-attributes.cc | 1 +
gcc/rust/ChangeLog:
* checks/errors/rust-const-checker.cc (ConstChecker::ctx_to_str): Allow
getting an error string from a specific constant context.
(ConstChecker::ctx_allows_default): New function, check if a context
allows default values for Const generics.
This option helps ensure that we do not introduce regressions on various
parts of the compilation pipeline. For example, a testcase (or testsuite
from the `testing` project) might pass attribute checking, expansion and
lowering, but fail during typechecking. Should a change suddenly make
that testc
Some module items do not need to get lowered to HIR such as `macro_rules!`
definitions. Hence, module lowering should act the same as crate lowering: Only
emplace back the lowered item if it is a valid pointer
gcc/rust/ChangeLog:
* hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Do
From: liushuyu
gcc/rust/ChangeLog:
* ast/rust-ast.h (class MacroInvocData): Store expander as
member of the class.
(class Expr): Add `is_literal` virtual method
* ast/rust-expr.h: Override `is_literal` for `LiteralExpr`s.
* expand/rust-macro-builtins.cc (t
From: Philip Herron
Statics like constants need to have a singular value they are not functions
to be lazy evaluated. So to evaluate a block expr we can just reuse our
const code to resolve this to a singular value.
gcc/rust/ChangeLog:
* backend/rust-compile-item.cc (CompileItem::visit)
From: Philip Herron
gcc/rust/ChangeLog:
* backend/rust-compile-expr.h: Formatting.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/rust/backend/rust-compile-expr.h | 17 -
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/gcc/rust/backend/rust-
From: Philip Herron
see:
https://blog.rust-lang.org/2022/09/15/const-eval-safety-rule-revision.html
gcc/testsuite/ChangeLog:
* rust/compile/rust-const-blog-issue.rs: New test.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/testsuite/rust/compile/rust-const-blog-issue.rs
From: Philip Herron
Fixes #1006
gcc/testsuite/ChangeLog:
* rust/compile/issue-1006.rs: New test.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/testsuite/rust/compile/issue-1006.rs | 10 ++
1 file changed, 10 insertions(+)
create mode 100644 gcc/testsuite/rust/c
gcc/rust/ChangeLog:
* rust-gcc.cc (class Bvariable): Move class to `rust-gcc.h` header.
* rust-gcc.h: New file.
Tested on x86_64-pc-linux-gnu, committed on master.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/rust/rust-gcc.cc | 30 +--
gcc/ru
From: liushuyu
... builtin macro and decl macro mixed expansion
gcc/testsuite/ChangeLog:
* rust/compile/builtin_macro_recurse.rs: New test.
Signed-off-by: Zixing Liu
Tested on x86_64-pc-linux-gnu, committed on master.
---
.../rust/compile/builtin_macro_recurse.rs | 21 +
From: Philip Herron
We simply hit a gcc_unreachable() on double borrows but it seems reasonable
to just desugar the AST into a borrow of a borrow to foo. Instead of a
borrow expression with a flag to be respected.
Fixes #1506
gcc/rust/ChangeLog:
* hir/rust-ast-lower-expr.h: Lower doubl
From: Philip Herron
gcc/rust/ChangeLog:
* backend/rust-constexpr.cc (eval_store_expression): Remove invalid
assertion on constexpr constructors.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/rust/backend/rust-constexpr.cc | 16
1 file changed, 8
From: Philip Herron
This patch refactors the type resolution system to introduce a new
interface
bool query_type (HirId, TyTy::BaseType** result)
This is needed in order to properly support forward declared items. Our
name resolution system has two parts:
1. Toplevel scan
2. Item resolut
From: Philip Herron
gcc/rust/ChangeLog:
* typecheck/rust-tyctx.cc (TypeCheckContext::pop_return_type): Add
guards around `std::vector.pop_back()`.
(TypeCheckContext::peek_context): Likewise for `std::vector.back()`.
Tested on x86_64-pc-linux-gnu, committed on master.
--
From: Philip Herron
Fixes #1073
gcc/testsuite/ChangeLog:
* rust/compile/issue-1073.rs: New test.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/testsuite/rust/compile/issue-1073.rs | 4
1 file changed, 4 insertions(+)
create mode 100644 gcc/testsuite/rust/compile/i
From: Faisal Abbas <90.abbasfai...@gmail.com>
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Turn
constant item typechecking into a coercion site instead of a unify
site.
gcc/testsuite/ChangeLog:
* rust/compile/const6.rs: New
..attribute. We cannot yet handle this attribute, but we should not reject it
either
gcc/rust/ChangeLog:
* util/rust-attributes.cc: Add `rustc_inherit_overflow_checks` to list
of builtin attributes.
gcc/testsuite/ChangeLog:
* rust/compile/rustc_attr1.rs: New test.
Test
Hi Richard,
(...)
+
+ unsigned HOST_WIDE_INT ltype_length
+= wi::ext (wi::to_offset (TYPE_MAX_VALUE (ltype_domain))
+- wi::to_offset (TYPE_MIN_VALUE (ltype_domain)) + 1,
TYPE_MIN_VALUE is not checked to be constant, also the correct
check would be to use TREE_CODE (..) ==
This patchset contains the fixed version of our most recent patchset. We
have fixed most of the issues noted in the previous round of reviews, and are
keeping some for later as they would otherwise create too many conflicts with
our updated development branch.
Similarly to the previous round of pa
From: Tom Tromey
The Rust 'char' type should use the DWARF DW_ATE_UTF encoding.
Co-authored-by: Mark Wielaard
Co-authored-by: Marc Poulhiès
---
gcc/dwarf2out.cc | 19 ++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc
index e3
From: Philip Herron
This testsuite is specifically about testcases which scan the asm debug
info for results.
Co-authored-by: Tom Tromey
Co-authored-by: Mark Wielaard
Co-authored-by: Marc Poulhiès
---
gcc/testsuite/rust/debug/chartype.rs | 10 ++
.../rust/debug/custom_link_secti
From: Philip Herron
This copies over code from other front-end testsuites to enable testing
for the rust front-end specifically.
Co-authored-by: Marc Poulhiès
Co-authored-by: Thomas Schwinge
---
gcc/testsuite/lib/rust-dg.exp | 49 +
gcc/testsuite/lib/rust.exp| 186 +++
From: Philip Herron
This testsuite is heavily inspired from the LTO testsuite that uses a
pattern where each file is compiled to an object file and finally linked
together. Since Rust does not have headers/prototypes, we rely on the
ordering here so that all files numbered greater than zero get c
support the main shim,
so we have a C-style main function here returning zero which is not proper Rust
code.
Co-authored-by: Arthur Cohen
Co-authored-by: Thomas Schwinge
Co-authored-by: Mark Wielaard
Co-authored-by: Marc Poulhiès
---
.../rust/execute/torture/block_expr1.rs | 8
From: Philip Herron
This allows us to invoke the rust testsuite.
ChangeLog:
* Makefile.def: Add Rust language.
* Makefile.in: Regenerate via autogen.
---
Makefile.def | 1 +
Makefile.in | 8
2 files changed, 9 insertions(+)
diff --git a/Makefile.def b/Makefile.def
ind
From: The Other
This patch contains the basic framework of our AST visitors, as well as
one aimed at pretty-printing and exporting these AST nodes.
Co-authored-by: Philip Herron
Co-authored-by: Arthur Cohen
---
gcc/rust/ast/rust-ast-dump.cc| 1089 ++
gcc/rust
From: The Other
The lexer is referred to as a ManagedTokenSource within the parser. This
lexer does not currently support Unicode, but serves as a starting point
to do so.
Co-authored-by: Philip Herron
Co-authored-by: Arthur Cohen
Co-authored-by: Mark Wielaard
---
gcc/rust/lex/rust
From: The Other
This adds the proper definitions of our AST Item nodes.
Co-authored-by: Philip Herron
---
gcc/rust/ast/rust-item.h | 4382 ++
1 file changed, 4382 insertions(+)
create mode 100644 gcc/rust/ast/rust-item.h
diff --git a/gcc/rust/ast/rust-item
From: Arthur Cohen
Used for V0 symbol mangling scheme which is still in development.
---
gcc/rust/util/rust-base62.cc | 46
gcc/rust/util/rust-base62.h | 34 ++
2 files changed, 80 insertions(+)
create mode 100644 gcc/rust/util/rust
From: Philip Herron
This is a wrapper for make_unique. We can likely get rid of this, as there
are other implementations available, or simply keep using the unique_ptr
constructor.
---
gcc/rust/util/rust-make-unique.h | 35
1 file changed, 35 insertions(+)
creat
From: Philip Herron
These are various helper classes used in the compiler pipeline.
---
gcc/rust/util/rust-canonical-path.h | 195 +
gcc/rust/util/rust-common.h | 53 ++
gcc/rust/util/rust-hir-map.cc | 980 ++
gcc/rust/util/rust-hir-map.h
From: Arthur Cohen
This adds an Optional class to improve error handling.
---
gcc/rust/util/rust-optional-test.cc | 110 +++
gcc/rust/util/rust-optional.h | 278
2 files changed, 388 insertions(+)
create mode 100644 gcc/rust/util/rust-optional-test.cc
From: Philip Herron
This patch implements the classes mentioned in the previous HIR patch,
as well as a set of visitor frameworks used in handling that HIR.
---
gcc/rust/hir/tree/rust-hir-full-decls.h | 232 +
gcc/rust/hir/tree/rust-hir-full-test.cc | 5292 +++
gcc/rust/hir/
From: Arthur Cohen
Similarly to the unsafe checker, constant evaluation can only be performed
in a few contexts and include restrictions on the Rust language. Should
the user fail to uphold those conditions, errors will be reported and the
compilation pipeline interrupted.
These contexts are as
From: Philip Herron
This is a simple helper over an enum of possible ABI options in Rust.
---
gcc/rust/util/rust-abi.cc | 72 +++
gcc/rust/util/rust-abi.h | 45
2 files changed, 117 insertions(+)
create mode 100644 gcc/rust/util/rust
From: Arthur Cohen
The attribute checker is responsible for checking the validity of various
attributes including built-in ones. It is currently unfinished and will
receive some modifications, as well as become the host of some existing
code in the compiler which needs to be refactored. One of
From: Philip Herron
This hash was ported from the Go runtime, as we needed a hash for the legacy
symbol mangling system. All symbols in Rust contain a hash of some
metadata for uniqueness on generic functions.
---
gcc/rust/util/fnv-hash.h | 95
1 file cha
From: Arthur Cohen
The UnsafeChecker visitor verifies that unsafe actions are only performed
in unsafe contexts. Otherwise, an error should be reported to the user and
the compilation pipeline should be halted. These contexts, which include
unsafe blocks or unsafe functions, are allowed to
From: Philip Herron
Extern crates statements to tell the front-end to look for another library.
The mechanism here is heavily inspired from gccgo, so when we compile a
library for example we invoke:
gccrs -g -O2 -frust-crate=mylib -c src/lib.rs -o src/mylib.o
All going well this object file w
From: Arthur Cohen
This pass is responsible for resolving the privacy of items and verifying
that access to these items is performed within the limits of that privacy.
By default, items in Rust are private and only public to the current
module and its submodules. However, the user can annotate
From: Thomas Young
In order to find dead code we use a depth first search and keep liveness
variables, after type resolution. In this case, if a function is unused
and it calls another function the 2nd function is now unused since the
caller is not used etc. The algorithm is a depth first search.
From: Philip Herron
This is a simple walk_tree which acts on the monomorphized code by walking
the compiled translation unit of functions.
---
gcc/rust/checks/lints/rust-lint-unused-var.cc | 98 +++
gcc/rust/checks/lints/rust-lint-unused-var.h | 36 +++
2 files changed, 134
From: Philip Herron
The wrappers over linemap and location will eventually disappear here but
served as a useful starting point for us. We have wrappers over the
diagnostics system which we might be able to get rid of as well.
---
gcc/rust/rust-diagnostics.cc | 244 ++
From: Philip Herron
This was a copy/paste from gccgo front-end. We do not use any of the
target_libs yet, but we will need these when we support the libpanic crate.
---
gcc/rust/config-lang.in | 34 ++
1 file changed, 34 insertions(+)
create mode 100644 gcc/rust/
From: Philip Herron
Contains abstractions over Rust's types, used when performing the
HIR's type-resolution.
---
gcc/rust/typecheck/rust-tyty.cc | 2885 +++
gcc/rust/typecheck/rust-tyty.h | 2533 +++
2 files changed, 5418 insertions(+)
create
From: Philip Herron
This specifies the extensions of the Rust language.
---
gcc/rust/lang-specs.h | 26 ++
1 file changed, 26 insertions(+)
create mode 100644 gcc/rust/lang-specs.h
diff --git a/gcc/rust/lang-specs.h b/gcc/rust/lang-specs.h
new file mode 100644
index 000
From: Philip Herron
We have some Rust-specific language options. Note that -fwrapv is
enabled by default in the code. We are trying to respect options such as
-Wunused-result which we get by porting over C++'s no-discard for Rust's
must-use attribute, so we have enabled these by default directly
From: Philip Herron
This patch contains the entry point and utilities used for the lowering
of HIR nodes to `tree`s. It also contains a constant evaluator, ported
over from the C++ frontend.
Co-authored-by: David Faust
Co-authored-by: Faisal Abbas <90.abbasfai...@gmail.com>
---
gcc/rust/backen
From: Philip Herron
This is the Makefile for our front-end.
---
gcc/rust/Make-lang.in | 402 ++
1 file changed, 402 insertions(+)
create mode 100644 gcc/rust/Make-lang.in
diff --git a/gcc/rust/Make-lang.in b/gcc/rust/Make-lang.in
new file mode 100644
ind
From: Philip Herron
Our compiler driver is fairly simple so far. The key piece to enforce is
that a compilation unit in Rust is the whole crate, so the process for
compiling Rust means pointing the compiler at the main entry point such as
src/lib.rs or src/main.rs where the expansion pass takes o
From: Philip Herron
This is a wrapper to get out of C land in the rust-lang.cc and into our
class hierarchy for the rust front-end. We expect that the front-end only
support one source file input as the expansion pass will attempt to resolve
that relative pass and parse accordingly.
The main mis
From: Philip Herron
We still need to write out a documentation section, but these READMEs will
help in the meantime.
---
gcc/rust/CONTRIBUTING.md | 130 +++
gcc/rust/README.md | 264 +++
gcc/rust/logo.png| Bin 0 -> 70864 bytes
3
o need the core
library, which again, we cannot compile yet in its 1.49 version.
This is very much an extremely experimental compiler and will still get
a lot of changes in the coming weeks and months up until the release.
Adrian
--
Arthur Cohen
Toolchain Engineer
Embecosm GmbH
Gesch
From: Arthur Cohen
Changelog:
* MAINTAINERS: Add Arthur Cohen as Rust front-end maintainer.
---
MAINTAINERS | 1 +
1 file changed, 1 insertion(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 55c5ef95806..d2eea049667 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -165,6 +165,7 @@ D front
Hi everyone,
This patchset contains around 80 commits concerning the Rust frontend.
We have been hard at work trying to get the Rust core library to
compile, and hope to push more commits in the coming days as we try
and upstream a more recent version of gccrs. All of the team has done
a tremendo
From: Prajwal S N
The `target_feature` attribute is for conditional compilation and may or
may not compile on all platforms. Using it requires an unsafe function
or block.
gcc/rust/ChangeLog:
* checks/errors/rust-unsafe-checker.cc (check_target_attr): New
function.
(UnsafeCheck
From: Raiki Tamura
gcc/rust/ChangeLog:
* ast/rust-ast-full-decls.h (class MacroItem): Remove forward
declaration.
* ast/rust-ast-full-test.cc (MacroRulesDefinition):
Rework MacroRulesDefinition class
* ast/rust-ast.h (class MacroItem): Remove abstract class.
From: Dave
Use StackedContext instead. Fix error string
Signed-off-by: Dave Evans
(Squashed commits) Check for mutable references in const functions using
StackedContext
gcc/rust/ChangeLog:
* checks/errors/rust-const-checker.cc (ConstChecker::visit): Use
StackedContext
clas
From: Arthur Cohen
gcc/rust/ChangeLog:
* rust-session-manager.cc (Session::compile_crate): Fix typo.
---
gcc/rust/rust-session-manager.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/rust/rust-session-manager.cc b/gcc/rust/rust-session-manager.cc
index
From: mxlol233
gcc/rust/ChangeLog:
* parse/rust-parse-impl.h (Parser::parse_generic_arg): Add proper bound
parsing.
gcc/testsuite/ChangeLog:
* rust/compile/bounds.rs: New test.
Signed-off-by: Xiao Ma
---
gcc/rust/parse/rust-parse-impl.h | 17 +
gcc/tests
From: Philip Herron
When specifying generic arguments to Traits we can also specify the
associated types using `` syntax we need to add
name resolution to the type argument here and rely on the type
resolution pass to ensure the associated type exists and to setup the
associated types accordingly
From: Owen Avery
This allows patterns to declare multiple/no variables
gcc/rust/ChangeLog:
* backend/rust-compile-base.cc
(HIRCompileBase::compile_locals_for_block):
Allow patterns to declare zero or multiple variables.
* backend/rust-compile-var-decl.h: Change function
From: mxlol233
This commit adds virtual function get_locus to base class MetaItemInner,
which is helpful when we need to print diagnostics on some sub-classes of
MetaItemInner.
gcc/rust/ChangeLog:
* ast/rust-ast.h: Add get_locus method.
* ast/rust-expr.h: Likewise.
* as
From: Owen Avery
Update Rust type-checking to reuse TypeCheckPattern on HIR::LetStmt's.
This will unify the paths and improve error handling.
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Cleanup
LetStmt
type checking.
Signed-off-by: Owen
From: Owen Avery
gcc/rust/ChangeLog:
* resolve/rust-ast-resolve-pattern.h: Support GroupedPattern properly.
Signed-off-by: Owen Avery
---
gcc/rust/resolve/rust-ast-resolve-pattern.h | 5 +
1 file changed, 5 insertions(+)
diff --git a/gcc/rust/resolve/rust-ast-resolve-pattern.h
b
From: mxlol233
Currently, the diagnostics only point to the corresponding token's
start position by carets, and lack of underlines for full token. This
commit add support for such underlines in diagnostics by encoding range
information in location_t.
gcc/rust/ChangeLog:
* lex/rust-lex.
From: Lyra
This commit fixes a compiler crash when expanding an empty macro into an
existing AST.
gcc/rust/ChangeLog:
* expand/rust-macro-expand.cc (transcribe_expression): Fix ICE when
expanding
empty macros.
gcc/testsuite/ChangeLog:
* rust/compile/macro45.rs: New t
From: Philip Herron
This patch adds support for the GenercArgsBinding type, where you can
specify the associated types of a trait bound using `` style
syntax. Note that the type-resolution relys on the i32 impl for Add
as type resolution will resolve the `a+a` to the core::ops::Add method
so code
From: Owen Avery
gcc/rust/ChangeLog:
* hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Add proper
visitor.
* hir/rust-ast-lower-pattern.h: Declare it.
Signed-off-by: Owen Avery
---
gcc/rust/hir/rust-ast-lower-pattern.cc | 16
gcc/rust/hir/rust-ast-
From: Owen Avery
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
Add proper
visitor.
Signed-off-by: Owen Avery
---
gcc/rust/typecheck/rust-hir-type-check-pattern.cc | 8 +---
1 file changed, 5 insertions(+), 3 deletions(-)
diff -
From: Owen Avery
gcc/rust/ChangeLog:
* backend/rust-compile-pattern.cc (CompilePatternCaseLabelExpr::visit):
Add proper
visitor.
(CompilePatternBindings::visit): Likewise.
* backend/rust-compile-pattern.h: Declare them.
Signed-off-by: Owen Avery
---
gcc/rust/b
From: Owen Avery
gcc/rust/ChangeLog:
* hir/tree/rust-hir-pattern.h: Add get_item method.
Signed-off-by: Owen Avery
---
gcc/rust/hir/tree/rust-hir-pattern.h | 6 ++
1 file changed, 6 insertions(+)
diff --git a/gcc/rust/hir/tree/rust-hir-pattern.h
b/gcc/rust/hir/tree/rust-hir-patt
From: Arthur Cohen
In dg-output, check for \r* carriage returns to make sure execution
tests pass on windows platforms
gcc/testsuite/ChangeLog:
* rust/execute/torture/builtin_macro_cfg.rs: Handle carriage returns
properly.
* rust/execute/torture
From: Arthur Cohen
gcc/rust/ChangeLog:
* ast/rust-macro.h (enum class): Add `BuiltinMacro` enum class.
* expand/rust-attribute-visitor.cc (AttrVisitor::visit): Mention
switching on `macro.kind` once builtin macro invocations are properly
handled.
* parse
From: Owen Avery
gcc/rust/ChangeLog:
* backend/rust-compile-pattern.cc (CompilePatternLet::visit): New
function.
* backend/rust-compile-stmt.cc (CompileStmt::visit): Likewise.
* backend/rust-compile-pattern.h (class CompilePatternLet): New visitor.
Signed-off-by: Owen A
From: Parthib
gcc/rust/ChangeLog:
* Make-lang.in: Rename object file.
* ast/rust-ast-full-test.cc: Moved to...
* ast/rust-ast.cc: ...here.
---
gcc/rust/Make-lang.in | 2 +-
gcc/rust/ast/{rust-ast-full-test.cc => rust-ast.cc} | 0
2 files cha
501 - 600 of 1339 matches
Mail list logo