summaryrefslogtreecommitdiff
path: root/admin
diff options
context:
space:
mode:
authorDavid Engster <dengste@eml.cc>2013-12-12 22:33:06 +0100
committerDavid Engster <dengste@eml.cc>2013-12-12 22:33:06 +0100
commitb0fe992f3657cf3c852c00d662783354fdab343d (patch)
treeab41cfa8f414e0912e61b2d6f01f728324bf8b5d /admin
parentf4fe8fdd37f5ddb7aff322e2ff716b16ecb10c32 (diff)
downloademacs-b0fe992f3657cf3c852c00d662783354fdab343d.tar.gz
Merge with CEDET upstream.
* admin/grammars/c.by (expr-binop): Add MOD. (variablearg): Add 'opt-assign'. (variablearg, varnamelist): Add default values so that it can be later expanded into the tag. (opt-stuff-after-symbol): Rename to 'brackets-after-symbol' and remove empty match. (multi-stage-dereference): Adapt to above rename. (unaryexpression): Use 'symbol' instead of 'namespace-symbol', since the latter also leads to an empty match at the end which would make this too greedy. (variablearg-opt-name): Support parsing of function pointers inside an argument list. * semantic/analyze.el (semantic-analyze-find-tag-sequence-default): Always add scope to the local miniscope for each type. Otherwise, structure tags are not analyzed correctly. Also, always search the extended miniscope even when not dealing with types. * semantic/ctxt.el (semantic-get-local-variables-default): Also try to parse local variables for buffers which are currently marked as unparseable. Otherwise, it is often impossible to complete local variables. * semantic/scope.el (semantic-analyze-scoped-types-default): If we cannot find a type in the typecache, also look into the the types we already found. This is necessary since in C++, a 'using namespace' can be dependend on a previous one. (semantic-completable-tags-from-type): When creating the list of completable types, pull in types which are referenced through 'using' statements, and also preserve their filenames. * semanitc/bovine/c.el (semantic/analyze/refs): Require. (semantic-analyze-tag-references): New override. Mainly copied from the default implementation, but if nothing could be found (or just the tag itself), drop all namespaces from the scope and search again. This is necessary for implementations which are defined outside of the namespace and only pull those in through 'using' statements. (semantic-ctxt-scoped-types): Go through all tags around point and search them for using statements. In the case for using statements outside of function scope, append them in the correct order instead of using 'cons'. This is important since using statements may depend on previous ones. (semantic-expand-c-tag-namelist): Do not try to parse struct definitions as default values. The grammar parser seems to return the point positions slightly differently (as a cons instead of a list). Also, set parent for typedefs to 'nil'. It does not really make sense to set a parent class for typedefs, and it can also lead to endless loops when calculating scope. (semantic-c-reconstitute-token): Change handling of function pointers; instead of seeing them as variables, handle them as functions with a 'function-pointer' attribute. Also, correctly deal with function pointers as function arguments. (semantic-c-reconstitute-function-arglist): New function to parse function pointers inside an argument list. (semantic-format-tag-name): Use 'function-pointer' attribute instead of the old 'functionpointer-flag'. (semantic-cpp-lexer): Use new `semantic-lex-spp-paren-or-list'. * semantic/bovine/gcc.el (semantic-gcc-setup): Add 'features.h' to the list of files whose preprocessor symbols are included. This pulls in things like __USE_POSIX and similar. * semantic/format.el (semantic-format-tag-prototype-default): Display default values if available. * semantic/analyze/refs.el (semantic-analyze-refs-impl) (semantic-analyze-refs-proto): Add 'default-value' as ignorable in call to `semantic-tag-similar-p'. * semantic/db-mode.el (semanticdb-semantic-init-hook-fcn): Always set buffer for `semanticdb-current-table'. * semantic/db.el (semanticdb-table::semanticdb-refresh-table): The previous change turned up a bug in this method. Since the current table now correctly has a buffer set, the first clause in the `cond' would be taken, but there was a `save-excursion' missing. * semantic/lex-spp.el (semantic-c-end-of-macro): Declare. (semantic-lex-spp-token-macro-to-macro-stream): Deal with macros which open/close a scope. For this, leave an overlay if we encounter a single open paren and return a semantic-list in the lexer. When this list gets expanded, retrieve the old position from the overlay. See the comments in the function for further details. (semantic-lex-spp-find-closing-macro): New function to find the next macro which closes scope (i.e., has a closing paren). (semantic-lex-spp-replace-or-symbol-or-keyword): Go to end of closing macro if necessary. (semantic-lex-spp-paren-or-list): New lexer to specially deal with parens in macro definitions. * semantic/decorate/mode.el (semantic-decoration-mode): Do not decorate available tags immediately but in an idle timer, since EDE will usually not be activated yet, which will make it impossible to find project includes. * semantic/decorate/include.el (semantic-decoration-on-includes-highlight-default): Remove 'unloaded' from throttle when decorating includes, otherwise all would be loaded. Rename 'table' to 'currenttable' to make things clearer. * ede/linux.el (cl): Require during compile. * ede/linux.el (project-linux-build-directory-default) (project-linux-architecture-default): Add customizable variables. (ede-linux-project): Add additional slots to track Linux-specific information (out-of-tree build directory and selected architecture). (ede-linux--get-build-directory, ede-linux--get-archs) (ede-linux--detect-architecture, ede-linux--get-architecture) (ede-linux--include-path): Added function to detect Linux-specific information. (ede-linux-load): Set new Linux-specific information when creating a project. (ede-expand-filename-impl): Use new and more accurate include information. * semantic/scope.el (semantic-calculate-scope): Return a clone of the scopecache, so that everyone is working with its own (shallow) copy. Otherwise, if one caller is resetting the scope, it would be reset for all others working with the scope cache as well.
Diffstat (limited to 'admin')
-rw-r--r--admin/ChangeLog15
-rw-r--r--admin/grammars/c.by23
2 files changed, 27 insertions, 11 deletions
diff --git a/admin/ChangeLog b/admin/ChangeLog
index 22824995dfc..54da0edf23f 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,18 @@
+2013-12-12 David Engster <deng@randomsample.de>
+
+ * grammars/c.by (expr-binop): Add MOD.
+ (variablearg): Add 'opt-assign'.
+ (variablearg, varnamelist): Add default values so that it can be
+ later expanded into the tag.
+ (opt-stuff-after-symbol): Rename to 'brackets-after-symbol' and
+ remove empty match.
+ (multi-stage-dereference): Adapt to above rename.
+ (unaryexpression): Use 'symbol' instead of 'namespace-symbol',
+ since the latter also leads to an empty match at the end which
+ would make this too greedy.
+ (variablearg-opt-name): Support parsing of function pointers
+ inside an argument list.
+
2013-12-11 Paul Eggert <eggert@cs.ucla.edu>
Remove the option of using libcrypto.
diff --git a/admin/grammars/c.by b/admin/grammars/c.by
index 55ec0fbaf01..7aafe7b90f3 100644
--- a/admin/grammars/c.by
+++ b/admin/grammars/c.by
@@ -901,8 +901,8 @@ varname
;; I should store more in this def, but leave it simple for now.
;; Klaus Berndl: const and volatile can be written after the type!
variablearg
- : declmods typeformbase cv-declmods opt-ref variablearg-opt-name
- ( VARIABLE-TAG (list $5) $2 nil
+ : declmods typeformbase cv-declmods opt-ref variablearg-opt-name opt-assign
+ ( VARIABLE-TAG (list (append $5 ,$6)) $2 nil
:constant-flag (if (member "const" (append $1 $3)) t nil)
:typemodifiers (delete "const" (append $1 $3))
:reference (car ,$4)
@@ -912,6 +912,8 @@ variablearg
variablearg-opt-name
: varname
( ,$1 )
+ | semantic-list arg-list
+ ( (car ( EXPAND $1 function-pointer )) $2)
;; Klaus Berndl: This allows variableargs without a arg-name being
;; parsed correct even if there several pointers (*)
| opt-stars
@@ -926,9 +928,9 @@ varname-opt-initializer
varnamelist
: opt-ref varname varname-opt-initializer COMA varnamelist
- ( ,(cons $2 $5) )
+ ( ,(cons (append $2 $3) $5) )
| opt-ref varname varname-opt-initializer
- ( $2 )
+ ( (append $2 $3) )
;
;; Klaus Berndl: Is necessary to parse stuff like
@@ -1152,16 +1154,15 @@ type-cast-list
: open-paren typeformbase close-paren
;
-opt-stuff-after-symbol
+brackets-after-symbol
: PAREN_BLCK
| BRACK_BLCK
- | ;; EMPTY
;
multi-stage-dereference
- : namespace-symbol opt-stuff-after-symbol PERIOD multi-stage-dereference ;; method call
- | namespace-symbol opt-stuff-after-symbol MINUS GREATER multi-stage-dereference ;;method call
- | namespace-symbol opt-stuff-after-symbol
+ : namespace-symbol brackets-after-symbol PERIOD multi-stage-dereference ;; method call
+ | namespace-symbol brackets-after-symbol MINUS GREATER multi-stage-dereference ;;method call
+ | namespace-symbol brackets-after-symbol
;
string-seq
@@ -1187,6 +1188,7 @@ expr-binop
| AMPERSAND
| OR OR
| OR
+ | MOD
;; There are more.
;
@@ -1204,8 +1206,7 @@ unaryexpression
| multi-stage-dereference
| NEW multi-stage-dereference
| NEW builtintype-types semantic-list
- ;; Klaus Berndl: symbol -> namespace-symbol!
- | namespace-symbol
+ | symbol
;; Klaus Berndl: C/C++ allows sequences of strings which are
;; concatenated by the precompiler to one string
| string-seq