From patchwork Tue Jun 21 09:41:52 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manish Goregaokar X-Patchwork-Id: 13270 Received: (qmail 94995 invoked by alias); 21 Jun 2016 09:42:08 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 94974 invoked by uid 89); 21 Jun 2016 09:42:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=Empty, UD:rs, x0, Four X-HELO: mail-lb0-f175.google.com Received: from mail-lb0-f175.google.com (HELO mail-lb0-f175.google.com) (209.85.217.175) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 21 Jun 2016 09:41:56 +0000 Received: by mail-lb0-f175.google.com with SMTP id ak10so6903335lbc.3 for ; Tue, 21 Jun 2016 02:41:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to:cc; bh=KjKxjyZCqHS/jQwEJFdyrph8K5D+XiVfz+d3s2J0Od8=; b=cyZPSNPO4+TNKvFGTMHzEy3hoaSXAu0YCriFtSuQOsrvtWyVFj2B5JWwkSajsgD+E0 hkHG78OqrBMduSQ16cPqOuApI4lthkK45XMwVCGlQ8z+GzHoS7xzymDLXVV30tjyVjpf hSIJOw/Dsw7tH04V+LE1ZNNiDv6UVux1lqZLQz7lYErTIAHbR8zBy6tOk7N71cbUhITj 8j0VtvSMEbQDfdaDm8QZKv7kXrm0Biq7IpU4uTn7HkHFNtrXXUAgaHi5xniNvik0pBqy 2Lm+n+we2Pe+AtltDoLS+74WyQLzF5CUF6w3kYaPALoa8aWUEbWZ7QWRtlurxnPHhUtW Bpug== X-Gm-Message-State: ALyK8tIb1iY22imm/GHdG9/kALdusi6mbVMd07PxeaOxShW0Ur+Fi8i/yXNVbezk4x/7jH+5WwQIqj8FkWA7hXOo MIME-Version: 1.0 X-Received: by 10.194.109.232 with SMTP id hv8mr18967835wjb.115.1466502112993; Tue, 21 Jun 2016 02:41:52 -0700 (PDT) Received: by 10.28.36.215 with HTTP; Tue, 21 Jun 2016 02:41:52 -0700 (PDT) Date: Tue, 21 Jun 2016 15:11:52 +0530 Message-ID: Subject: [PATCH 2/2][PR gdb/20239] Add tests for printing of NonZero-optimized enums in Rust From: Manish Goregaokar To: gdb-patches@sourceware.org Cc: Tom Tromey Continuing discussion from https://sourceware.org/bugzilla/show_bug.cgi?id=20239, I'm not sure if it's worth it to have a test that inspects the entire output, since the internals of the String type may change in the future. Did you mean something else? gdb/testsuite/ChangeLog: 2016-06-21 Manish Goregaokar PR gdb/20239 * gdb.rust/simple.rs: Add more tests for printing NonZero enums. * gdb.rust/simple.exp: Add test expectations for new NonZero tests. --- gdb/testsuite/gdb.rust/simple.exp | 11 +++++++++++ gdb/testsuite/gdb.rust/simple.rs | 17 +++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/gdb/testsuite/gdb.rust/simple.exp b/gdb/testsuite/gdb.rust/simple.exp index a4a2190..88f1c89 100644 --- a/gdb/testsuite/gdb.rust/simple.exp +++ b/gdb/testsuite/gdb.rust/simple.exp @@ -169,6 +169,17 @@ gdb_test "print ..5" " = .*::ops::RangeTo.* \\{end: 5\\}" gdb_test "print 5.." " = .*::ops::RangeFrom.* \\{start: 5\\}" gdb_test "print .." " = .*::ops::RangeFull" +gdb_test "print str_some" \ + " = core::option::Option::Some\\(collections::string::String .*" +gdb_test "print str_none" " = core::option::Option::None" +gdb_test "print int_some" " = core::option::Option::Some\\(1\\)" +gdb_test "print int_none" " = core::option::Option::None" +gdb_test "print box_some" " = core::option::Option>::Some\\(.*\\)" +gdb_test "print box_none" " = core::option::Option>::None" +gdb_test "print custom_some" \ + " = simple::NonZeroOptimized::Value\\(collections::string::String .*" +gdb_test "print custom_none" " = simple::NonZeroOptimized::Empty" + proc test_one_slice {svar length base range} { global hex diff --git a/gdb/testsuite/gdb.rust/simple.rs b/gdb/testsuite/gdb.rust/simple.rs index 6d6395a..32da580 100644 --- a/gdb/testsuite/gdb.rust/simple.rs +++ b/gdb/testsuite/gdb.rust/simple.rs @@ -38,6 +38,12 @@ enum MoreComplicated { Four{this: bool, is: u8, a: char, struct_: u64, variant: u32}, } +// tests the nonzero optimization, but fields are reversed +enum NonZeroOptimized { + Empty, + Value(String), +} + fn diff2(x: i32, y: i32) -> i32 { x - y } @@ -92,6 +98,17 @@ fn main () { let to1 = &w[..3]; let to2 = &slice[..1]; + // tests for enum optimizations + + let str_some = Some("hi".to_string()); + let str_none = None::; + let box_some = Some(Box::new(1u8)); + let box_none = None::>; + let int_some = Some(1u8); + let int_none = None::; + let custom_some = NonZeroOptimized::Value("hi".into()); + let custom_none = NonZeroOptimized::Empty; + println!("{}, {}", x.0, x.1); // set breakpoint here println!("{}", diff2(92, 45)); }