• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2019 The Chromium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// This is a "No Compile Test" suite.
6// http://dev.chromium.org/developers/testing/no-compile-tests
7
8#include "base/containers/buffer_iterator.h"
9
10#include <stdint.h>
11
12#include <string>
13
14namespace base {
15
16class Complex {
17 public:
18  Complex() : string_("Moo") {}
19
20 private:
21  std::string string_;
22};
23
24void CreateTypeUint16() {
25  constexpr size_t size = 64;
26  uint16_t data[size];
27  BufferIterator<uint16_t> iterator(data, size);  // expected-error@*:* {{Underlying buffer type must be char-type.}}
28}
29
30void ComplexMutableObject() {
31  constexpr size_t size = 64;
32  uint8_t data[size];
33  BufferIterator<uint8_t> iterator(data, size);
34  Complex* c = iterator.MutableObject<Complex>();  // expected-error {{no matching member function for call to 'MutableObject'}}
35}
36
37void ComplexObject() {
38  constexpr size_t size = 64;
39  uint8_t data[size];
40  BufferIterator<uint8_t> iterator(data, size);
41  const Complex* c = iterator.Object<Complex>();  // expected-error {{no matching member function for call to 'Object'}}
42}
43
44void ComplexMutableSpan() {
45  constexpr size_t size = 64;
46  uint8_t data[size];
47  BufferIterator<uint8_t> iterator(data, size);
48  base::span<Complex> s = iterator.MutableSpan<Complex>(3);  // expected-error {{no matching member function for call to 'MutableSpan'}}
49}
50
51void ComplexSpan() {
52  constexpr size_t size = 64;
53  uint8_t data[size];
54  BufferIterator<uint8_t> iterator(data, size);
55  base::span<const Complex> s = iterator.Span<Complex>();  // expected-error {{no matching member function for call to 'Span'}}
56}
57
58}  // namespace base
59