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