-
Notifications
You must be signed in to change notification settings - Fork 285
String solver #341
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
romainbrenguier
wants to merge
232
commits into
diffblue:master
from
romainbrenguier:string-solver-experiments
Closed
String solver #341
Changes from 220 commits
Commits
Show all changes
232 commits
Select commit
Hold shift + click to select a range
05b7300
started adding support for Strings (with the CVC4 backend)
361d98a
merged with upstream
9633963
improved string support in smt2 backend
6d59022
added first string test to the regression suite (still no .desc though)
5cd5643
merging with upstream
61b64bb
fixed bug in converting string length for the CVC4 backend
08af98c
added more string tests
89dbec2
removed accidentally committed changes to config.inc
b820c1e
strings: added hand-written SMT2 versions of test3.c
7cc6a6b
strings test3: added version with assertions checked one by one
ccba04e
revised string encoding as quantified arrays
72ccef3
added more string tests
44f48e5
use native support for int2bv in CVC4
1f4d2ab
try to add an explicit upper bound to string lengths
1baf4db
merged with diffblue/master
b560ec1
merged with diffblue master
c3cc804
added further string length constraints to cope with possible overflows
916f7ce
fixed encoding of string suffix
9bb988d
fixed double output in encoding string constraints (check in the cach…
9cb8535
merged with master
4b84909
added various string benchmarks taken from z3str2-bv
8be3253
started working on string support in the SAT backend (via PASS-like a…
e02fee2
sync with master
599b343
continued working on string refinement
d138195
further work on string refinement
4abb6d6
continued working on string refinement loop
06eccb4
string refinement: fixed bug in i2bin
7ce74e8
string refinement: fixed processing of command-line args
64ae282
string refinement: added missing conversions, fixed bug in axiom inst…
6afcf55
string refinement: further progress. Now something works, but checkin…
ad547d2
Adding --pass option to cbmc to use the string refinement code of Alb…
c864f07
experimenting with another conversion to bit vectors to take the leng…
557b119
Changed the encoding of strings to use a structured type
a1fce4f
Post proccessing of the lemmas
c4c0815
Converting all strings to bit vectors using a structure containing th…
a3e39ea
cleaned some code
4d0f0c3
better structure for the code of string expressions
2675eaf
taking care of char expressions
453381d
uniformisation of lemmas and axioms by putting them in a same class (…
2baf3bd
adapted the code for string_equal
e447fa7
adapted the code for string_equal
7999115
making the PASS algorithm cleaner
653ae6c
corrected the problem with infinite loops and some missing conversion…
30c1b78
removed some debugging information that should no longer be needed
0a489c7
removed some debugging information that should no longer be needed
2888fc2
corrected a sign problem in the computation of the substitution
d03aac0
avoid creating new string symbols when there is no need for it
45c9d04
adding instantiations before solving
7bf66a1
Adding new tests for strings
a690724
adding index to the index set when we have a char_at function
888e374
Corrected the order in the arguments of issuffix
1c89da7
A couple of other examples for strings
b90ec2c
Test descriptions for strings
f1a4908
Better displaying of the lemmas and other expressions
759613c
Cleaning a bit the code for string refinement
3f21d28
Tests coming from the PASS article
36015e3
adding support for axioms with existential quantifier, and adding the…
96d30c1
changed the index type to be signed in order to accomodate some funct…
24bfd52
more precise tests, with both assertions that should succeed and fail
ff4d91a
repaired the order of instantiation when there are existential quanti…
cac8777
giving up for now refinement approach for the index set, which was no…
b81708e
changing the way string constraints are represented
1624e6e
changing the way string constraints are represented
3f1c02b
changed the way string constraints are represented
04ad43d
structured the code for string refinement in several files
95a4d9e
Completed the algorithm for contains function
1eea52d
Test for the substring function
23426ce
corrected the prefix_of function
4dc1edd
some missing tests
4f878c0
removed the copy declarations which we don't really know how to do fo…
86abfae
Compatibility with java strings
37a3b75
Compatibility with java strings, and a couple of examples of java pro…
b254c25
Corrected type checkm for string equality in Java programs
ea93657
Corrected type checkm for string equality in Java programs
f04df39
Pass preprocessing of java string literals
7526764
improved pass processing for string literals inside arguments of func…
fab0bc6
pass processing of new String
7cf5e6d
PASS preprocessing for indexOf and lastIndexOf
cddbb6c
removed unecessary debugging information
19f5172
Substring method and more tests
9635737
corrected a confusion between c strings and java strings in the case …
4061517
regression test for java endsWith method
32d997e
added java contains string method
d4cee59
cleaning the code by removing some debugging information that were us…
f9c45b3
basic support for StringBuilder
f100d55
support for StringBuilder init without argument
33ded2d
test for StringBuilder
8e212b2
support for StringBuilder.length
9f53d15
init from String and void for String and StringBuilder
27a4a7d
tests for StringBuilder.length
6661386
substring with only one argument (we should add tests for this also)
3751029
conversion from integers to strings
2bc890d
conversion from integers to strings in java
0081e63
parsing of integer in strings
45f4b77
parsing of integer in strings
24cf61b
parsing of integer in strings for java
1e91533
better handling of StringBuilder.append to allow chained append calls
2c4395e
of int for negative numbers
a874b87
conversion between string and int for negative numbers
b56fcdc
corrected a mistake in the code for string refinement of if expressions
99add90
easychair example from TACAS09 (Path feasability analysis for string-…
26be0a4
Separating the classes for the refined string type and string express…
20cd623
Separating the classes for the refined string type and string express…
39e4ccc
clening the code of string refinement of useless functions
fef67d7
incremental string solver for better performances
2236603
incremental string solver
baebf8f
a couple of additional string methods, not tested yet
0ff5946
corrected string builders
1249657
corrected trim function and test
4066ea2
corrected case functions and test
7e49aa1
corrected case functions and test
a7e6c4c
changed the name of the CPROVER strcat functions to avoid confusion b…
9a0f4af
corrected append int and test for empty string
dab12b2
made the string of bool conversion precise
aff92df
added the set length method for string builders
ff6b640
added delete and deleteCharAt. Also improved the index simplification…
74a7d6b
tests for delete and deleteCharAt
94afd07
tests for delete and deleteCharAt
3da7602
tests for delete and deleteCharAt
185eb92
added startsWith(char,fromIndex)
731623d
added indexOf and lastIndexOf with fromIndex argument
8177899
tests for indexOf and lastIndexOf with fromIndex argument
2ac64a2
adding startsWith with toffset argument
c1691c3
adding String.replace(CC)
7d1d5f9
tests for setLength and toCharArray
ed20626
adding String.valueOf for several classes
827bda9
adding String.valueOf char
7755cde
adding String.setCharAt
592a8f2
adding String.subSequence
c6c0f69
adding StringBuilder.insert and tests
4f7fc09
unicode string litterals and codePointAt
acbc764
codePointBefore and Count
3731dd8
adding appendCodePoint
57b3d8d
adding String.compareTo
f6bc09c
adding String.hashCode
98d0687
adding Integer.toHexString
d3a39a1
adding Integer.toHexString
0fadc77
corrected an implementation problem with the initialisation of the in…
0fc6d29
partial specification for floats
3c5b277
overapproximation of indexOf for strings as arguments
9df15f3
overapproximation of lastIndexOf for strings as arguments
ad4ec55
corrected tests for IndexOf
c814f13
simplification of the code for string functions identifiers
547f384
simplification of the code for string functions identifiers
0202011
simplification of the code for string functions identifiers and corec…
fa589ef
merge main branch with string solver
1bfc264
removing useless z3 string tests
7ea360c
removed changes from the string solver branch that where unecessary
08d8b7a
removed changes from the string solver branch that where unecessary
f64c7ad
returning an error when the same variable is counted several time in …
f3e40fd
skipping delete test, for which our solver runs into the problem of h…
e474609
skipping a couple of tests for which we have the problem of a variabl…
e5e3dfb
skipping a couple of tests for which we have the problem of a variabl…
fd2898c
skipping a couple of tests for which we have the problem of a variabl…
fc4fadb
some experiment with the format function, not conclusive so far
404760d
restructuration using a constraint generator
36c3e60
restructuration using a constraint generator
9c7ee9b
restructuration using a constraint generator class
fa6eece
restructuration using a constraint generator class
103628f
corected problems after restructuration
b27b90d
repaired some type problems with methods of the code_point kind and c…
58d62ec
repaired an index problem with trim (case where length gets close to …
eeea178
repaired some type problems with integers
d8b2bfe
Merge branch 'string-solver-restructuration' into sat-strings
14e21c0
starting to use map for pass preprocessing
ab6ceee
starting to use map for pass preprocessing
219a603
starting to use map for pass preprocessing
659427d
using maps for pass preprocessing
97c2323
introducing a variable for temporary pointers
5f2cc79
pass preprocessing for functions returning pointers
51f7d84
pass preprocessing for toCharArray function, not complete but a simpl…
777be9e
pass preprocessing for toCharArray function, corrected type problems …
497e41d
corrected a mistake in the pass preprocessing, which was puting argum…
b6d7750
corrected the type problems for data access in toCharArray
fd6ecb6
regression test for toCharArray
dca43ef
regression test for toCharArray
e2904ba
corrected a problem with StringBuilder in goto programs
9fed105
trying to add ofCharArray function
25351e7
changing from malloc to new[] for the char array of string
18d0af2
Using new version of utf8 to utf16
4b1eed8
Using a new[] instead for the data part of array in toCharArray
e475213
simplification of some methods in PASS preprocessing
dec2cbd
correcting the constraint generation from the of_char_array function
4114064
tests for the of_char_array function
f951abb
string initialisation from char array with offset and count arguments
46fcfb4
string.valueOf for char arrays
abf01a9
corrected the goto program for String.valueOf for char arrays
32824e2
tests for String.valueOf
c2c33bf
setting String.copyValueOf to be the same than valueOf
88fcf74
adding the StringBuilder.insert(I[C) function
556de11
adding String.format to the goto program
51d0bc9
adding String.format to the goto program
24bbc4c
clearing a bit the make_to_char_array_function function in pass prepr…
894d502
cleaning pass preprocess functions of useless arguments
aaf2b89
cleaning the code from codes for functions that are not yet supported
3764761
cleaning the code from format functions which are not yet working
0aefe60
removing tests which are in the wrong directory
0c60215
unimportant spacing changes
e35d93a
small cleaning
romainbrenguier f36b5e2
Adapting regression test to the actual output of cbmc
romainbrenguier bb7ae0e
Changes to the push request as suggested by Michael
4119d1c
setting pass option necessary to select the right solver
3513290
Adapting regression test to CBMC ouput
romainbrenguier 176b016
Merge branch 'string-solver-experiments' of github.com:romainbrenguie…
romainbrenguier b09b7a4
Merge remote-tracking branch 'origin/string-solver' into string-solve…
romainbrenguier fcde5b5
Merge remote-tracking branch 'diffblue/master' into string-solver-exp…
romainbrenguier 0c5b1c8
Deleted trailing whitespaces
romainbrenguier 54b6947
Renaming make_of_char_array... functions to make_char_array...
romainbrenguier ab4c970
Catching java.lang.String in string refinement
romainbrenguier f87e148
Renaming STRING_SOLVER CHAR_WIDTH symbols
romainbrenguier 3921568
using from_integer instead of calls to integer2binary
romainbrenguier ed0f02c
Renamed forall and exists methods to with_forall and with_exists
romainbrenguier 880812d
Renamed not_contains method to create_not_contains
romainbrenguier 0f6409c
Changing the structure of string_constraintt
romainbrenguier 1035bd2
Removed previously commented code
romainbrenguier b049bc9
Using from_integer for constant integer
romainbrenguier 3c1daf0
Function to detect and set the language for string refinement
romainbrenguier 91ebe61
Renaming functions of string constraint generator
romainbrenguier 4c5d352
Using from_integer function from arith_tools.h
romainbrenguier 9efef8f
Removing duplicate of has_prefix
romainbrenguier c81641a
Defining ids for string function in util/irep
romainbrenguier 31b20a5
Replaced --pass option by --refine-string
romainbrenguier 16e58db
Moved the pass* files to string_refine* and renamed classes
romainbrenguier d39d014
Using from_expr from langapi/language_util.h
romainbrenguier 6b73f41
Use arith-tools.h functions to convert expressions to integer
romainbrenguier 2ab3e49
Made integer_of_expr to correctly deal with negative numbers
romainbrenguier 95d089d
Setting the default of integer_of_expr to 0
romainbrenguier 2e7f98a
Cleaner version of extract_java_string
romainbrenguier 582547d
Removed changes to remove_returns used for debuging
romainbrenguier d6d4627
Following coding guidelines in string preprocessing
romainbrenguier ffdef62
Adding more comments in refined_string_type and string_constraint
romainbrenguier 2cd5def
Removed unecessary use of a variable length array
romainbrenguier File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| CORE | ||
| test_char_array.class | ||
| --pass | ||
| ^EXIT=10$ | ||
| ^SIGNAL=0$ | ||
| ^\[assertion.1\] assertion at file test_char_array.java line 11: SUCCESS$ | ||
| ^\[assertion.2\] assertion at file test_char_array.java line 12: SUCCESS$ | ||
| ^\[assertion.3\] assertion at file test_char_array.java line 13: FAILURE$ | ||
| -- |
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| public class test_char_array { | ||
|
|
||
| public static void main(String[] argv) | ||
| { | ||
| String s = "abc"; | ||
| char [] str = s.toCharArray(); | ||
| int[] test = new int[312]; | ||
| char c = str[2]; | ||
| String t = argv[0]; | ||
| char d = t.charAt(0); | ||
| assert(str.length == 3); | ||
| assert(c == 'c'); | ||
| assert(c == d || d < 'a' || d > 'z' ); | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| CORE | ||
| test_init.class | ||
| --pass | ||
| ^EXIT=10$ | ||
| ^SIGNAL=0$ | ||
| ^\[assertion.1\] assertion at file test_init.java line 16: SUCCESS$ | ||
| ^\[assertion.2\] assertion at file test_init.java line 17: SUCCESS$ | ||
| ^\[assertion.3\] assertion at file test_init.java line 18: SUCCESS$ | ||
| ^\[assertion.4\] assertion at file test_init.java line 20: SUCCESS$ | ||
| ^\[assertion.5\] assertion at file test_init.java line 21: FAILURE$ | ||
| -- |
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| public class test_init { | ||
|
|
||
| public static void main(String[] argv) | ||
| { | ||
| char [] str = new char[10]; | ||
| str[0] = 'H'; | ||
| str[1] = 'e'; | ||
| str[2] = 'l'; | ||
| str[3] = 'l'; | ||
| str[4] = 'o'; | ||
| String s = new String(str); | ||
| String t = new String(str,1,2); | ||
|
|
||
| System.out.println(s); | ||
| System.out.println(s.length()); | ||
| assert(s.startsWith("Hello")); | ||
| assert(s.length() == 10); | ||
| assert(t.equals("el")); | ||
| String u = String.valueOf(str,3,2); | ||
| assert(u.equals("lo")); | ||
| assert(s.equals("Hello") || !t.equals("el") || !u.equals("lo")); | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| CORE | ||
| test_insert.class | ||
| --pass | ||
| ^EXIT=10$ | ||
| ^SIGNAL=0$ | ||
| ^\[assertion.1\] assertion at file test_insert.java line 17: SUCCESS$ | ||
| ^\[assertion.2\] assertion at file test_insert.java line 18: FAILURE$ | ||
| -- |
Binary file not shown.
20 changes: 20 additions & 0 deletions
20
regression/strings/java_string_builder_insert/test_insert.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| public class test_insert { | ||
|
|
||
| public static void main(String[] argv) | ||
| { | ||
| char [] str = new char[5]; | ||
| str[0] = 'H'; | ||
| str[1] = 'e'; | ||
| str[2] = 'l'; | ||
| str[3] = 'l'; | ||
| str[4] = 'o'; | ||
|
|
||
|
|
||
| StringBuilder sb = new StringBuilder(" world"); | ||
| sb.insert(0,str); | ||
| String s = sb.toString(); | ||
| System.out.println(s); | ||
| assert(s.equals("Hello world")); | ||
| assert(!s.equals("Hello world")); | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -22,6 +22,7 @@ Author: Daniel Kroening, [email protected] | |
| #include <ansi-c/c_preprocess.h> | ||
|
|
||
| #include <goto-programs/goto_convert_functions.h> | ||
| #include <goto-programs/pass_preprocess.h> | ||
| #include <goto-programs/remove_function_pointers.h> | ||
| #include <goto-programs/remove_virtual_functions.h> | ||
| #include <goto-programs/remove_returns.h> | ||
|
|
@@ -339,6 +340,11 @@ void cbmc_parse_optionst::get_command_line_options(optionst &options) | |
| options.set_option("refine-arithmetic", true); | ||
| } | ||
|
|
||
| if(cmdline.isset("pass")) | ||
| { | ||
| options.set_option("pass", true); | ||
| } | ||
|
|
||
| if(cmdline.isset("max-node-refinement")) | ||
| options.set_option("max-node-refinement", cmdline.get_value("max-node-refinement")); | ||
|
|
||
|
|
@@ -913,6 +919,13 @@ bool cbmc_parse_optionst::process_goto_program( | |
| status() << "Partial Inlining" << eom; | ||
| goto_partial_inline(goto_functions, ns, ui_message_handler); | ||
|
|
||
|
|
||
| if(cmdline.isset("pass")) | ||
| { | ||
| status() << "PASS Preprocessing " << eom; | ||
| pass_preprocesst(symbol_table, goto_functions, ui_message_handler); | ||
| } | ||
|
|
||
| // remove returns, gcc vectors, complex | ||
| remove_returns(symbol_table, goto_functions); | ||
| remove_vector(symbol_table, goto_functions); | ||
|
|
@@ -1188,6 +1201,7 @@ void cbmc_parse_optionst::help() | |
| " --yices use Yices\n" | ||
| " --z3 use Z3\n" | ||
| " --refine use refinement procedure (experimental)\n" | ||
| " --pass use parameterized array for string solving (experimental)\n" | ||
| " --outfile filename output formula to given file\n" | ||
| " --arrays-uf-never never turn arrays into uninterpreted functions\n" | ||
| " --arrays-uf-always always turn arrays into uninterpreted functions\n" | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -14,6 +14,7 @@ Author: Daniel Kroening, [email protected] | |
|
|
||
| #include <solvers/sat/satcheck.h> | ||
| #include <solvers/refinement/bv_refinement.h> | ||
| #include <solvers/refinement/string_refinement.h> | ||
| #include <solvers/smt1/smt1_dec.h> | ||
| #include <solvers/smt2/smt2_dec.h> | ||
| #include <solvers/cvc/cvc_dec.h> | ||
|
|
@@ -324,6 +325,29 @@ cbmc_solverst::solvert* cbmc_solverst::get_bv_refinement() | |
|
|
||
| /*******************************************************************\ | ||
|
|
||
| Function: cbmc_solverst::get_string_refinement | ||
|
|
||
| Inputs: | ||
|
|
||
| Outputs: | ||
|
|
||
| Purpose: | ||
|
|
||
| \*******************************************************************/ | ||
|
|
||
| cbmc_solverst::solvert* cbmc_solverst::get_string_refinement() | ||
| { | ||
| propt *prop; | ||
| prop=new satcheck_no_simplifiert(); | ||
| prop->set_message_handler(get_message_handler()); | ||
|
|
||
| string_refinementt *string_refinement = new string_refinementt(ns, *prop); | ||
| string_refinement->set_ui(ui); | ||
| return new cbmc_solver_with_propt(string_refinement, prop); | ||
| } | ||
|
|
||
| /*******************************************************************\ | ||
|
|
||
| Function: cbmc_solverst::get_smt1 | ||
|
|
||
| Inputs: | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please replace by --refine-string; the name "pass" isn't useful for anybody.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Replaced it 31b20a5