summaryrefslogtreecommitdiff
path: root/vendor/modernc.org/cc/v3/parser.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2022-03-07 11:08:26 +0100
committerLibravatar GitHub <noreply@github.com>2022-03-07 11:08:26 +0100
commit07727753b96d209406783e5e539725bcdafebdc7 (patch)
treeb32f11cbc304d633ed0acd8f84b4c11e909bb5f3 /vendor/modernc.org/cc/v3/parser.go
parent[documentation] Creates Docker documentation and docker-compose.yaml (#416) (diff)
downloadgotosocial-07727753b96d209406783e5e539725bcdafebdc7.tar.xz
[feature] Clean up/uncache remote media (#407)
* Add whereNotEmptyAndNotNull * Add GetRemoteOlderThanDays * Add GetRemoteOlderThanDays * Add PruneRemote to Manager interface * Start implementing PruneRemote * add new attachment + status to tests * fix up and test GetRemoteOlderThan * fix bad import * PruneRemote: return number pruned * add Cached column to mediaattachment * update + test pruneRemote * update mediaTest * use Cached column * upstep bun to latest version * embed structs in mediaAttachment * migrate mediaAttachment to new format * don't default cached to true * select only remote media * update db dependencies * step bun back to last working version * update pruneRemote to use Cached field * fix storage path of test attachments * add recache logic to manager * fix trimmed aspect ratio * test prune and recache * return errwithcode * tidy up different paths for emoji vs attachment * fix incorrect thumbnail type being stored * expose TransportController to media processor * implement tee-ing recached content * add thoughts of dog to test fedi attachments * test get remote files * add comment on PruneRemote * add postData cleanup to recache * test thumbnail fetching * add incredible diagram * go mod tidy * buffer pipes for recache streaming * test for client stops reading after 1kb * add media-remote-cache-days to config * add cron package * wrap logrus so it's available to cron * start and stop cron jobs gracefully
Diffstat (limited to 'vendor/modernc.org/cc/v3/parser.go')
-rw-r--r--vendor/modernc.org/cc/v3/parser.go22
1 files changed, 18 insertions, 4 deletions
diff --git a/vendor/modernc.org/cc/v3/parser.go b/vendor/modernc.org/cc/v3/parser.go
index cf021e9f4..d73b2c6b3 100644
--- a/vendor/modernc.org/cc/v3/parser.go
+++ b/vendor/modernc.org/cc/v3/parser.go
@@ -313,6 +313,7 @@ var (
dict.sid("__pragma_stdc"): PRAGMASTDC,
dict.sid("__restrict"): RESTRICT,
dict.sid("__restrict__"): RESTRICT,
+ dict.sid("__signed"): SIGNED,
dict.sid("__signed__"): SIGNED,
dict.sid("__thread"): THREADLOCAL,
dict.sid("__typeof"): TYPEOF,
@@ -2263,7 +2264,7 @@ func (p *parser) functionSpecifier(inline *bool) *FunctionSpecifier {
// declarator:
// pointer_opt direct-declarator attribute-specifier-list_opt
func (p *parser) declarator(declare, isTypedefName bool, ptr *Pointer) *Declarator {
- if ptr == nil && p.rune() == '*' {
+ if ptr == nil && (p.rune() == '*' || p.rune() == '^') {
ptr = p.pointer()
}
r := &Declarator{IsTypedefName: isTypedefName, Pointer: ptr, DirectDeclarator: p.directDeclarator(nil)}
@@ -2488,9 +2489,21 @@ func (p *parser) directDeclarator(d *DirectDeclarator) (r *DirectDeclarator) {
// pointer:
// * type-qualifier-list_opt
// * type-qualifier-list_opt pointer
+// ^ type-qualifier-list_opt
func (p *parser) pointer() (r *Pointer) {
+ if p.rune() == '^' {
+ t := p.shift()
+ var list *TypeQualifiers
+ switch p.rune() {
+ case ATTRIBUTE, CONST, RESTRICT, VOLATILE, ATOMIC:
+ list = p.typeQualifierList()
+ }
+
+ return &Pointer{Case: PointerBlock, Token: t, TypeQualifiers: list}
+ }
+
if p.rune() != '*' {
- p.err("expected *")
+ p.err("expected * or ^")
return nil
}
@@ -2608,7 +2621,8 @@ func (p *parser) parameterDeclaration() *ParameterDeclaration {
func (p *parser) declaratorOrAbstractDeclarator(isTypedefName bool) (r Node) {
var ptr *Pointer
- if p.rune() == '*' {
+ switch p.rune() {
+ case '*', '^':
ptr = p.pointer()
}
switch p.rune() {
@@ -2766,7 +2780,7 @@ func (p *parser) typeName() *TypeName {
// pointer
// pointer_opt direct-abstract-declarator
func (p *parser) abstractDeclarator(ptr *Pointer) *AbstractDeclarator {
- if ptr == nil && p.rune() == '*' {
+ if ptr == nil && (p.rune() == '*' || p.rune() == '^') {
ptr = p.pointer()
}
switch p.rune() {