Skip to content

Commit 7945b83

Browse files
Add support for std::string_view::substr() (#4729)
1 parent 99acd31 commit 7945b83

3 files changed

Lines changed: 39 additions & 4 deletions

File tree

cfg/std.cfg

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7369,6 +7369,34 @@ initializer list (7) string& replace (const_iterator i1, const_iterator i2, init
73697369
<valid>0:</valid>
73707370
</arg>
73717371
</function>
7372+
<!-- https://en.cppreference.com/w/cpp/string/basic_string_view/substr -->
7373+
<!-- constexpr basic_string_view substr( size_type pos = 0, size_type count = npos ) const; -->
7374+
<function name="std::string_view::substr">
7375+
<use-retval/>
7376+
<returnValue type="std::string_view"/>
7377+
<noreturn>false</noreturn>
7378+
<arg nr="1" default="0" direction="in">
7379+
<not-uninit/>
7380+
<valid>0:</valid>
7381+
</arg>
7382+
<arg nr="2" default="0" direction="in">
7383+
<not-uninit/>
7384+
<valid>0:</valid>
7385+
</arg>
7386+
</function>
7387+
<function name="std::wstring_view::substr">
7388+
<use-retval/>
7389+
<returnValue type="std::wstring_view"/>
7390+
<noreturn>false</noreturn>
7391+
<arg nr="1" default="0" direction="in">
7392+
<not-uninit/>
7393+
<valid>0:</valid>
7394+
</arg>
7395+
<arg nr="2" default="0" direction="in">
7396+
<not-uninit/>
7397+
<valid>0:</valid>
7398+
</arg>
7399+
</function>
73727400
<!-- default (1) template <class ForwardIterator> ForwardIterator std::min_element (ForwardIterator first, ForwardIterator last);
73737401
custom (2) template <class ForwardIterator, class Compare> ForwardIterator std::min_element (ForwardIterator first, ForwardIterator last, Compare comp); -->
73747402
<!-- default (1) template <class ForwardIterator> ForwardIterator std::max_element (ForwardIterator first, ForwardIterator last);

test/cfg/runtests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ CPPCHECK_OPT='--check-library --platform=unix64 --enable=information --enable=st
2727

2828
# Compiler settings
2929
CXX=g++
30-
CXX_OPT='-fsyntax-only -std=c++0x -Wno-format -Wno-format-security -Wno-deprecated-declarations'
30+
CXX_OPT='-fsyntax-only -std=c++17 -Wno-format -Wno-format-security -Wno-deprecated-declarations'
3131
CC=gcc
3232
CC_OPT='-Wno-format -Wno-stringop-overread -Wno-nonnull -Wno-implicit-function-declaration -Wno-deprecated-declarations -Wno-format-security -Wno-nonnull -fsyntax-only'
3333

test/cfg/std.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
// No warnings about bad library configuration, unmatched suppressions, etc. exitcode=0
88
//
99

10+
#include <algorithm>
1011
#include <bitset>
1112
#include <cassert>
1213
#include <cctype>
@@ -34,10 +35,10 @@
3435
#include <iostream>
3536
#include <istream>
3637
#include <iterator>
37-
#include <vector>
38-
#include <unordered_set>
39-
#include <algorithm>
4038
#include <numeric>
39+
#include <string_view>
40+
#include <unordered_set>
41+
#include <vector>
4142

4243
int zerodiv_ldexp()
4344
{
@@ -4555,4 +4556,10 @@ void addressof(int a)
45554556
{
45564557
// cppcheck-suppress ignoredReturnValue
45574558
std::addressof(a);
4559+
}
4560+
4561+
void string_view_unused(std::string_view v)
4562+
{
4563+
// cppcheck-suppress ignoredReturnValue
4564+
v.substr(1, 3);
45584565
}

0 commit comments

Comments
 (0)