about summary refs log tree commit diff
path: root/tests/source
diff options
context:
space:
mode:
authorMarcus Klaas <mail@marcusklaas.nl>2015-10-24 12:19:58 +0200
committerMarcus Klaas <mail@marcusklaas.nl>2015-10-24 13:13:15 +0200
commitd122ad5adc2164e34e59a7e9e7e8da2dfba7ffb5 (patch)
tree47c808713a466de490677005fa422f27a0260164 /tests/source
parent58ff0d8730806332e05b34189d91c8504f71eccc (diff)
Address some issues with multiline patterns in let statements
Diffstat (limited to 'tests/source')
-rw-r--r--tests/source/issue-510.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/source/issue-510.rs b/tests/source/issue-510.rs
new file mode 100644
index 00000000000..faf3d657ada
--- /dev/null
+++ b/tests/source/issue-510.rs
@@ -0,0 +1,39 @@
+impl ISizeAndMarginsComputer for AbsoluteNonReplaced {
+fn solve_inline_size_constraints(&self,
+block: &mut BlockFlow,
+input: &ISizeConstraintInput)
+-> ISizeConstraintSolution {
+
+let (inline_start,inline_size,margin_inline_start,margin_inline_end) =
+match (inline_startssssssxxxxxxsssssxxxxxxxxxssssssxxx,inline_startssssssxxxxxxsssssxxxxxxxxxssssssxxx) {
+(MaybeAuto::Auto, MaybeAuto::Auto, MaybeAuto::Auto) => {
+let margin_start = inline_start_margin.specified_or_zero();
+let margin_end = inline_end_margin.specified_or_zero();
+// Now it is the same situation as inline-start Specified and inline-end
+// and inline-size Auto.
+//
+// Set inline-end to zero to calculate inline-size.
+let inline_size = block.get_shrink_to_fit_inline_size(available_inline_size -
+(margin_start + margin_end));
+(Au(0), inline_size, margin_start, margin_end)
+}
+};
+
+// FIXME(#501): tuple width heuristic may not be optimal for patterns.
+        let (inline_start, inline_size, margin_inline_start, margin_inline_end) =
+            match (inline_start, inline_end, computed_inline_size) {
+                (MaybeAuto::Auto, MaybeAuto::Auto, MaybeAuto::Auto) => {
+                    let margin_start = inline_start_margin.specified_or_zero();
+                    let margin_end = inline_end_margin.specified_or_zero();
+                    // Now it is the same situation as inline-start Specified and inline-end
+                    // and inline-size Auto.
+                    //
+                    // Set inline-end to zero to calculate inline-size.
+                    let inline_size =
+                        block.get_shrink_to_fit_inline_size(available_inline_size -
+                                                            (margin_start + margin_end));
+                    (Au(0), inline_size, margin_start, margin_end)
+                }
+            };
+}
+}