redsnow 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -0
- data/ext/snowcrash/bin/snowcrash +0 -0
- data/ext/snowcrash/snowcrash.xcworkspace/contents.xcworkspacedata +10 -0
- data/ext/snowcrash/src/ActionParser.h +35 -33
- data/ext/snowcrash/src/AssetParser.h +17 -17
- data/ext/snowcrash/src/Blueprint.h +101 -66
- data/ext/snowcrash/src/BlueprintParser.h +219 -10
- data/ext/snowcrash/src/BlueprintSourcemap.h +1 -1
- data/ext/snowcrash/src/BlueprintUtility.h +14 -14
- data/ext/snowcrash/src/CBlueprint.cc +29 -10
- data/ext/snowcrash/src/CBlueprint.h +19 -3
- data/ext/snowcrash/src/CBlueprintSourcemap.cc +20 -10
- data/ext/snowcrash/src/CBlueprintSourcemap.h +12 -3
- data/ext/snowcrash/src/CodeBlockUtility.h +25 -25
- data/ext/snowcrash/src/HTTP.cc +3 -0
- data/ext/snowcrash/src/HTTP.h +9 -6
- data/ext/snowcrash/src/HeadersParser.h +34 -14
- data/ext/snowcrash/src/ParameterParser.h +21 -21
- data/ext/snowcrash/src/ParametersParser.h +6 -5
- data/ext/snowcrash/src/PayloadParser.h +174 -129
- data/ext/snowcrash/src/RegexMatch.h +3 -3
- data/ext/snowcrash/src/ResourceGroupParser.h +5 -4
- data/ext/snowcrash/src/ResourceParser.h +30 -26
- data/ext/snowcrash/src/Section.cc +6 -6
- data/ext/snowcrash/src/Section.h +2 -2
- data/ext/snowcrash/src/SectionParser.h +41 -41
- data/ext/snowcrash/src/SectionParserData.h +10 -10
- data/ext/snowcrash/src/SectionProcessor.h +70 -30
- data/ext/snowcrash/src/Serialize.h +3 -3
- data/ext/snowcrash/src/SerializeJSON.cc +124 -96
- data/ext/snowcrash/src/SerializeJSON.h +1 -1
- data/ext/snowcrash/src/SerializeYAML.cc +71 -53
- data/ext/snowcrash/src/SerializeYAML.h +1 -1
- data/ext/snowcrash/src/Signature.cc +2 -2
- data/ext/snowcrash/src/Signature.h +1 -1
- data/ext/snowcrash/src/SourceAnnotation.h +23 -23
- data/ext/snowcrash/src/StringUtility.h +71 -9
- data/ext/snowcrash/src/SymbolTable.h +17 -17
- data/ext/snowcrash/src/UriTemplateParser.cc +5 -5
- data/ext/snowcrash/src/UriTemplateParser.h +9 -9
- data/ext/snowcrash/src/ValuesParser.h +2 -2
- data/ext/snowcrash/src/Version.h +1 -1
- data/ext/snowcrash/src/csnowcrash.cc +10 -8
- data/ext/snowcrash/src/snowcrash.cc +9 -9
- data/ext/snowcrash/src/snowcrash.h +6 -8
- data/ext/snowcrash/src/snowcrash/snowcrash.cc +14 -14
- data/ext/snowcrash/src/win/RegexMatch.cc +7 -7
- data/ext/snowcrash/tools/gyp/pylib/gyp/__init__.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/common.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/generator/make.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/generator/xcode.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/input.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/xcode_emulation.pyc +0 -0
- data/ext/snowcrash/tools/gyp/pylib/gyp/xcodeproj_file.pyc +0 -0
- data/ext/snowcrash/tools/homebrew/snowcrash.rb +1 -1
- data/lib/redsnow/binding.rb +8 -2
- data/lib/redsnow/blueprint.rb +4 -3
- data/lib/redsnow/sourcemap.rb +6 -4
- data/lib/redsnow/version.rb +1 -1
- metadata +4 -17
@@ -17,13 +17,13 @@ static std::string ReservedCharacters = "#-[]:|>!*&%@`,{}?\'";
|
|
17
17
|
static std::string NormalizeStringValue(const std::string& value, bool& needsQuotation)
|
18
18
|
{
|
19
19
|
std::string normalizedValue = value;
|
20
|
-
|
20
|
+
|
21
21
|
if (normalizedValue.find("\"") != std::string::npos)
|
22
22
|
normalizedValue = EscapeDoubleQuotes(normalizedValue);
|
23
|
-
|
23
|
+
|
24
24
|
if (value.find("\n") != std::string::npos)
|
25
25
|
normalizedValue = EscapeNewlines(normalizedValue);
|
26
|
-
|
26
|
+
|
27
27
|
needsQuotation = (normalizedValue != value);
|
28
28
|
|
29
29
|
if (!needsQuotation) {
|
@@ -33,7 +33,7 @@ static std::string NormalizeStringValue(const std::string& value, bool& needsQuo
|
|
33
33
|
break;
|
34
34
|
}
|
35
35
|
}
|
36
|
-
|
36
|
+
|
37
37
|
return normalizedValue;
|
38
38
|
}
|
39
39
|
|
@@ -43,7 +43,7 @@ static void ArrayItemLeadIn(size_t level, std::ostream &os, bool withTrailingSpa
|
|
43
43
|
{
|
44
44
|
if (level < 1)
|
45
45
|
return;
|
46
|
-
|
46
|
+
|
47
47
|
for (size_t i = 0; i < level - 1; ++i)
|
48
48
|
os << " ";
|
49
49
|
|
@@ -59,17 +59,17 @@ static void serialize(const std::string& key, const std::string& value, size_t l
|
|
59
59
|
{
|
60
60
|
if (key.empty())
|
61
61
|
return;
|
62
|
-
|
62
|
+
|
63
63
|
for (size_t i = 0; i < level; ++i)
|
64
64
|
os << " ";
|
65
|
-
|
65
|
+
|
66
66
|
if (!value.empty()) {
|
67
|
-
|
67
|
+
|
68
68
|
os << key << ": ";
|
69
69
|
|
70
70
|
bool needsQuotation = false;
|
71
71
|
std::string normalizedValue = NormalizeStringValue(value, needsQuotation);
|
72
|
-
|
72
|
+
|
73
73
|
if (implicitQuotation) {
|
74
74
|
// Always use quotation
|
75
75
|
os << "\"" << normalizedValue << "\"";
|
@@ -80,7 +80,7 @@ static void serialize(const std::string& key, const std::string& value, size_t l
|
|
80
80
|
else
|
81
81
|
os << value;
|
82
82
|
}
|
83
|
-
|
83
|
+
|
84
84
|
os << std::endl;
|
85
85
|
}
|
86
86
|
else
|
@@ -160,7 +160,7 @@ static void serializeKeyValueCollection(const Collection<KeyValuePair>::type& co
|
|
160
160
|
static void serialize(const Collection<Metadata>::type& metadata, std::ostream &os)
|
161
161
|
{
|
162
162
|
serialize(SerializeKey::Metadata, std::string(), 0, os);
|
163
|
-
|
163
|
+
|
164
164
|
if (metadata.empty())
|
165
165
|
return;
|
166
166
|
|
@@ -204,28 +204,28 @@ static void serialize(const Parameters& parameters, size_t level, std::ostream &
|
|
204
204
|
|
205
205
|
// Description
|
206
206
|
serialize(SerializeKey::Description, it->description, level + 1, os);
|
207
|
-
|
207
|
+
|
208
208
|
// Type
|
209
209
|
serialize(SerializeKey::Type, it->type, level + 1, os);
|
210
|
-
|
210
|
+
|
211
211
|
// Required
|
212
212
|
serialize(SerializeKey::Required, (it->use == OptionalParameterUse) ? "false" : "true", level + 1, os, false);
|
213
|
-
|
213
|
+
|
214
214
|
// Default
|
215
215
|
serialize(SerializeKey::Default, it->defaultValue, level + 1, os);
|
216
|
-
|
216
|
+
|
217
217
|
// Example
|
218
218
|
serialize(SerializeKey::Example, it->exampleValue, level + 1, os);
|
219
|
-
|
219
|
+
|
220
220
|
// Values
|
221
221
|
serialize(SerializeKey::Values, std::string(), level + 1, os);
|
222
|
-
|
222
|
+
|
223
223
|
for (Collection<Value>::const_iterator val_it = it->values.begin();
|
224
224
|
val_it != it->values.end();
|
225
225
|
++val_it) {
|
226
226
|
|
227
227
|
ArrayItemLeadIn(level + 2, os);
|
228
|
-
|
228
|
+
|
229
229
|
serialize(SerializeKey::Value, *val_it, 0, os);
|
230
230
|
}
|
231
231
|
}
|
@@ -275,13 +275,36 @@ static void serialize(const Collection<SourceMap<Parameter> >::type& parameters,
|
|
275
275
|
}
|
276
276
|
}
|
277
277
|
|
278
|
+
/** Serialize Reference */
|
279
|
+
static void serialize(const Reference& reference, size_t level, std::ostream &os)
|
280
|
+
{
|
281
|
+
if (reference.id.empty()) {
|
282
|
+
return;
|
283
|
+
}
|
284
|
+
|
285
|
+
serialize(SerializeKey::Reference, "", level - 1, os);
|
286
|
+
|
287
|
+
// ID
|
288
|
+
serialize(SerializeKey::Id, reference.id, level, os);
|
289
|
+
}
|
290
|
+
|
291
|
+
/** Serialize Reference source map */
|
292
|
+
static void serialize(const SourceMap<Reference>& reference, size_t level, std::ostream &os)
|
293
|
+
{
|
294
|
+
if (reference.sourceMap.empty()) {
|
295
|
+
return;
|
296
|
+
}
|
297
|
+
|
298
|
+
serialize(SerializeKey::Reference, reference, level - 1, os);
|
299
|
+
}
|
300
|
+
|
278
301
|
/** Serialize Payload */
|
279
302
|
static void serialize(const Payload& payload, size_t level, bool array, std::ostream &os)
|
280
303
|
{
|
281
304
|
for (size_t i = 0; i < level - 1; i++) {
|
282
305
|
os << " ";
|
283
306
|
}
|
284
|
-
|
307
|
+
|
285
308
|
if (array)
|
286
309
|
os << "- ";
|
287
310
|
else
|
@@ -290,25 +313,22 @@ static void serialize(const Payload& payload, size_t level, bool array, std::ost
|
|
290
313
|
// Name
|
291
314
|
serialize(SerializeKey::Name, payload.name, 0, os);
|
292
315
|
|
293
|
-
//
|
294
|
-
|
295
|
-
serialize(SerializeKey::Reference, "", level, os);
|
296
|
-
serialize(SerializeKey::Id, payload.symbol, level + 1, os);
|
297
|
-
}
|
316
|
+
// Reference
|
317
|
+
serialize(payload.reference, level + 1, os);
|
298
318
|
|
299
319
|
// Description
|
300
320
|
serialize(SerializeKey::Description, payload.description, level, os);
|
301
|
-
|
321
|
+
|
302
322
|
// Headers
|
303
323
|
serialize(SerializeKey::Headers, std::string(), level, os);
|
304
324
|
|
305
325
|
if (!payload.headers.empty()) {
|
306
326
|
serialize(payload.headers, level, os);
|
307
327
|
}
|
308
|
-
|
328
|
+
|
309
329
|
// Body
|
310
330
|
serialize(SerializeKey::Body, payload.body, level, os);
|
311
|
-
|
331
|
+
|
312
332
|
// Schema
|
313
333
|
serialize(SerializeKey::Schema, payload.schema, level, os);
|
314
334
|
}
|
@@ -328,10 +348,8 @@ static void serialize(const SourceMap<Payload>& payload, size_t level, bool arra
|
|
328
348
|
// Name
|
329
349
|
serialize(SerializeKey::Name, payload.name, level, os, true);
|
330
350
|
|
331
|
-
//
|
332
|
-
|
333
|
-
serialize(SerializeKey::Reference, payload.symbol, level, os);
|
334
|
-
}
|
351
|
+
// Reference
|
352
|
+
serialize(payload.reference, level + 1, os);
|
335
353
|
|
336
354
|
// Description
|
337
355
|
serialize(SerializeKey::Description, payload.description, level, os);
|
@@ -357,10 +375,10 @@ static void serialize(const TransactionExample& example, std::ostream &os)
|
|
357
375
|
|
358
376
|
// Name
|
359
377
|
serialize(SerializeKey::Name, example.name, 0, os);
|
360
|
-
|
378
|
+
|
361
379
|
// Description
|
362
380
|
serialize(SerializeKey::Description, example.description, 4, os);
|
363
|
-
|
381
|
+
|
364
382
|
// Requests
|
365
383
|
serialize(SerializeKey::Requests, std::string(), 4, os);
|
366
384
|
|
@@ -372,7 +390,7 @@ static void serialize(const TransactionExample& example, std::ostream &os)
|
|
372
390
|
serialize(*it, 5, true, os);
|
373
391
|
}
|
374
392
|
}
|
375
|
-
|
393
|
+
|
376
394
|
// Responses
|
377
395
|
serialize(SerializeKey::Responses, std::string(), 4, os);
|
378
396
|
|
@@ -426,22 +444,22 @@ static void serialize(const SourceMap<TransactionExample>& example, std::ostream
|
|
426
444
|
static void serialize(const Action& action, std::ostream &os)
|
427
445
|
{
|
428
446
|
os << " - "; // indent 3
|
429
|
-
|
447
|
+
|
430
448
|
// Name
|
431
449
|
serialize(SerializeKey::Name, action.name, 0, os);
|
432
|
-
|
450
|
+
|
433
451
|
// Description
|
434
452
|
serialize(SerializeKey::Description, action.description, 3, os);
|
435
453
|
|
436
454
|
// HTTP method
|
437
455
|
serialize(SerializeKey::Method, action.method, 3, os);
|
438
|
-
|
456
|
+
|
439
457
|
// Parameters
|
440
458
|
serialize(SerializeKey::Parameters, std::string(), 3, os);
|
441
459
|
|
442
460
|
if (!action.parameters.empty())
|
443
461
|
serialize(action.parameters, 3, os);
|
444
|
-
|
462
|
+
|
445
463
|
// Examples
|
446
464
|
serialize(SerializeKey::Examples, std::string(), 3, os);
|
447
465
|
|
@@ -492,34 +510,34 @@ static void serialize(const SourceMap<Action>& action, std::ostream &os)
|
|
492
510
|
static void serialize(const Resource& resource, std::ostream &os)
|
493
511
|
{
|
494
512
|
os << " - "; // indent 2
|
495
|
-
|
513
|
+
|
496
514
|
// Name
|
497
515
|
serialize(SerializeKey::Name, resource.name, 0, os);
|
498
|
-
|
516
|
+
|
499
517
|
// Description
|
500
518
|
serialize(SerializeKey::Description, resource.description, 2, os);
|
501
|
-
|
519
|
+
|
502
520
|
// URI Template
|
503
521
|
serialize(SerializeKey::URITemplate, resource.uriTemplate, 2, os);
|
504
|
-
|
522
|
+
|
505
523
|
// Model
|
506
524
|
serialize(SerializeKey::Model, std::string(), 2, os);
|
507
525
|
|
508
526
|
if (!resource.model.name.empty())
|
509
527
|
serialize(resource.model, 3, false, os);
|
510
|
-
|
528
|
+
|
511
529
|
// Parameters
|
512
530
|
serialize(SerializeKey::Parameters, std::string(), 2, os);
|
513
531
|
|
514
532
|
if (!resource.parameters.empty())
|
515
533
|
serialize(resource.parameters, 2, os);
|
516
|
-
|
534
|
+
|
517
535
|
// Actions
|
518
536
|
serialize(SerializeKey::Actions, std::string(), 2, os);
|
519
|
-
|
537
|
+
|
520
538
|
if (resource.actions.empty())
|
521
539
|
return;
|
522
|
-
|
540
|
+
|
523
541
|
for (Collection<Action>::const_iterator it = resource.actions.begin();
|
524
542
|
it != resource.actions.end();
|
525
543
|
++it) {
|
@@ -575,13 +593,13 @@ static void serialize(const ResourceGroup& group, std::ostream &os)
|
|
575
593
|
|
576
594
|
// Name
|
577
595
|
serialize(SerializeKey::Name, group.name, 0, os);
|
578
|
-
|
596
|
+
|
579
597
|
// Description
|
580
598
|
serialize(SerializeKey::Description, group.description, 1, os);
|
581
599
|
|
582
600
|
// Resources
|
583
601
|
serialize(SerializeKey::Resources, std::string(), 1, os);
|
584
|
-
|
602
|
+
|
585
603
|
if (group.resources.empty())
|
586
604
|
return;
|
587
605
|
|
@@ -623,16 +641,16 @@ static void serialize(const Blueprint& blueprint, std::ostream &os)
|
|
623
641
|
{
|
624
642
|
// AST Version
|
625
643
|
serialize(SerializeKey::ASTVersion, AST_SERIALIZATION_VERSION, 0, os, false);
|
626
|
-
|
644
|
+
|
627
645
|
// Metadata
|
628
646
|
serialize(blueprint.metadata, os);
|
629
|
-
|
647
|
+
|
630
648
|
// API Name
|
631
649
|
serialize(SerializeKey::Name, blueprint.name, 0, os);
|
632
|
-
|
650
|
+
|
633
651
|
// API Description
|
634
652
|
serialize(SerializeKey::Description, blueprint.description, 0, os);
|
635
|
-
|
653
|
+
|
636
654
|
// Resource Groups
|
637
655
|
serialize(SerializeKey::ResourceGroups, std::string(), 0, os);
|
638
656
|
|
@@ -642,7 +660,7 @@ static void serialize(const Blueprint& blueprint, std::ostream &os)
|
|
642
660
|
for (Collection<ResourceGroup>::type::const_iterator it = blueprint.resourceGroups.begin();
|
643
661
|
it != blueprint.resourceGroups.end();
|
644
662
|
++it) {
|
645
|
-
|
663
|
+
|
646
664
|
serialize(*it, os);
|
647
665
|
}
|
648
666
|
}
|
@@ -38,7 +38,7 @@ SectionType snowcrash::SectionKeywordSignature(const mdp::MarkdownNodeIterator&
|
|
38
38
|
if ((type = SectionProcessor<Parameters>::sectionType(node)) != UndefinedSectionType)
|
39
39
|
return type;
|
40
40
|
|
41
|
-
/*
|
41
|
+
/*
|
42
42
|
* NOTE: Order is important. Resource MUST preceed the Action.
|
43
43
|
*
|
44
44
|
* This is because an HTTP Request Method + URI is recognized as both %ActionSectionType and %ResourceSectionType.
|
@@ -46,7 +46,7 @@ SectionType snowcrash::SectionKeywordSignature(const mdp::MarkdownNodeIterator&
|
|
46
46
|
*/
|
47
47
|
if ((type = SectionProcessor<Resource>::sectionType(node)) != UndefinedSectionType)
|
48
48
|
return type;
|
49
|
-
|
49
|
+
|
50
50
|
if ((type = SectionProcessor<Action>::sectionType(node)) != UndefinedSectionType)
|
51
51
|
return type;
|
52
52
|
|
@@ -14,8 +14,8 @@
|
|
14
14
|
#include "ByteBuffer.h"
|
15
15
|
|
16
16
|
namespace snowcrash {
|
17
|
-
|
18
|
-
|
17
|
+
|
18
|
+
|
19
19
|
/**
|
20
20
|
* \brief A source data annotation.
|
21
21
|
*
|
@@ -23,30 +23,30 @@ namespace snowcrash {
|
|
23
23
|
* annotation code and an optional message.
|
24
24
|
*/
|
25
25
|
struct SourceAnnotation {
|
26
|
-
|
26
|
+
|
27
27
|
/**
|
28
28
|
* \brief Default annotation code representing success.
|
29
29
|
*/
|
30
30
|
static const int OK;
|
31
|
-
|
31
|
+
|
32
32
|
/**
|
33
33
|
* \brief %SourceAnnotation default constructor.
|
34
34
|
*
|
35
35
|
* Creates an empty annotation with the default annotation code.
|
36
36
|
*/
|
37
37
|
SourceAnnotation() : code(OK) {}
|
38
|
-
|
38
|
+
|
39
39
|
/**
|
40
40
|
* \brief %SourceAnnotation copy constructor.
|
41
41
|
* \param rhs An annotation to be copied.
|
42
42
|
*/
|
43
43
|
SourceAnnotation(const SourceAnnotation& rhs) {
|
44
|
-
|
44
|
+
|
45
45
|
this->message = rhs.message;
|
46
46
|
this->code = rhs.code;
|
47
47
|
this->location = rhs.location;
|
48
48
|
}
|
49
|
-
|
49
|
+
|
50
50
|
/**
|
51
51
|
* \brief %SourceAnnotation constructor.
|
52
52
|
* \param message An annotation message.
|
@@ -56,18 +56,18 @@ namespace snowcrash {
|
|
56
56
|
SourceAnnotation(const std::string& message,
|
57
57
|
int code = OK,
|
58
58
|
const mdp::CharactersRangeSet& location = mdp::CharactersRangeSet()) {
|
59
|
-
|
59
|
+
|
60
60
|
this->message = message;
|
61
61
|
this->code = code;
|
62
|
-
|
62
|
+
|
63
63
|
this->location.clear();
|
64
64
|
if (!location.empty())
|
65
65
|
this->location.assign(location.begin(), location.end());
|
66
66
|
}
|
67
|
-
|
67
|
+
|
68
68
|
/** \brief %SourceAnnotation destructor. */
|
69
69
|
~SourceAnnotation() {}
|
70
|
-
|
70
|
+
|
71
71
|
/**
|
72
72
|
* \brief %SourceAnnotation assignment operator
|
73
73
|
* \param rhs An annotation to be assigned to this annotation.
|
@@ -78,22 +78,22 @@ namespace snowcrash {
|
|
78
78
|
this->location = rhs.location;
|
79
79
|
return *this;
|
80
80
|
}
|
81
|
-
|
81
|
+
|
82
82
|
/** The location of this annotation within the source data buffer. */
|
83
83
|
mdp::CharactersRangeSet location;
|
84
|
-
|
84
|
+
|
85
85
|
/** An annotation code. */
|
86
86
|
int code;
|
87
|
-
|
87
|
+
|
88
88
|
/** A annotation message. */
|
89
89
|
std::string message;
|
90
90
|
};
|
91
|
-
|
91
|
+
|
92
92
|
/**
|
93
93
|
* Error source annotation.
|
94
94
|
*/
|
95
95
|
typedef SourceAnnotation Error;
|
96
|
-
|
96
|
+
|
97
97
|
/**
|
98
98
|
* Error codes
|
99
99
|
*/
|
@@ -103,12 +103,12 @@ namespace snowcrash {
|
|
103
103
|
BusinessError = 2,
|
104
104
|
SymbolError = 3
|
105
105
|
};
|
106
|
-
|
106
|
+
|
107
107
|
/**
|
108
108
|
* Warning source annotation.
|
109
109
|
*/
|
110
110
|
typedef SourceAnnotation Warning;
|
111
|
-
|
111
|
+
|
112
112
|
/**
|
113
113
|
* Warning codes
|
114
114
|
*/
|
@@ -127,12 +127,12 @@ namespace snowcrash {
|
|
127
127
|
AmbiguityWarning = 11,
|
128
128
|
URIWarning = 12
|
129
129
|
};
|
130
|
-
|
130
|
+
|
131
131
|
/**
|
132
132
|
* A set of warning source annotations.
|
133
133
|
*/
|
134
134
|
typedef std::vector<Warning> Warnings;
|
135
|
-
|
135
|
+
|
136
136
|
/**
|
137
137
|
* \brief A parsing report Report.
|
138
138
|
*
|
@@ -141,7 +141,7 @@ namespace snowcrash {
|
|
141
141
|
* and a set of warning source annotations.
|
142
142
|
*/
|
143
143
|
struct Report {
|
144
|
-
|
144
|
+
|
145
145
|
/**
|
146
146
|
* \brief Append a report to this one, replacing the error source annotation.
|
147
147
|
*
|
@@ -152,10 +152,10 @@ namespace snowcrash {
|
|
152
152
|
warnings.insert(warnings.end(), rhs.warnings.begin(), rhs.warnings.end());
|
153
153
|
return *this;
|
154
154
|
}
|
155
|
-
|
155
|
+
|
156
156
|
/** Result error source annotation */
|
157
157
|
Error error;
|
158
|
-
|
158
|
+
|
159
159
|
/** Result warning source annotations */
|
160
160
|
Warnings warnings;
|
161
161
|
};
|